问题标签 [max-age]
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.
http - 用户代理可以在其请求中设置大于零的 max-age 吗?
max-age
阅读 Http Cache rfc后,我对行为有疑问。
设想:
用户代理
源服务器响应标头
服务器告诉用户代理请求的资源应该在 2 分钟后重新验证。
1 分几秒后,用户代理发出另一个请求,指定 amax-age
为 1 分钟:
用户代理
据我了解,这个请求应该绕过用户代理缓存。
为什么?
虽然 Origin Server 告诉客户端该资源应该被缓存 2 分钟,但用户代理需要一个最多 1 分钟旧的资源 ( max-age = 60
)。
从第一次开始 1 分几秒后GET
,该资源无效(从用户代理的角度来看),请求应直接发送到源服务器(或任何其他缓存层)。
我对吗?是否可以从用户代理中指定max-age
大于零的值?普通浏览器是否支持/尊重它?
在我工作的地方,我们有一个像这样工作的 .NET 自定义缓存机制;max-age
客户端可以在需要“最多”X 秒的缓存中的资源时指定一个。
http - 缓存控制中的 max-age=0 和 max-age=-1 有什么区别?
Cache-control: max-age=0
两个标头和之间的浏览器行为有什么区别Cache-control: max-age=-1
?
如果浏览器接收到 max-age=0,它将立即重新验证缓存。如果浏览器接收到 max-age=10,它将在 10 秒后重新验证缓存。max-age=-1 的浏览器行为是什么?和 max-age=0 一样吗?如果是,为什么我们需要两者?
ios - 唯一标识符的图像缓存最佳实践
我正在尝试构建一个应用程序,在其中将来自不同 URL 的图像列表下载到集合视图中。所有这些图像都存储在具有最大年龄和缓存限制的缓存中。我将 URL 存储为每个图像的密钥,以便在再次下载图像时检查图像是否已经存在,如果是,请检查最大年龄,但有人告诉我,将 URL 存储为 ID 是不好的做法。关于如何保存这些图像并在需要时检索它们的详细信息的任何建议?
caching - 如果 Cache-Control 有 `no-cache` 和 `max-age=900` 会发生什么?
如果我将服务器响应设置为:会发生什么
Cache-Control: private,no-cache,max-age=900
?如果标题是这样的会发生什么:
Cache-Control: public,no-cache,max-age=900
?
既然它有一个no-cache
浏览器(或代理服务器)是否考虑max-age
?
http-headers - 如果条件标头返回 304,max-age 会自动更新吗?
想象一个max-age
60 秒的资源:
- 1分钟后,浏览器发送一个条件头
If-None-Match
- 这将检查资源的 etag 是否已更改。
- 如果 etag 没有改变,服务器会返回一个
304 Not Modified
响应。
此响应是否会自动添加新的 60 秒max-age
?或者这是一个案例服务器需要明确处理。
android - 未从 android 应用发出请求,设置了 max-age
我有一个 api,它返回一个对象作为响应,以及一个 etag 和 max age 作为标题。响应如下所示:
标题:
身体:
所需的场景是一个 android 应用程序发出请求以请求此数据。Api 返回数据以及 43200 秒的最大年龄。
如果在 43200 秒过去之前发出请求,则应用程序会缓存上一个响应中的数据。应用程序仍然发出请求,后端服务编译响应数据,使用请求的 etag 来确定响应数据是否已更改。如果数据已更改,则返回 200 http 状态和数据。否则返回 403 状态并且没有数据。
应用程序接收响应。它使用快速网络来处理缓存(我的安卓队友说)。如果返回 200 状态代码,则更新数据。否则,应用程序会保留旧数据。
如果在 43200 秒过后发出请求,则应用程序不再有缓存的响应或它的 etag。发出请求,即使数据中没有任何变化,数据也被视为“新”,状态码 200 与上面的 max-age 标头一起返回。
实际发生的情况:
由于某种原因,在处理完第一个请求并且应用程序接收到数据后,直到 43200 秒过去才发出请求。android 开发人员说他们看到发出请求并返回 0 字节,但是当我在服务器中监视请求时,我没有看到任何针对此 API 的请求。
这没有意义,因为 max-age 并不意味着没有请求。它只是指示应用程序在持续时间内将数据保留在缓存中。
我是否错过了缓存、etags 和 max-age 如何工作的想法?
后端内置在node js中,使用express进行路由。