2011-05-03 73 views
8

我正在使用缓存清单文件在离线的web应用程序。我无法刷新我的JavaScript文件。如果我更改.js文件(清单文件中列出),然后更改清单文件版本号。并保存它,然后更改后的.js文件不会重新加载到客户端上。我需要做些什么才能让.js文件更新?缓存清单离线应用程序不刷新Chrome中的JavaScript文件

谢谢

回答

11

这是因为网络服务器告诉浏览器缓存静态文件几个小时。因此,浏览器不知道清单文件已更改。您可以清除所有的应用程序数据“或”配置Web服务器的清单是不可缓存...

阅读http://diveintohtml5.info/offline.html更多信息

如果你想清除Chrome使用镀铬的应用程式快取:// appcache-internals/ 并手动搜索C:\ Documents and Settings \ YOURUSERNAME \ Local Settings \ Application Data \ Google \ Chrome \ User Data \ Default \ Cache

4

我假设你如果使用一个缓存清单,然后刷新清单,浏览器将再次请求所有文件。但是,我发现我需要在清单中的所有文件中显式设置标题,以告诉浏览器不要缓存文件。我相信,一旦清单告诉浏览器再次请求文件,浏览器就会像其他任何非清单缓存文件一样对待它。也许这是Chrome的错误,但我觉得我在另一个WebKit浏览器中看到了这一点。

无论如何,在清单中为文件设置标头永远不会被缓存,并且在更新清单时应该重新加载它们。如果这些文件在清单页面外使用,则可能需要根据需要实际缓存这些文件。

+0

我经历了同样的行为。在我的实验中,我注意到在这种情况下,使用Rack和WEBrick,Chrome 27正确地重新加载了html文件(不管缓存标头),但需要禁用JavaScript文件的缓存。相反,即使使用默认缓存,Firefox 21也可以正确地重新加载JavaScript文件。对于Chrome,你可以在https://github.com/edymtt/cvsandbox/blob/master/config.ru找到一个可以工作的'config.ru' – edymtt 2013-06-17 18:22:59

1

我有同样的问题,直到我碰到这个无价的警告是在 Mozilla Developer site

重要:不指定缓存清单 文件清单本身,否则这将是几乎不可能通知浏览器一个 新的清单是可用的。

woops。我的错。

但是,每当我更改代码中的某些内容时,我需要更改清单中的某些内容,然后重新加载两次,这是无关紧要的问题。

3

在地址栏中键入chrome://appcache-internals依次输入

缓存清单列表会出现那么就删除你想要的,当你再次加载页面一切都将被刷新。

希望这有助于:)

0

在我的情况,我必须禁止使用meta标签传统的浏览器缓存。看到this SO question如何

相关问题