的index.php:
<html manifest="/cache.manifest">
cache.manifest
CACHE MANIFEST
CACHE:
/img.png
FALLBACK:
/ /offline.html
NETWORK:
*
一切都很好,除了index.php文件本身被提取到缓存(在chrome中测试)。我是否可以禁用指定清单的文件的缓存,以便只缓存img.png?
由于
答案 0 :(得分:13)
不,引用清单的文件总是自己缓存。来自the spec:
声明清单(带有manifest属性)的资源将始终从缓存中获取,无论它是否列在缓存中,即使它列在在线白名单命名空间中也是如此。
答案 1 :(得分:1)
我遇到了同样的问题。
我使用iframe加载名为“go_offline.html”的网页 这个页面上有html元素的manifest属性和一些虚拟内容。
使用css隐藏iframe
这样只会缓存虚拟页面,所有请求都会被.manifest文件中的后备页面捕获
答案 2 :(得分:1)
我已经尝试了iframe解决方案,并发现它已成熟但有错误。大多数浏览器都会缓存iframe所在页面无法获取的数据。
而是通过AJAX加载页面内容。基本上有一个空白的html页面,其中包含清单和javascript,它从服务器中提取并添加其内容。这样,只缓存空白html,并始终从服务器更新内容。
将页面转换为此方法可能非常困难,但它可以正常工作。确保适当的javascript在正确的时间运行,可能需要一些解决方案。移动从缓存拉到新的ajax方法时不会被调用的服务器代码。
注意:如果条件在查询字符串中,则不需要从服务器提取条件内容,不同的查询字符串构成单独的缓存