bra*_*rad 5 mod-rewrite mod-cache apache-2.2
我有一个具有以下重写规则的应用程序:
RewriteCond /tmp/maintenance.html -f
RewriteCond %{HTTP_HOST} !^backdoor.myapp.com$
RewriteRule ^(.*)$ /tmp/maintenance.html [L]
Run Code Online (Sandbox Code Playgroud)
这是我们的“维护模式”。所以我通过将 /tmp/maintenance.html 与真实文件链接来启用维护(并使用 保持后门访问backdoor.myapp.com)。
问题是,这个页面似乎被浏览器缓存了,所以当维护关闭时,用户必须进行硬刷新才能返回主应用程序。
我想知道如何仅在 Apache2 中设置此特定文件的标头。我相信有一个no-cache标题?我假设我想为这个文件设置那个标题,一切都应该很好。
有人可以指导我如何做到这一点,或者解释这个静态文件永远不应该缓存在用户浏览器中的机制吗?
小智 10
为了更好地控制从缓存中排除的文件的粒度,您可以使用“FilesMatch”指令。
另外,请确保 mod_headers 和 mod_rewrite 已加载到服务器上。如果您不确定,请将标头指令放在“ifModule”部分中:
<FilesMatch "^(excludeme-1|excludeme-2)\.jar$">
FileEtag None
<ifModule mod_headers.c>
Header Unset ETag
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
Header Set Pragma "no-cache"
Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
</ifModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
小智 8
<Directory /some/real/path/to/tmp>
Header Set Pragma "no-cache"
Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate"
Header Unset ETag
FileETag None
</Directory>
Run Code Online (Sandbox Code Playgroud)
这应该适用于几乎所有浏览器。
| 归档时间: |
|
| 查看次数: |
21857 次 |
| 最近记录: |