2011-04-20 32 views
3

我的移动Web应用程序的主页是一个.jsp页面。我的应用程序需要登录(Google App Engine),因此用户未登录时有一个登录按钮,用户登录时有一个登出按钮,全部由.jsp页面上的代码处理。webkit .appcache文件缓存动态页面

我在页面上加载了很多JS代码,所以我使用了一个.appcache文件来缓存它。不幸的是,即使我将我的.jsp页面添加到网络区域,该页面仍以有趣的方式被缓存,忽略了服务器上的内容服务器。这意味着我的注销按钮显示用户何时注销,反之亦然。

我试图添加no-cache指令作为元标记,但它们都被忽略。

想法?

+0

不要设置元标记 - 首先发送正确的标题! – 2011-10-10 02:18:40

回答

3

根据潜入HTML5,引用清单的页面会自动包含在清单中。

http://diveintohtml5.ep.io/offline.html

问:我需要列出我的缓存我的HTML页面清单?答:是的,不是。如果整个Web应用程序包含在单个页面中,只需确保页面使用manifest属性指向缓存清单。当您使用manifest属性导航到一个HTML页面时,该页面本身被假定为Web应用程序的一部分,因此您无需将其列入清单文件本身。但是,如果您的Web应用程序跨越多个页面,则应该在清单文件中列出所有HTML页面,否则浏览器不会知道需要下载和缓存其他HTML页面。

我有类似的问题,我想我最终会通过AJAX加载页面的内容。

1

在appCache中的缓存是一个两阶段过程:首先检查缓存清单(在这种情况下,当页面被加载时),那么如果它的内容已经改变,则重新加载该内容。然而,就你而言,到那时,陈旧的页面已经被加载和显示。

最简单的解决方法是从appCache中明确排除页面(但不包括.js),这样只有js被缓存,而不是页面。我听起来像你可能已经想通了,因为你试图通过把网页放在网络区域来做到这一点。检查排除是否正确,因为听起来像是问题,并且在该页面上正确设置了html缓存属性。