将缓存清单添加到现有网站

6

在页面加载后是否可以通过编程方式添加缓存清单?比如使用JavaScript将属性添加到html标签中,并重新初始化/重新加载页面?

我想向页面添加缓存清单,但无法编辑其HTML本身。


你认为当你重新加载页面后,你的修改会发生什么? - Etheryte
2个回答

1

我之前进行的一些测试发现,只有在重定向到正确指定缓存清单的站点时才能正常工作。

应用程序缓存是按域名工作的。这给我们带来两种不同的情况:1. 它是我们域名下的站点或2. 它是外部站点。

因为你只需要在主站点(或任何其他保证被访问的站点)上指定清单,所以你可以在你的房子前面放一个门卫:制作一个虚拟页面(门卫,显示旋转器或进度条),并正确指定缓存清单。这个虚拟页面还可以检查是否有更改并交换缓存。在加载所有资源之后,你只需重定向到你应用程序的“真正”入口点(即授予访问权限的门卫)。
如果它是一个外部页面,那么你必须选择另一种解决方法,比如在服务器端读取站点内容并在那里进行更正(使它看起来像是你域名下的站点)。你也可以像任何其他资源一样缓存外部站点,并在iframe中加载外部站点,但简单地说:在浏览器中显示的URI必须在你的域名下。如果你考虑一下,这是合理的,否则我可以制作一个永久缓存stackoverflow的站点,每个访问我的站点的人都将无法从stackoverflow获取更新(过于简化,但应该能够传达要点)。

1
缓存清单描述了运行您的“应用程序”“离线”所需的文件。您无法在页面加载后设置清单属性。HTML文件已经发送,浏览器不会对动态添加的清单属性做出反应。
您可以尝试在服务器端“爬取页面”,并将内容包装/嵌入到具有清单的新HTML页面中(代理方式)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接