2013-09-07 3 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(); 

    } 

जब मैं लिंक एक सामग्री एक div innerHTML मैं jQuery ajax में cache:true विशेषता निर्धारित करने के लिए निर्धारित है के लिए क्लिक करें लेकिन अगर मैं लिंक नहीं कैश है के लिए फिर से क्लिक करें मैं इस समारोह है AJAX फ़ंक्शन प्रदर्शित अभी भी सर्वर की तरफ जा रहा है और उसी सामग्री के लिए पहुंच गया है जो मुझे उलझन में है cache:true वास्तव में कैश सक्षम करता है और इसे काम करने के लिए मुझे क्या करना चाहिए?कैसे jQuery ajax में कैशिंग को सक्षम करने

उत्तर

14

cache:true डिफ़ॉल्ट है और हमेशा कैश से सामग्री प्राप्त नहीं करता है। ब्राउज़र पर किसी आइटम की कैश-क्षमता इस प्रकार निर्धारित होती है:

  • प्रतिक्रिया शीर्षलेख मूल वेब सर्वर से लौट आए। यदि हेडर इंगित करते हैं कि सामग्री को कैश नहीं किया जाना चाहिए तो यह नहीं होगा।

  • एक ईटीएजी या अंतिम-संशोधित शीर्षलेख जैसे सत्यापनकर्ता प्रतिक्रिया में उपस्थित होना चाहिए।

से this link

cache:false एक और उपयोग के मामले हमेशा उस सामग्री को कैश किया गया है, चाहे या नहीं सर्वर से सामग्री लोड करने के लिए है।

यहां मुद्दा यह है: कैश-क्षमता सर्वर और cache:true या $.ajax की cache:false से निर्धारित होता है सिर्फ कैश की गई प्रतिक्रिया या नहीं देखने के लिए कि क्या यह निर्धारित करने के लिए है।

+0

आपके उत्तर के लिए धन्यवाद क्योंकि मुझे लगता है कि आप समझते हैं कि मुझे अपनी प्रतिक्रिया को किसी सरणी या किसी चीज़ में मैन्युअल रूप से सहेजना चाहिए और यह जांचने के बजाय कि क्या यह अस्तित्व में है या नहीं, अगर यह मैं इसे लोड करता हूं तो अगर मैं AJAX को कॉल करता हूं फिर सही है? – Sora

+0

@ सोरा: नहीं, अगर आपको कैश होने का अनुरोध चाहिए। सर्वर को कैश हेडर के साथ प्रतिक्रिया वापस करनी है। जब ब्राउज़र को प्रतिक्रिया प्राप्त होती है 'और कैश हेडर होता है, तो ब्राउज़र स्वचालित रूप से कैश करेगा –

+0

ब्राउज़र कैसे कैश हेडर लौटा रहा है, मैं कैसे बता सकता हूं? – Sora