2009-10-26 55 views
3

我有一个页面,它有一些可编辑的功能,它们在编辑时通过Ajax进行更新。有些值存储在cookie中,以便在加载页面时加载它们。如果用户进行了更改,然后转到其他页面并单击后退按钮返回,则原始页面将从缓存中加载而没有新值。如果用户刷新页面,则会从Cookie重新加载更改,并显示正确的值。当页面被动态修改时,我可以使缓存无效吗?我希望能够利用浏览器缓存,所以我不希望让页面始终使浏览器缓存无效,只要我能帮助它。任何建议表示赞赏。如何通过Ajax修改页面时使缓存失效?

回答

0

您需要在HTTP响应中设置缓存标头。

取决于你的技术,你可以做的是,在网络服务器(例如,基于相关网址),或在你的代码(如使用设置你的框架或一些API调用的头)。

具体做法是:

no-cache 
expires 

你想要的人。

+1

感谢您的回应杰森。 我可以通过设置标题来解决这个问题,这样页面就不会被浏览器缓存,但大部分时间我们都希望允许浏览器缓存发生。只有在通过Ajax更改内容的情况下,我们才想使页面的浏览器缓存无效。除非重新加载页面,否则Ajax调用不会更新浏览器缓存,因此如果您离开页面并通过浏览器返回按钮返回,则不会显示更改。 再次感谢 – Andre 2009-10-28 17:55:01

1

您可以首先通过Ajax加载数据。

$(document).ready(function(){ 
    $.get("your_ajax_url"); 
}); 

然后当你点击后退按钮在Ajax调用重复和在服务器端发送与正确设置缓存或Etag头的HTTP响应。

0

,你可以这样写

$.ajax(
    { 
     url: 'Serverpage name' 
     cache: false, 
     type: 'POST', 
     success: function(msg) 
     { 
     }); 
    }); 

这里设置缓存:假,将不设置任何缓存。

相关问题