Cookie 结构中的 Expires 和 Max-Age 有什么区别?我无法理解。
type Cookie struct {
Name string
Value string
Path string // optional
Domain string // optional
Expires time.Time // optional
RawExpires string // for reading cookies only
// MaxAge=0 means no 'Max-Age' attribute specified.
// MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'
// MaxAge>0 means Max-Age attribute present and given in seconds
MaxAge int
Secure bool
HttpOnly bool
SameSite SameSite
Raw string
Unparsed []string // Raw text of unparsed attribute-value pairs
}
Run Code Online (Sandbox Code Playgroud) Chrome devtools 网络选项卡显示与缓存资源文件大小相同的“通过网络传输的数据”值。如果我阻止上图中出现的最后一个请求,则不会加载图片,但第二个请求仍然显示传输了相同数量的数据。如何知道图像资源是否真正从缓存中提取并节省了带宽?
注意:我正在使用 max-age 缓存控制策略,并且在 Firefox 中它显然有效。
caching cache-control http-headers google-chrome-devtools max-age
max-age在阅读Http Cache rfc后,我对行为有疑问.
场景:
用户代理
GET /foo
Run Code Online (Sandbox Code Playgroud)
Origin Server Response标头
cache-control: max-age=120
Run Code Online (Sandbox Code Playgroud)
服务器告诉用户代理在2分钟后应该重新验证所请求的资源.
1分钟后,用户代理发出另一个请求,指定max-age1分钟:
用户代理
cache-control: max-age=60
GET /foo
Run Code Online (Sandbox Code Playgroud)
据我所知,此请求应绕过用户代理缓存.
为什么?
虽然Origin Server告诉客户端资源应缓存2分钟,但用户代理需要一个最多1分钟的资源(max-age = 60).
从第一个开始经过1分钟和几秒钟后GET,该资源无效(从用户代理的角度来看),请求应直接进入原始服务器(或任何其他缓存层).
我对吗?是否可以从用户代理指定max-age大于零?它是否受到常见浏览器的支持/尊重?
在我工作的地方,我们有一个.NET自定义缓存机制,就像这样工作; 客户端可以指定max-age何时需要来自缓存的资源,该资源是"AT MOST"X秒.
我正在我的应用程序中加载一些缩略图图像,这些缩略图存储在谷歌云上,我已将缩略图对象公开并设置cache-control: public, max-age:2628000,这似乎在 chrome 上工作,我看到图像正在从缓存加载,但在 mozilla firefox 上这是不起作用,每当我重新加载页面时,我总是看到图像是从服务器请求的。我还检查了我没有disable cache签入开发人员工具,这是一个屏幕截图
每次我看到字节传输并且图像没有从缓存加载。
对此的任何帮助将不胜感激。谢谢。
:如果我设置的服务器响应,会发生什么
Cache-Control: private,no-cache,max-age=900?如果标题如下,会发生什么
Cache-Control: public,no-cache,max-age=900?
既然它有no-cache浏览器(或代理服务器)是否考虑max-age?
Cache-control: max-age=0两个 header和之间的浏览器行为有什么区别Cache-control: max-age=-1?
如果浏览器收到 max-age=0,它将立即重新验证缓存。如果浏览器收到 max-age=10,它将在 10 秒后重新验证缓存。max-age=-1 时浏览器的行为是什么?和 max-age=0 一样吗?如果是,为什么我们需要两者?