【问题标题】:Images in cache not getting used缓存中的图像未使用
【发布时间】: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


【解决方案1】:

似乎我想出了自己的解决方案。

由于缓存动态页面(例如“user.php?id=22”)破坏了我的应用程序,我尝试插入一个包含对清单的引用的 iframe,而不是在页面本身上引用它。这对我来说似乎没有。

我现在在清单的 CACHE 部分中包含对动态页面的显式引用和通配符。这似乎确实有效。它们现在不完全使用参数等进行缓存。 (因此应用程序保持功能)但正在使用缓存的图像。可能并不理想,但似乎是一个非常简单的解决方案。

我还没有尝试删除这些 iframe,但我猜它们可以被删除。

CACHE MANIFEST
./user.php
./user.php?*
etc...
NETWORK:
./db_connect.php
etc...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2012-10-13
    • 2023-03-29
    • 2012-05-26
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多