出于性能目的,我希望我的一些网页使用已缓存供离线使用的资源(图像、CSS 等),但不缓存页面本身,因为内容将动态生成。

实现此目的的一种方法是重构我的页面,以便它们通过 AJAX 或通过在 LocalStorage 中查找来加载动态内容。细节可能会有所不同,但总的来说,是这样的。

如果可能的话,我更愿意找到一种方法来简单地指示浏览器使用页面的缓存资源(同样是图像、CSS 等),但实际上并不缓存(动态生成的)HTML 内容本身。

有没有办法使用 HTML5 离线应用程序缓存来做到这一点?我的印象是答案是否定的,因为:

  • 包含清单的任何页面都将被缓存,因此我无法在页面本身中指定缓存的资源。
  • 无法告诉前一个页面“为其他页面使用离线资源,但实际上并不缓存该页面上的 HTML”。您必须指定页面本身,这意味着 HTML 将被缓存。

我这样说有错吗?似乎可能有一些棘手(或不那么棘手)的方法来解决这个问题。现在我已经把它打出来了,我想知道是否将该页面明确地包含在 NETWORK 应用程序缓存清单的部分就可以解决这个问题。

有帮助吗?

解决方案

我的答案是“是”。

我曾在一个网络应用中工作,在其中列出了清单中的所有必要资源,并设置 NETWORK 部分 *.

然后,清单仅包含在主登录页面上。因此,所有资源都会在您第一次访问该网站时被缓存,并且可以享受待遇。

简而言之,

  • 您的一个页面必须包括清单,因此将被缓存。

    也许您可以将清单加载到iframe中,而没有整个页面缓存,只是一个想法。

  • 列出您的所有资源以缓存 CACHE 部分

  • 设置 NETWORK 部分 *

其他提示

我相当肯定这个问题的答案是否定的。如果您使用 Chrome 中的“网络”部分,则会显示哪些资源是从缓存加载的,哪些资源是从服务器加载的。我尝试如上所述设置应用程序缓存,并且资源始终从服务器加载。我是否正确地假设,如果当前页面不在应用程序缓存中,那么它就不会费心在应用程序缓存中检查任何资源?

我发现正在工作的是列出您不希望在网络中appcache中缓存的文件:清单的部分。对我来说,这意味着将 * .asp *添加到网络部分。现在,没有一个经典的ASP文件或ASPX文件被缓存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top