浏览器缓存行为问题,我总是要清除缓存中的html文件更新

时间:2014-05-14 03:08:36

标签: apache angularjs browser-cache single-page-application

我在SAP应用上工作。在客户端我使用angularjs,我的代码分为html(模板)文件和javascript文件。

我的服务器是Apache。

当我上传javascript文件时,浏览器缓存通常会成功更新文件,而我不需要清除浏览器缓存。

然而,当我上传新版本的html模板文件时,浏览器通常不会更新缓存版本(我在Windows 8和Mac上使用chrome和firefox)

我习惯清除缓存并要求团队(和客户端)中的每个人在更新模板文件时清除缓存。

这是常规的浏览器缓存行为吗?

浏览器倾向于缓存html模板文件比使用javascript文件更常见吗?

是否有Apache配置有助于使浏览器对较新版本的html文件更敏感?

谢谢

2 个答案:

答案 0 :(得分:2)

元标记不强。 OP是正确的要求Apache指令。这是一个有效的解决方案:How to prevent http file caching in Apache httpd (MAMP) 解决方案可以放在.htaccesshttpd.confVirtualHost中:

<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">