问题标签 [cache-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - 如果未指定,缓存的静态文件何时过期?
在 IIS6 中,我注意到当“启用内容过期”未启用时,不会随响应发送缓存相关或过期标头。然而,静态内容(例如 css 文件)在后续访问时会正确返回 304 状态。
如果未指定任何内容,此内容何时过期?它依赖于浏览器吗?
http - 缓存控制:私有和公共
如果服务器返回,http 客户端应该怎么做Cache-Control: private, public
?
我有一种感觉private
应该覆盖public
,但我在 RFC 中找不到确认(除了MUST
inprivate
和MAY
in public
)。
ruby-on-rails - CSV 下载在第一次尝试时使用 Internet Explorer 失败,在后续尝试中有效
这已经让我失望了太久了..
下面发布的是我们的 Rails 3 控制器。
首次尝试使用 Internet Explorer 访问时,下载提示失败并显示“无法下载”消息。
当尝试立即访问相同的 URL 时,下载提示成功。
在任何情况下,Cache-Control 标头都没有正确发送。我们为 Rack Response 提供了一个特定的值,但 Cache-Control 总是作为“Cache-Control: no-cache”返回。但是,提供的其他标头值正在正确发送。这可能是一个单独的问题,但无论如何都会让我失望。
下面的示例模拟了我们的实际系统如何处理客户数据。CSV 启动并流式传输到客户端。下载是渐进的,以避免在 CSV 生成完成时等待很长时间。这些文件可能超过 20-30mb,因此在下载开始前等待几分钟是不可取的。
这似乎适用于所有其他浏览器(firefox、safari 等)。
http - 在“Cache-Control: no-cache, must-revalidate”中使用“must-revalidate”是多么必要
我经常使用
或者
规范说must-revalidate
是为了max-stale
......(服务器问题max-stale
?)
因此,如果对于普通的 Web 服务器、Apache 或带有 Mongrels 的 Rails,那么我认为通常没有max-stale
,所以must-revalidate
不需要?
html - 如何将到期日期添加到 img 标签?
我正在使用 Page Speed Firebug 扩展来帮助提高页面性能。我有一个图像重的页面,它提出的建议之一是:
利用浏览器缓存以下可缓存资源的新鲜度很短。为以下资源指定至少一周后的到期时间:
我知道您可以在整个页面上设置 Expires 或 Cache-Control 标头,但是如何为特定元素添加过期时间?甚至有可能,还是我误解了 Page Speed 的建议?
apache - Squid 配置以确保 HTTP 标头与缓存内容的标头匹配
我们有这样的云设置:
我们在某些页面上支持 SSL,而在其他页面上不支持。perlbal 层之外的所有内容都只处理未加密 HTTP 上的请求,因为 perlbal 解包 SSL,但它确实添加了一个X-Forwarded-Proto
标头,以便应用程序知道是否使用了 SSL。
如果请求通过 HTTP 访问应用程序 (Apache),则当该特定页面需要 SSL 时,它会重定向到 HTTPS。
当对安全资源的请求到达我们的应用程序时,如果应用程序发送Cache-Control: public
,squid 会正确缓存该内容。问题是,如果用户在缓存后尝试访问该资源的 HTTP 版本,squid 会将其作为缓存 HIT 处理并通过 HTTP 返回缓存的资源,而实际上我们需要将其视为缓存 MISS,因为 X -Forwarded-Proto 与原始请求不匹配。
这是怎么做到的?我们的应用程序发送:
我很难找到任何关于此的文章/文档,这个 Vary 标题似乎是其他人建议的,但它不起作用。Squid 提供缓存的内容,不管 X-Forwarded-Proto 标头是否指示 SSL 或其他。
php - PHP 缓存控制 - 可以避免从浏览器到相同 url 的任何连接?
如果正确设置了第一个响应标头,是否可以完全避免来自浏览器的任何连接?
我试图设置它,但请求仍然到达服务器。
我发现了这个:
Expires 标头的优点是易于实现;然而,在大多数情况下,除非您是一个组织严密的人,否则您不会确切知道您网站上的给定页面何时会更新。由于浏览器只会在页面过期后才联系服务器,因此无法告诉浏览器他们缓存的页面已过期。此外,您还会丢失一些关于访问您网站的流量的信息,因为浏览器在请求已缓存的页面时不会与服务器联系。
问题是,为什么我上面提到的 Expires 标头不起作用?
** 请求标头 **
** 响应标头 **
caching - 你能让浏览器假设内容是有效的/从它的缓存中提供它吗?消除304
是否可以设置 apache 来提供标头组合,以便客户端(浏览器)将:
- 看到内容被标记为有效(例如图像从现在起 10 年过期)
- 缓存中有内容
- 不会询问服务器“该内容是否有效” - 因为它总是会获得 http 304 状态
基本上,是否可以告诉浏览器“不要询问服务器该图像是否有效,如果您的缓存中有它,则意味着它是有效的,没有例外!”?
php - 页面缓存理论——这行得通吗?
我想在我的网站上设置浏览器缓存。问题是缓存只适用于访客,而不是登录用户。我知道我可以根据用户的登录状态抛出不同的标题,但是缓存将如何处理呢?我会冒客人看到用户内容的风险吗?
更新
我在说的是,如果我为所有客人抛出一个最后修改的标题,并为所有登录用户强制一个新页面。我想这只会有很大帮助......如果所有客人都可以共享代理缓存并且所有成员都可以坚持使用新页面,我希望它,但我认为这不会奏效。
@Victor 和 @klausbyskov 如何在他们的回复中获得 +1,他们似乎在说相反的话。
php - 无法删除 XML 文件
背景:
我的网页通过 AJAX/jQuery 从 XML 文件加载条目并显示它们(工作正常)
该页面还有一个通过 AJAX/jQuery 提交到 PHP 文件的表单,该文件写入 XML 文件,然后通过 AJAX/jQuery 重新加载 XML 条目并显示它们(工作正常)
我有以下奇怪的问题:
如果我通过 FileZilla 删除 XML 文件,或者尝试通过从本地计算机上传副本来覆盖 XML 文件,则当我查看我的页面时,条目根本不会改变。事实上,如果用新副本覆盖 XML 文件,如果我在地址栏中导航到它,我会看到新副本:http://mysite.com/myxmlfile.xml但是,在显示 XML 的页面中条目,旧条目(如文件从未被覆盖/删除)仍然显示!
使困惑!
这是我的 PHP 文件:
这是我的 JS 文件: