当存在缓存清单时,Google Chrome会从缓存中提取HTML文件

时间:2015-03-06 20:46:56

标签: google-chrome caching browser-cache cache-control

我有一个网站,我在其中添加了一个CACHE MANIFEST文件。这是为了确保iOS中的全屏网络应用程序不会从缓存中获取内容。 (否则,它们似乎正确刷新HTML,但没有链接JavaScript或CSS。)在我的应用程序中,离线访问完全没用,所以我创建了清单以不缓存任何东西。这是它的样子:

CACHE MANIFEST

# Version 1.0

NETWORK:
*

这解决了我在iOS中的问题,但似乎搞乱了Chrome(40.0.2214.115米)。 Chrome始终坚持始终从缓存中获取我的基本html文件,即使打开了开发工具并且"禁用缓存"检查。如果我可以简单地删除/重命名缓存清单文件并刷新,则可以解决问题。 另外,我的基本HTML文件包含以下标题:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>

我在这里缺少什么吗?当我有一个显示 no 缓存的清单文件时,Chrome会执行更多缓存,这似乎很奇怪。

2 个答案:

答案 0 :(得分:0)

如果在HTML文件中指定缓存清单,它将始终缓存到applicationCache,无论它是否指定了您发布的标头/元标记(请参阅此处Cache manifest caches network files)。

如果您想避免缓存JS和CSS文件,只需在web-app的根目录中使用.htaccess文件即可。 例如,使用&#34; ExpireByType&#34;命令:

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 0 seconds"
  ExpiresByType text/html "access plus 0 seconds"
  ExpiresByType text/plain "access plus 0 seconds"
  ExpiresByType text/javascript "access plus 0 seconds"
  ExpiresByType text/css "access plus 0 seconds"
  ExpiresByType image/png "access plus 0 seconds"
  ExpiresByType image/jpg "access plus 0 seconds"
  ExpiresByType image/jpeg "access plus 0 seconds"
</IfModule>

此外,您可以添加以下行来完全禁用Web应用程序的缓存(请参阅此Disabling Caching with .htaccess):

  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 "Mon, 1 Jan 2010 01:00:00 GMT"
  </ifModule>

答案 1 :(得分:0)

此行为已在Chrome 41.0.2272.76 m中修复。它不再使用清单文件从我的站点的缓存中提取文件。