【发布时间】:2015-03-16 16:51:55
【问题描述】:
我正在开发这个网络应用程序,我想为其缓存一些静态内容以减少慢速连接时的加载时间。其他部分是通过 PHP 和 AJAX 生成的,因此无法缓存。
我已成功使用 cache.manifest 来缓存静态内容,例如图像,但我注意到动态页面没有使用它们。相反,即使它们已被缓存,它们仍会再次下载图像,从而使缓存无用。
因为我的动态内容是根据 GET 请求生成的,所以动态页面位于清单的 NETWORK 部分(例如“用户?*”)。这可能与它有关吗?有没有办法强制使用缓存的图像?
注意:对动态页面的确切完整引用(例如“user?id=22”)当然不在清单中。这是否会使这些页面无法访问缓存?
【问题讨论】:
-
您是否为静态内容发送
Cache-Control、Pragma和Expires标头?你如何实现静态内容?它们会直接由网络服务器提供服务吗? -
我目前没有使用任何这些标题。现在阅读它们。关于第二个问题;图像存储在服务器上,我在 PHP 中生成对它们的引用。
-
@CharlotteDunois 查看了这些标题,但并没有真正看到它们如何帮助我。您是否建议缓存所有页面,然后将这些标题添加到包含动态内容的页面中?我基本上要问的是,cache.manifest 的“网络”部分中未明确引用的页面(由于动态参数)是否可以使用缓存的资源。
-
这不建议; bennadel.com/blog/…
-
您需要将这些标头添加到您想要缓存的内容中。您还需要支持 If-Modified-Since 标头并使用 HTTP 200 或 HTTP 304 回复。
标签: php ajax image caching manifest