簡體   English   中英

為什么ajax請求沒有被緩存/

[英]Why ajax requests are not getting cached/

我正在嘗試使用ajax的緩存功能。 但這在我的要求中不起作用。 我想緩存所有請求。 這是我的代碼

<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
<script type='text/javascript'>
jQuery(document).ready(function (jQuery) {
    call_ajax(); 
}); 
jQuery(window).scroll(function(){
    call_ajax(); 
});
function call_ajax(){
    jQuery.ajax({
        type: "get",
        cache  : true,
        data: {offset : 3}, 
        dataType : "html",
        url: 'http://localhost/contents.php', 
        success: function(returnData){
            jQuery('.ajaxcontents').append(returnData);
        },
    }); 
}   
</script>
<div id="ajaxcontents"></div>

在文件contents.php中,我將標題設置如下。

header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+5 days")), true);
header("Pragma: public");
header("Cache-Control: public");

當我在google inspect工具上(在“網絡”標簽下)檢查請求詳細信息時,它始終第一次顯示200,然后,當我滾動時,它顯示200(來自緩存)。 為什么即使重新加載同一頁面后它也不會第一次顯示200(來自緩存)?

你並不需要設置cache ,以true的jQuery的,這是事實默認情況下(除了scriptjsonp數據類型)。 另外,該參數僅用於通過將時間戳URL參數附加到僅用於HTTP GET請求的URL來防止高速緩存,否則高速緩存將假定瀏覽器的默認行為。

如果設置為false,將強制瀏覽器不緩存請求的頁面。 注意:將緩存設置為false只能與HEAD和GET請求一起正常使用。 它通過在GET參數后附加“ _ = {timestamp}”來工作。 其他類型的請求不需要該參數,但在IE8中,當GET對已經由GET請求的URL進行POST時,則不需要該參數。

https://api.jquery.com/jQuery.ajax/#jQuery-ajax1

嘗試在您的cache-control標頭以及伴隨的If-Modified-Since添加一個max-age

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM