我在SAP应用上工作。在客户端我使用angularjs,我的代码分为html(模板)文件和javascript文件。
我的服务器是Apache。
当我上传javascript文件时,浏览器缓存通常会成功更新文件,而我不需要清除浏览器缓存。
然而,当我上传新版本的html模板文件时,浏览器通常不会更新缓存版本(我在Windows 8和Mac上使用chrome和firefox)
我习惯清除缓存并要求团队(和客户端)中的每个人在更新模板文件时清除缓存。
这是常规的浏览器缓存行为吗?
浏览器倾向于缓存html模板文件比使用javascript文件更常见吗?
是否有Apache配置有助于使浏览器对较新版本的html文件更敏感?
谢谢
答案 0 :(得分:2)
元标记不强。 OP是正确的要求Apache指令。这是一个有效的解决方案:How to prevent http file caching in Apache httpd (MAMP)
解决方案可以放在.htaccess
,httpd.conf
和VirtualHost
中:
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
Credit @ Charlie Rudenstal https://stackoverflow.com/users/1552414/charlie-rudenst%C3%A5l
以下是响应HTTP标头和HTML元标记http://condor.depaul.edu/dmumaugh/readings/handouts/SE435/HTTP/node20.html的简短比较,引用:
(元标记)通常受浏览器缓存(实际上读取HTML)的尊重,而不是代理缓存(几乎从不读取文档中的HTML标记)。
答案 1 :(得分:1)
您可以在HTML文件中使用以下元标记:
<meta http-equiv="cache-control" content="no-cache, no-store">
为了保持与HTTP / 1.0的向后兼容性,还包括以下内容:
<meta http-equiv="pragma" content="no-cache">