【发布时间】:2012-08-20 16:11:46
【问题描述】:
我在使用谷歌浏览器时遇到了问题:如果我调用一个地址,谷歌会两次连接到网络服务器 - 但只是有时。我认为这与缓存控制有关。 每次发生这种情况时,都不会在请求中设置标头 HTTP_CACHE_CONTROL。否则设置为 max-age=0。 我不希望 Chrome 两次连接到我的脚本 - 你知道解决方案吗?
我希望你能帮助我! 谢谢!
编辑: 也许重要的是要知道:在那个脚本中有一个 301 重定向。
编辑 2: 我禁用了“HTTP_CACHE_CONTROL max-age=0”——同样的问题。
此外:如果我调用“http://localhost/admin?foo=bar”,则第一个请求中没有 GET 变量“foo” - 但在第二个请求中有。
编辑 3: 如果我使用 javascript 而不是 location-header 进行重定向,一切正常。
编辑 4: 你可以测试一下:下载this并解压。 把它放在“www/chrome-test/”文件夹中,这样就可以调用“http://localhost/chrome-test/redirect/”了。
每次调用“http://localhost/chrome-test/redirect/”时,您都会被重定向到“http://localhost/chrome-test/example/”。 显示由重定向脚本生成的消息。我使用 Sessions 来“传输”这条消息。 然后再次调用“http://localhost/chrome-test/redirect/”(使用地址栏并按回车!!!)。重复这最后一步几次(可能 20 次)。 有时会显示两次消息“这是一条消息...” - 因此重定向脚本会运行两次。但为什么呢?
【问题讨论】:
-
为什么你认为它连接了 2 次?
-
因为我记录了每个请求。这两个请求有不同的 REQUEST_TIME - 所以记录器工作正常。
-
进一步:如果我调用“localhost/admin?foo=bar”,则第一个请求中没有 GET 变量“foo”。但在第二个请求中有。
-
我认为如果 chrome 需要重新缓存它,它会加载页面两次,一次显示给用户,一次添加到缓存中。尝试完全关闭缓存。
标签: php google-chrome caching redirect