5

我们的 Web 应用程序使用应用程序缓存(缓存清单)以离线模式恢复 HTML 页面和资源。HTML 页面将 sessionID 作为 URI 中的参数。因此,在每次注销和登录操作之后,新的 HTML 页面都会保存到应用程序缓存中,因为 URI 中的 sessionId 已更改。在使用应用程序几周后,一些浏览器开始运行缓慢。应用程序缓存的大小(在 FF 3.6+ 上测试)约为 200Mb!每次登出后我们清除浏览器的LocalStorage,但是如何清除Application storage中的资源呢?

4

2 回答 2

7

应用程序缓存占用如此多空间的问题在于,您每次都给用户代理一个不同的离线 Web 应用程序。离线 Web 应用程序通过缓存清单文件的 URI 向用户代理标识包括查询字符串,而不是您可能认为的主文件的 URI。

因此,通过在缓存清单 URI 中包含会话 ID,您是在告诉浏览器每个会话都获得了自己的全新应用程序,而无需使用任何以前下载的应用程序(因此,永远无法清除它们)。您每次都在安装不同的 Web 应用程序。

重新考虑如何构建应用程序,因为当前使用 HTML5 离线缓存清单没有任何价值 - 只会导致过度下载。Web 应用程序鼓励的架构是静态地提供所有 HTML,并通过 AJAX 获取需要会话的数据。Web 应用程序在以经典的“在服务器上动态生成带有数据的 HTML 页面”范式时不起作用。

于 2011-04-29T12:57:49.633 回答
0

我不确定您是否可以通过 JavaScript 控制应用程序缓存。这是清除缓存时浏览器和用户应该处理的事情。

于 2011-04-29T07:46:56.143 回答