我遇到了一个特殊的问题:
PHP SCRIPT:
// checks If-Modified-Since header (if nothing has changed)
// Sends HTTP/1.0 304 Not Modified
// Sends Cache-control: public, must-revalidate
// exits
// if NO If-Modified-Since or something has changed
// builds content
// Sends Last-Modified: [DATE TIME]
// Sends Cache-control: public, must-revalidate
// exits
我正在使用 jQuery AJAX 尝试按需刷新内容,我尝试通过使用“beforeSend”参数更改 If-Modified-Since header 以及过去的日期时间来实现此目的。
目前发生的情况是:
- 已发出请求,200 OK 响应,内容新鲜
- 后续请求会收到 304 响应,浏览器会从缓存中提取
- 服务器上的内容已更改
- 使用修改后的 If-Modified-Since header 发出请求(不更改 URL 字符串),200 OK 响应包含新内容
- 后续请求(不更改 If-Modified-Since header )似乎会检索第 1 步中的旧内容
我想我的印象是,在第 4 步,浏览器内容应该已刷新,我错过了什么?
我设置了一个小测试,以便您可以尝试看看我的意思:http://tweetplenty.com/test/test2.php ...如果可以的话,请使用 FF 和 firebug,就像我使用 console.log() ...这是操作顺序:
“正常”链接将向 http://tweetplenty.com/test/test.php 发出请求。不修改 if-modified-since ...使用“正常”链接的后续请求应返回 304(每 60 秒应返回 200 OK)
“if-modified-since”链接将向 http://tweetplenty.com/test/test.php 发出请求。使用修改后的 if-modified-since header ,浏览器将返回新内容。
此时再次点击“正常”会返回之前缓存的数据,我认为点击“if-modified-since”链接后应该会刷新数据。
如果您想查看测试脚本本身,请访问:http://tweetplenty.com/test/test.zip
最佳答案
我认为您想要修改所有传入请求的 header 。查看 this page 上的示例 #2 .
关于php - 使缓存内容无效,If-Modified header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295397/