2013-09-07 12 views
7
jQuery("#divProviders img").click(function (e) { 
    //alert(jQuery(this)[0].nameProp); 
    document.getElementById("TxtProvPic").value = jQuery(this)[0].getAttribute("src"); //jQuery(this)[0].nameProp; 


    $.ajax({ 
     type: "GET", 
     url: "Services/TeleCom/EVoucher.aspx", 
     data: "ExtFlag=GetProducts&AjaxFalg=SpecialRequest&prov=" + jQuery(this)[0].id.replace("img_", "") + "&pcat=" + document.getElementById("Txhhc").value, 
     beforeSend: function() { 
      document.getElementById("DivProducts").innerHTML = ""; 
      document.getElementById("DivLoad").innerHTML = "<img alt='' style='margin-left:300px;margin-top:80px;position:absolute;' src='App_Themes/VivaTheme/images/bigloading2.gif'/>"; 
     }, 
     cache: true, 
     success: function (data) { 

      var StrResponse; 
      StrResponse = data.split('@@@'); 

      EvoucherFillProductsRes(StrResponse[0]); 

     }, 
     error: function (xhr) { 
      alert("responseText: " + xhr.responseText); 
     } 
    }); 

    function EvoucherFillProductsRes(res) { 
     var slices = res.split("*******"); 
     document.getElementById("DivProducts").innerHTML = slices[0]; 
     document.getElementById("DivMenu").innerHTML = slices[1]; 
     document.getElementById("DivLoad").innerHTML = ""; 
     jQuery("#BrowsableTwo").scrollable({ 
      prev: 'a.prodprev', 
      next: 'a.prodnext' 
     }).navigator(); 

    } 

Ho questa funzione quando scatto per il collegamento di un contenuto è impostato su un innerHTML div ho impostato l'attributo cache:true nel jquery ajax ma se clicco di nuovo per il collegamento senza cache è visualizzato la funzione Ajax è ancora andando al lato server e raggiungere per lo stesso contenuto sono confuso è cache:true davvero abilitare la cache e cosa devo fare per farlo funzionare?come attivare la memorizzazione nella cache in jquery ajax

risposta

14

cache:true è l'impostazione predefinita e non sempre ottiene il contenuto dalla cache. La capacità cache di un elemento nel browser è determinata da:

  • Le intestazioni di risposta restituite dal server Web di origine. Se le intestazioni indicano che il contenuto di non deve essere memorizzato nella cache, non lo sarà.

  • Nella risposta deve essere presente un validatore come un'intestazione ETag o Last-Modified.

Da this link

cache:false ha un altro caso l'uso di caricare sempre i contenuti da un server, indipendentemente dal fatto che il contenuto è memorizzato nella cache o meno.

Il punto qui è: la cache-capacità è determinata dal server e cache:true o cache:false del $.ajax è solo quello di stabilire se cercare la risposta in cache o meno.

+0

Grazie per la risposta, ho capito che suggerisco di salvare manualmente la mia risposta in un array o qualcosa del genere e di controllare se esiste o meno in quell'array se lo carico da esso se non chiamo l'ajax di nuovo giusto? – Sora

+0

@Sora: no, se è necessaria una richiesta di memorizzazione nella cache. Il server deve restituire una risposta con un'intestazione della cache. Quando il browser riceve la risposta 'e c'è un'intestazione della cache, il browser lo memorizzerà automaticamente nella cache ' –

+0

come posso sapere se il browser restituisce un'intestazione della cache? – Sora

Problemi correlati