问题标签 [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.

0 投票
2 回答
813 浏览

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 秒的缓存中的资源时指定一个。

0 投票
2 回答
4513 浏览

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 一样吗?如果是,为什么我们需要两者?

0 投票
1 回答
189 浏览

ios - 唯一标识符的图像缓存最佳实践

我正在尝试构建一个应用程序,在其中将来自不同 URL 的图像列表下载到集合视图中。所有这些图像都存储在具有最大年龄和缓存限制的缓存中。我将 URL 存储为每个图像的密钥,以便在再次下载图像时检查图像是否已经存在,如果是,请检查最大年龄,但有人告诉我,将 URL 存储为 ID 是不好的做法。关于如何保存这些图像并在需要时检索它们的详细信息的任何建议?

0 投票
1 回答
1196 浏览

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

0 投票
1 回答
132 浏览

http-headers - 如果条件标头返回 304,max-age 会自动更新吗?

想象一个max-age60 秒的资源:

  • 1分钟后,浏览器发送一个条件头If-None-Match
  • 这将检查资源的 etag 是否已更改。
  • 如果 etag 没有改变,服务器会返回一个304 Not Modified响应。

此响应是否会自动添加新的 60 秒max-age?或者这是一个案例服务器需要明确处理。

0 投票
2 回答
263 浏览

symfony - API 平台 - 更改 max_age 配置值不会更改 max-age 请求值

我有一个带有 API 平台的应用程序和另一个使用我的 API 的应用程序。

我想更改 max-age 值,但是当我更改配置中的值时,它不会在我发送请求时更改值...

这是我的配置:

这是我的请求和响应标头: 请求和响应标头

告诉我我做错了什么。

0 投票
1 回答
606 浏览

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进行路由。

0 投票
0 回答
395 浏览

php - 无法在服务器上更新 css。显示 max-age=14400.how 覆盖禁用 htaccess

这是我的 htaccess 代码

我在浏览器上看到的甚至清除浏览器历史记录

在此处输入图像描述

0 投票
1 回答
2316 浏览

firefox - Mozilla firefox 忽略缓存控制标头

我正在我的应用程序中加载一些缩略图图像,这些缩略图图像存储在谷歌云上,我已将缩略图对象公开并设置cache-control: public, max-age:2628000,这似乎在 chrome 上工作,我看到图像正在从缓存中加载,但在 mozilla firefox 上这是不工作,每当我重新加载页面时,我总是看到图像是从服务器请求的。我还检查了我没有disable cache签入开发人员工具这里是截图

在此处输入图像描述

每次我看到传输的字节并且图像没有从缓存中加载。

对此的任何帮助将不胜感激。谢谢。

0 投票
1 回答
34 浏览

node.js - 尽管 Cache-Control 尚未过期,但客户端仍不断请求资产事件

我有一个简单的节点服务器,它将 Cache-Control max-age 设置为 1200 秒,并且客户端请求图像。即使 1200 秒还没有过去,如果我从服务器更改图像并刷新页面,图像将再次下载(即使 1200 秒还没有过去)。它应该从缓存中读取直到过期。

这是响应标头:

在此处输入图像描述

为什么会这样?