2014-02-25 128 views
1

我不希望请求的页面被浏览器缓存。发布请求会解决这个问题吗?做POST而不是GET有很多缺点吗?GET请求缓存页面响应

目前我使用这样的:

$.get("/Client/JSON_GetInvoiceLines/" + ClientID, function (data) { 
     //do stuff 
    }); 
+0

要澄清,你想(1)服务器返回的敏感数据永远不会被客户端存储?如果是这样,绝对使用POST请求。或者(2)是否只希望确保新内容直接从服务器返回,而不是每个请求(而不是客户端和原始服务器之间互联网上其他某个节点的缓存内容)?如果是这样,那么使用@market建议的随机查询字符串。 –

+0

我只想要新鲜的内容。我不知道“cache:false”属性。奇迹般有效! – kravits88

回答

2

你可以使用jQuery中的cache选项。

$.ajax({ url: '/Client/JSON_GetInvoiceLines/', type: 'GET', cache: false, success: function(data){ // do stuff } });

它会追加一个随机字符串作为GET参数的URL的末尾,因此浏览器将不缓存它。

但是,理想的解决方案是通过设置标头来禁用服务器端的缓存,前提是您可以控制所请求的资源。

+2

是的,不幸的是,在一个GET请求中追加一个随机字符串作为查询字符串的一部分是(可惜)在所有可能位于客户端和原始服务器之间的中间服务器上破坏缓存的唯一可靠方法。理论上来说,原始服务器可以通过头文件来阻止这种情况,http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html但存在无数不好的实现。因此,使用随机查询字符串参数(目前在Yahoo Mail的当前实现中)以及其他行业标准Web应用程序继续使用。 –