我在推送历史状态旁边使用ajax请求来加载新内容并更新整个页面。在服务器上,X-Requested-With标头用于决定发送整页还是仅发送内容。但似乎chrome倾向于使用缓存,无论它是否加载了ajax或普通请求(它在检查缓存时都不会尊重标头)。
当我打开网站页面时,我会点击链接导航到使用ajax的新页面然后通过在地址栏中输入网址导航到新页面。当我回击时,显示ajax缓存版本(无论是html或json),而不是整页。当缓存被禁用时,一切正常。
在检查缓存时,有没有办法强制chrome尊重请求标头?
答案 0 :(得分:1)
经过一番研究后,我发现浏览器倾向于根据Request Method和URL缓存响应。因此,默认情况下,在检查缓存时,他们不会考虑任何请求标头。但是,当使用Vary标头检查缓存时,可以强制浏览器遵守某些标头。
因此,通过将此标头( Vary:X-Requested-With )添加到基于X-Requested-With请求标头更改的每个响应,服务器告诉浏览器,如果您的响应可能会有所不同X-Requested-With标题已更改,您必须请求新的响应。
答案 1 :(得分:0)
请问,在这样的情况下如何做到这一点:
$(document).ready(function(){
$(document).on('click','.pagination a',function(e){
e.preventDefault();
var pageNumber = $(this).attr('href').split('page=')[1];
getMorePage(pageNumber)
});
function getMorePage(page) {
$.ajax({
url: "/all-products-ajax/"+"?page="+page,
type: "get",
datatype: "html"
}).done(function (data) {
$('#product-view').html(data);
}).fail(function () {
alert('Posts could not be loaded.');
});
}
});