【问题标题】:browser cache behavior issue, I always have to clear cache for html files updates浏览器缓存行为问题,我总是要清除 html 文件更新的缓存
【发布时间】:2014-07-01 22:30:21
【问题描述】:

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

我的服务器是 Apache。

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

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

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

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

浏览器更倾向于缓存 html 模板文件而不是 javascript 文件是正常的吗?

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

谢谢

【问题讨论】:

  • 去研究如何通过 HTTP 标头影响缓存。
  • 有推荐的链接吗?

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


【解决方案1】:

您可以在 HTML 文件中使用以下元标记:

<meta http-equiv="cache-control" content="no-cache, no-store">

为保持与 HTTP/1.0 的向后兼容性,还包括以下内容:

<meta http-equiv="pragma" content="no-cache">

【讨论】:

    【解决方案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>

    信用@Charlie Rudenstal https://stackoverflow.com/users/1552414/charlie-rudenst%C3%A5l

    这里是响应 HTTP Headers 和 HTML Meta Tags http://condor.depaul.edu/dmumaugh/readings/handouts/SE435/HTTP/node20.html 的简短比较,引用:

    (元标记)通常由浏览器缓存(实际读取 HTML)而不是代理缓存(几乎从不读取文档中的 HTML 标记)支持。

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2013-04-13
      • 2016-02-18
      相关资源
      最近更新 更多