网络浏览器是不是会通过 https 缓存内容

Posted

技术标签:

【中文标题】网络浏览器是不是会通过 https 缓存内容【英文标题】:Will web browsers cache content over https网络浏览器是否会通过 https 缓存内容 【发布时间】:2010-09-15 12:26:23 【问题描述】:

通过 https 请求的内容是否仍会被网络浏览器缓存,或者他们是否认为这种不安全的行为?如果是这种情况,是否有办法告诉他们可以缓存?

【问题讨论】:

是的,浏览器将通过 HTTPS 缓存内容检查此链接neopatel.blogspot.com/2010/02/… @KalpeshPatel,这取决于 user 设置。有些人已将 所有 HTTPS 页面 blogs.msdn.com/b/ieinternals/archive/2010/04/21/… 的缓存设置为禁用 【参考方案1】:

截至 2010 年,所有现代浏览器默认缓存 HTTPS 内容,除非明确告知不要这样做。

不需要设置cache-control:public 来实现这一点。

来源:Chrome、IE、Firefox。

【讨论】:

看来,总体趋势是允许缓存 HTTPS 对象;这通常是一件好事,因为开发人员应该告诉浏览器如果对象对隐私敏感,则根本不要缓存对象,并允许它在不缓存对象时这样做(例如图像,css,这对性能非常有利,尤其是在 HTTPS 上)。谢谢你。 在没有cache-control:public的情况下自动缓存HTTPS资源是否符合RFC? @Pacerier 浏览器考虑 RFC 文字“对 cme​​ts 的请求”。大多数情况下,RFC 会更改以反映浏览器上已有的内容。【参考方案2】:

默认情况下,Web 浏览器应该像通过 HTTP 一样通过 HTTPS 缓存内容,除非通过收到的 HTTP Headers 明确告知。

This link 很好地介绍了在 HTTP 标头中设置缓存设置。

有没有办法告诉他们可以缓存?

这可以通过将Cache-Control 标头中的max-age 值设置为非零值来实现,例如

Cache-Control: max-age=3600

会告诉浏览器这个页面可以缓存3600秒(1小时)

【讨论】:

如果用户访问mysite.com并下载style.css,当他们访问mysite.com时会再次请求style.css吗? 我不确定我们是否都在同一页面上。我们是在谈论默认情况下是否会缓存 HTTPS 内容,还是在询问是否会在假设某些 HTTP 响应标头的情况下对其进行缓存?您从 Mark Nottingham 链接到的 Web 缓存教程链接实际上表明安全(即 HTTPS)或经过身份验证的内容不会被缓存,除非缓存控制标头表明它是公共内容。 偶然发现一篇不错的文章:blog.httpwatch.com/2011/01/28/top-7-myths-about-https Firefox 多年前删除了对 Cache-Control: public 的要求。 这句话“网络浏览器应该通过 HTTPS 缓存内容”对我来说是错误的。他们为什么要这么做?另外,请查看来自 chromium 团队“code.google.com/p/chromium/issues/detail?id=110649#c6”的人员下方的评论,他说“实际上没有缓存(在持久缓存上)”【参考方案3】:

Https 默认被缓存。这是由应用程序定义的缓存指令无法覆盖的全局设置管理的。要覆盖全局设置,请在控制面板中选择 Internet 选项小程序,然后转到高级选项卡。选中“安全”部分下的“不将加密页面保存到磁盘”框,但单独使用 HTTPS 对 IE 是否决定缓存资源没有影响。

WinINet 只缓存 HTTP 和 FTP 响应而不是 HTTPS 响应。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383928%28v=vs.85%29.aspx

【讨论】:

以上是关于网络浏览器是不是会通过 https 缓存内容的主要内容,如果未能解决你的问题,请参考以下文章

CDN缓存

Android WebView 不缓存 HTTPS 内容

缓存初探

webpack指南

CDN 相关

没有 createOffer/Answer 的 WebRTC 是不是可以在本地网络上使用?