我的移动网络应用的主页是.jsp页面。我的应用程序需要登录(Google App Engine),因此当用户未登录时会显示“登录”按钮,并且当用户登录时会显示“注销”按钮,所有这些按钮都由.jsp页面上的代码处理。
我在页面上加载了很多JS代码,所以我使用.appcache文件来缓存它。不幸的是,即使我将.jsp页面添加到网络区域,页面也会以有趣的方式缓存,忽略服务器中的内容服务器。这意味着我的“注销”按钮会显示用户何时被注销,反之亦然。
我尝试将no-cache指令添加为元标记,但它们都被忽略了。
想法?
答案 0 :(得分:3)
根据潜入HTML5,引用清单的页面会自动包含在清单中。
http://diveintohtml5.ep.io/offline.html
问:我是否需要在缓存清单中列出我的HTML页面?
答:是的,不是。如果整个Web应用程序包含在单个页面中,请确保该页面使用manifest属性指向缓存清单。当您导航到具有清单属性的HTML页面时,页面本身被假定为Web应用程序的一部分,因此您无需在清单文件本身中列出它。但是,如果您的Web应用程序跨越多个页面,则应列出清单文件中的所有HTML页面,否则浏览器将不知道还有其他需要下载和缓存的HTML页面。
我有类似的问题,我想我最终会通过AJAX加载页面的内容。
答案 1 :(得分:1)
appCache中的缓存是一个两个阶段的过程:首先检查缓存清单(在这种情况下,当页面正在加载时),然后如果其内容已更改,则重新加载该内容。但是,在您的情况下,到那时,旧页面已经加载并显示。
最简单的解决方法是从appCache中专门排除页面(而不是.js),这样只缓存js而不是页面。我听起来你可能已经想到了这一点,因为你试图通过将页面放在网络区域来实现。检查排除是否正确,因为这听起来像是问题,并且在该页面上正确设置了html缓存属性。