7

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

一种方法是重构我的页面,以便它们通过 AJAX 加载动态内容或在 LocalStorage 中查找内容。细节可能会有所不同,但从广义上讲,类似的东西。

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

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

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

我错了吗?似乎可能有一些棘手(或不那么棘手)的方法。现在我已经把它打出来了,我想知道是否在NETWORKappcache 清单的部分中明确地包含该页面是否可以解决问题。

4

3 回答 3

7

我的回答是“是的”。

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

然后清单仅包含在主登录页面上。因此,所有资源都会在您第一次访问该站点时被缓存,并且它很有效。

简而言之,

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

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

  • CACHE列出要在该部分中缓存的所有资源

  • NETWORK部分设置为*
于 2011-11-30T02:00:10.190 回答
2

I'm fairly certain that the answer to this is no. If you use the Network section in Chrome, then it shows which resources are loaded from the cache and which are loaded from the server. I have attempted to set the appcache as described above and the resources are always loaded from the server. Would I be correct in assuming that if the current page is not in the appcache then it wont bother to check in the appcache for any of the resources?

于 2013-07-04T14:34:34.643 回答
0

What I've found that is working is to list those files that you don't want cached in appcache in the NETWORK: section of the manifest. For me, that meant adding *.asp* to the network section. Now, none of the classic asp files, or aspx files are cached.

于 2014-01-14T16:27:37.817 回答