Boz*_*zho 6 firefox caching http
是否有一种方法(一个http标头)告诉浏览器不要区分main.css和main.css?someparam=1执行缓存.
根据w3c规范:
由于某些应用程序传统上使用带有查询URL的GET和HEAD(在rel_path部分中包含"?")以执行具有重大副作用的操作,因此除非服务器提供明确的到期时间,否则缓存不得将对此类URI的响应视为新鲜.这特别意味着HTTP/1.0服务器对此类URI的响应不应该从缓存中获取
如果GET参数发生变化,我的Firefox 3.5.5将从服务器重新获取文件.如果它没有改变,它将从缓存中服务内容.(通过FireBug验证).
那么,有没有办法解决这个问题(不删除get参数).
不太清楚哪一方需要 URL 中的参数:服务器还是客户端?无论如何,您的服务器可以让客户端处理相同的 URL,并且不需要任何不存在的神奇标头。;)
如果服务器需要参数,如果您使用 Apache,则可以使用 Apache URL 重写添加该参数:
RewriteRule ^style.css$ /style.css?param=1 [L]
Run Code Online (Sandbox Code Playgroud)
Rewrite Engine 还可以做其他事情,您甚至可以通过 cookie 传递参数并将它们在 RewriteCond 行中提取到查询字符串中:
RewriteCond %{HTTP_COOKIE} a:(.*) # not sure of the syntax
RewriteRule ^style.css$ /style.css?a=%1 [L]
Run Code Online (Sandbox Code Playgroud)
这样客户端的 URL 将是相同的。
如果客户端发送带有参数的请求,并且它无法以不同的方式工作,您可以放置外部重定向并设置 cookie:
RewriteCond %{QUERY_STRING} a=(.*)
RewriteRule ^(.*)$ /$1 [CO=a:%1:mysite.com,R]
Run Code Online (Sandbox Code Playgroud)
这样浏览器就会考虑缓存/不缓存不带任何参数的 URL。阅读重写引擎文档,还有其他有用的功能。
| 归档时间: |
|
| 查看次数: |
4585 次 |
| 最近记录: |