Drupal cache AJAX / Fetch hívás esetén

Default book

Ha a javascript fetch utasítást használjuk előfordul, hogy a Drupal cache-ből adja vissza az adatot.

Ha a szerver oldalon változik a fájl, akkor meg kell tiltani a böngészőnek, hogy a szerver a cache-t használja. Az alábbi példában a cache: no-cache fejlécet küldjük át a szervernek! ez egy progress bar kód, amely a szerver oldalon zajló folyama %-os értékét jelzi ki.

smpl.progress = function(on, timer) {
    $(".ajax-progress-fullscreen").remove();
    
    if(typeof on !== 'undefined' && on)
    {
      if(typeof timer !== undefined && timer){
        smpl.timer = "0%";
        $( "#smpl_progress" ).text(smpl.timer);
        $( "#smpl_progress" ).show();
      }
      
      $('body').after( Drupal.theme.ajaxProgressIndicatorFullscreen() );
      $('body').css( "cursor","progress" );

      if( smpl.timer === "0%" && typeof timer !== undefined && timer ){
        smpl.timer = setInterval( function(){ 
          fetch("localhost/fw3/sites/default/files/smplphotoalbum/jelzo.txt", {cache: "no-cache"})
            .then( response => response.text() )
            .then( data => {                
              $("#smpl_progress").text( data ); 
            })
            .catch( error => console.error("error:", error) ) ;
        }, 2000 );
      }
    }else{
      $('body').css("cursor","default");
      $("#smpl_progress").hide();
      clearInterval(smpl.timer);
      smpl.timer = "0%";
    }
  };

Ez a példa a szerver oldalról egy text fájl tartalmát olvassa be 2 másodpercenként. Ha cache-ből szolgálja ki a szerver, akkor mindig ugyanaz a tartalom jön át, ezért a progress bar nem működik.