我有一个特殊的问题:
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”参数更改过去的DATE TIME的If-Modified-Since标头来实现此目的。
目前正在发生这种情况:
我想我的印象是,在第4步,浏览器内容应该已刷新,我缺少什么?
我设置了一个小测试,所以你可以尝试看看我的意思:http://tweetplenty.com/test/test2.php ...使用FF和firebug,如果你可以使用console.log()...这里是操作的顺序:
“普通”链接将向http://tweetplenty.com/test/test.php发出请求而不修改if-modified-since ...后续请求使用“普通”链接应返回304(每次返回200 OK) <秒>)
“if-modified-since”链接将向http://tweetplenty.com/test/test.php请求修改if-modified-since标头,浏览器将返回新内容。
此时再次单击“正常”会返回先前缓存的数据,我认为在点击“if-modified-since”链接后应该刷新数据。
如果您想在此处查看测试脚本,请转到:http://tweetplenty.com/test/test.zip
答案 0 :(得分:1)
我想你想修改所有请求的标题。查看this page上的示例#2。
答案 1 :(得分:0)
听起来像jquery脚本和PHP脚本之间的某种程度的缓存。我怀疑是浏览器级别的缓存。 (虽然理论上它可能是proxy caching,但我猜)
您是否尝试过使用curl或网络浏览器手动尝试AJAX请求?
答案 2 :(得分:0)
当通过XmlHttpRequest发出请求以从服务器脚本获取任何已修改的内容时,您应该附加一些在查询字符串末尾发生变化的变量。
例如,如果您的脚本是
mydomain.com/myscript.php
然后通过让我们说Jquery Ajax在
发出请求来调用它mydomain.com/myscript.php?t=[some_value].
通常[t]可以是以毫秒为单位的当前时间或其他数字。
换句话说,每次通过XMLHttpRequest对象发送请求时,请尝试创建唯一的URL。
对于Cache-Control标头,您应该查看更多选项。
此致