apache - 了解 Firefox 开发者控制台(网络选项卡)中用于图像缓存控制的 "Response Headers"和 "Request Headers"之间的区别

标签 apache .htaccess caching

Edit: I found out my problem. I was using the network inspector wrong (in both Chrome and FF) -- basically I was clicking "refresh" and watching the network inspector, but it would re-download everything. What you need to do is go to the URL, then open the network inspector, then go to the URL again ( Don't "refresh", just re-access the URL a second time). The network inspector will notify you of which resources were pulled from cache :)

原始问题如下:

我正在尝试在 Apache 中设置图像缓存设置。我在 .htaccess 中有以下内容用于 1 周的图像缓存:

FileETag MTime Size

ExpiresActive On
<FilesMatch "\.(gif|jpg|jpeg|png)$">
    ExpiresDefault A604800
</FilesMatch>

当我检查 Firefox 开发者控制台的网络选项卡时,这看起来是正确的,但我不明白为什么请求 header 显示“无缓存”

注意:我删除了与此问题无关的行。

Firefox Developer console network response headers

我还使用 PHP 动态提供一些图像。我将这些图像的缓存设置为 2 天,但响应 header 再次显示“无缓存”。这有什么值得担心的吗?当我刷新 Firefox 时,图像似乎没有被缓存。它们看起来正在重新下载:

network response of PHP dynamic images

如果您能帮助理解这些 header ,我们将不胜感激。如果有一种简单的方法来确定图像是否从缓存中提取,我没有看到它。

最佳答案

PragmaCache-Control 请求 header 的含义相同,一个来自 HTTP 1.0,另一个来自 1.1。它用于告诉服务器或进行缓存的代理它需要资源的新版本。它不是为了告诉服务器浏览器不会缓存,或者浏览器不会遵守服务器响应的缓存控制。

最终,服务器可以告诉用户代理“这是资源,将其缓存 1 周”,但这仍然取决于用户代理(例如浏览器)是否遵守这一点。它总是可以每次都请求资源的未缓存版本,而不是不发送请求并加载本地缓存的副本。

关于apache - 了解 Firefox 开发者控制台(网络选项卡)中用于图像缓存控制的 "Response Headers"和 "Request Headers"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174415/

相关文章:

php - xampp 目录中不存在 Sendmail 文件夹?

apache - 如何将 Angular 4 应用程序部署到 apache htdocs?

php - 使用 RewriteRule 时发生内部服务器错误

.htaccess - 如何在多个目录级别上进行动态 .htaccess 重定向

.htaccess - HTTPS URL 中的 Codeigniter Index.php

java - 当共享 JDBC 缓存存储到位时,将 "numOwners"在 Infinispan 中设置为大于 1 是否有效?

apache - 以编程方式将用户名和密码发送到 Apache Web 服务器

node.js - 为什么 Node 需要缓存填满和泄漏

memory - 在 64 位计算机上安装 32 位操作系统是否会提高带宽?

apache - 如何设置xampp打开本地主机:8080 instead of just localhost