我正在尝试使用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检查工具上检查请求详细信息时(在网络标签下),它第一次显示200,之后,当我滚动它时显示200(来自缓存)。为什么即使我重新加载同一页面后它第一次没有显示200(来自缓存)?
答案 0 :(得分:0)
您不需要在jQuery中将cache
设置为true
,默认情况下这是正确的(script
和jsonp
数据类型除外)。此外,该参数仅用于通过仅为HTTP GET请求的URL附加时间戳URL参数来防止缓存,否则缓存将采用浏览器的默认行为。
如果设置为false,则会强制请求的页面不被缓存 浏览器。注意:将缓存设置为false只能正常使用 HEAD和GET请求。它的工作原理是附加&#34; _ = {timestamp}&#34;到了 GET参数。其他类型的参数不需要 请求,但在IE8中,对已经存在的URL进行POST时除外 GET请求。
https://api.jquery.com/jQuery.ajax/#jQuery-ajax1
尝试在max-age
标题中添加cache-control
并随附If-Modified-Since