是否应为每个服务器(动态)响应禁用缓存?

时间:2012-01-30 19:07:57

标签: ajax caching http-headers cache-control

作为问题标题,应通过以下方式禁用缓存:

在请求中附加唯一的javascript生成字符串

/REST/data.php?u=32dajasda98s1641k801

发送缓存控制标头

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

每次使用ajax从服务器向客户端发送动态内容?什么时候需要?什么时候不需要?

1 个答案:

答案 0 :(得分:0)

基本上,每当您希望保证在下次请求数据时从服务器获得“新鲜”响应时,您都需要以某种方式禁用缓存。如果不这样做,则允许您与服务器或服务器本身之间的任何代理缓存响应,并在下一次请求时将其返回给您。

通过配置不应缓存的URL并且服务器将为您处理它,可以在脚本中直接在示例中或在(大多数?所有?)Web服务器中完成此操作。

你提到的两种方法中更“礼貌”的绝对是高速缓存控制标题,这使得代理根本不会缓存。动态生成的一个仍然可以发送允许代理缓存的标头,因为每个URL只发出一个请求,所以不必填充缓存。