出于性能目的,我想让我的一些网页使用已经缓存用于离线使用的资源(图像,CSS等),但不缓存页面本身,因为内容将动态生成。
要做到这一点的一种方法是重构我的页面,以便它们通过AJAX加载动态内容或通过在LocalStorage中查找内容。细节可能会有所不同,但总的来说,差不多是这样的。如果可能的话,我宁愿找到一种方法,简单地指示浏览器使用缓存资源(再次,图像,CSS等)的页面,但实际上不缓存(动态生成的)HTML内容本身。
是否有办法做到这一点与HTML5离线appcache?我的印象是答案是否定的,因为:
- 任何包含清单的页面都会被缓存,所以我不能在页面本身指定缓存的资源。
- 没有办法告诉前一个页面"使用离线资产的另一个页面,但实际上不缓存该页面上的HTML"。必须指定页面本身,这意味着HTML将被缓存。
我错了吗?似乎有一些棘手的(或不那么棘手的)方法可以解决这个问题。现在我已经把它打出来了,我想知道在appcache清单的NETWORK
部分显式地包含该页面是否会成功。
我的回答是"是"。
我在一个web应用程序上工作,我列出了清单中所有必要的资源,并将NETWORK
部分设置为*
。
清单只包含在主登陆页上。所以所有的资源都会在你第一次访问这个网站的时候被缓存,这真是太棒了。
简言之,您的一个页面必须包含清单,因此将被缓存。
也许你可以在iframe中加载manifest,而不是缓存整个页面,只是一个想法。
列出
CACHE
部分中缓存的所有资源- 设置
NETWORK
区段为*
我很确定这个问题的答案是否定的。如果你在Chrome中使用网络部分,那么它会显示哪些资源是从缓存加载的,哪些是从服务器加载的。我已经尝试如上所述设置apache,资源总是从服务器加载。如果当前页面不在appcache中,那么它不会费心在appcache中检查任何资源,我是否正确?
我发现正在工作的是列出那些你不想在manifest的NETWORK:部分中缓存在appcache中的文件。对我来说,这意味着在网络部分添加*.asp*。现在,没有任何经典的asp文件或aspx文件被缓存。