我们的Web应用程序使用应用程序缓存(缓存清单)以脱机模式还原HTML页面和资源。 HTML页面将sessionID作为URI中的参数。因此,在每次注销和登录操作之后,新的HTML页面将保存到应用程序缓存中,因为sessionId已在URI中更改。使用应用程序几周后,一些浏览器开始工作较慢。应用程序缓存的大小(在FF 3.6+上测试)大约为200Mb!每次注销后我们都会清除浏览器的LocalStorage,但是如何从Application存储中清除资源?
答案 0 :(得分:7)
应用程序缓存占用大量空间的问题在于,您每次都会向用户代理提供不同的脱机Web应用程序。离线Web应用程序是identified to the user agent by the URI of the cache manifest file,包括查询字符串 - 而不是您可能认为的主文件的URI。
因此,通过在缓存清单URI中包含会话ID,您告诉浏览器每个会话都获得自己的全新应用程序,而不使用任何以前下载的应用程序(因此,永远无法清除它们) )。您每次都在安装不同的Web应用程序。
重新考虑如何构建应用程序,因为目前使用HTML5脱机缓存清单提供 no 值 - 只是导致过度下载。 Web应用程序鼓励的体系结构是静态地为所有HTML提供服务,并通过AJAX获取需要会话的数据。当在经典的“动态生成包含服务器数据的HTML页面”范例中构建时,Web应用程序不起作用。
答案 1 :(得分:0)
我不确定您是否可以通过JavaScript控制应用程序缓存。这是清除缓存时浏览器和用户应该处理的事情。