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

    } 

tôi có chức năng này khi tôi nhấp vào liên kết một nội dung được đặt thành một innerHTML div tôi đặt cache:true thuộc tính trong ajax jquery nhưng nếu tôi bấm một lần nữa để liên kết không có bộ nhớ cache là hiển thị chức năng ajax vẫn đang đi đến phía máy chủ và đạt cho cùng một nội dung tôi đang bối rối là cache:true thực sự cho phép bộ nhớ cache và tôi nên làm gì để làm cho nó hoạt động?làm thế nào để cho phép bộ nhớ đệm trong jquery ajax

Trả lời

14

cache:true là mặc định và không luôn lấy nội dung từ bộ nhớ cache. Dung lượng bộ nhớ cache của một mục trên trình duyệt được xác định bởi:

  • Tiêu đề phản hồi được trả về từ máy chủ web gốc. Nếu tiêu đề cho biết rằng nội dung không được lưu trong bộ nhớ cache thì sẽ không được.

  • Trình xác thực như tiêu đề ETag hoặc Tiêu đề sửa đổi lần cuối phải có trong phản hồi.

Từ this link

cache:false có một trường hợp sử dụng để luôn tải nội dung từ máy chủ bất kể nội dung được lưu trữ hay không.

Vấn đề ở đây là: bộ nhớ cache-khả năng được xác định bởi các máy chủ và cache:true hoặc cache:false của $.ajax chỉ là để xác định xem có nên tìm kiếm trả về từ cache hay không.

+0

cảm ơn bạn đã trả lời vì tôi hiểu bạn đề nghị tôi nên lưu phản hồi của tôi theo mảng hoặc thứ gì đó và kiểm tra xem nó có tồn tại hay không trong mảng đó nếu tôi tải nó từ nó nếu tôi không gọi ajax một lần nữa phải không? – Sora

+0

@Sora: không, nếu bạn cần một yêu cầu để được lưu trữ. Máy chủ phải trả về phản hồi với tiêu đề bộ nhớ cache. Khi trình duyệt nhận được phản hồi 'và có tiêu đề bộ nhớ cache, trình duyệt sẽ tự động lưu bộ nhớ cache đó ' –

+0

làm cách nào để tôi biết trình duyệt có đang trả về tiêu đề bộ nhớ cache không? – Sora

Các vấn đề liên quan