问题标签 [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 投票
1 回答
718 浏览

google-chrome - HTTP 请求中的缓存:ETag 与 max-age

我有一个 SPA,它使用来自后端服务器的一些静态资产。出于某种原因,我选择了ETag验证作为缓存机制。简而言之,我希望浏览器将资产永久保存在其缓存中,只要相关ETag的 s 保持不变。

为了向浏览器发出关于缓存的信号,Cache-Control响应中必须存在标头。对我来说,这绝对是可以理解的,但让我感到困惑的是,我也必须max-age在标题中提供。换句话说Cache-Control=public,不起作用,而Cache-Control=public, max-age=100正确的标题。

在我看来,这听起来很矛盾。If-Not-Match={ETag} 浏览器在请求时查询服务器以查看资产是否已更改。那么这里的作用是什么max-age

0 投票
1 回答
102 浏览

google-cloud-storage - 设置自定义 Google Storage Bucket 范围的 max-age 标头

尊敬的前辈,我正在使用谷歌存储桶来存储我网站的静态内容。我希望将此内容缓存在 CDN 中,这就是我将存储桶公开的原因,这导致默认情况下将 https 标头 Cache-control 设置为 public 和 max-age 设置为 3600。我想为将上传到存储桶中的所有未来对象设置 max-age 为更高的值。我搜索了很多,但在网上找不到任何解决方案。如果有任何方法可以做到这一点,请指导我。

0 投票
1 回答
292 浏览

python - 如何为 flask_cors 设置 Access-Control-Max-Age?

在我的烧瓶应用程序中,我需要设置Access-Control-Max-Age. 它的正确语法是什么?

参考:https ://flask-cors.readthedocs.io/en/latest/api.html

0 投票
0 回答
35 浏览

safari - Safari 使用文件的陈旧副本

我有一个在服务器上经常更新的 javascript 文件(每小时)。它是网站用户在网站中使用的插件。每天提供数百万次。

为了让用户获得最新的副本,我使用了一个标题:

(Safari 不支持stale-while-revalidate所以它被忽略)。

更改文件时,所有浏览器都会在一小时内赶上,但 Safari 除外,其中一小部分用户继续使用旧版本的文件(可能是几周前)。似乎它是由返回用户(进入网站的用户,而不是一周后返回的用户)引起的。

尽管设置了 max-age,Safari 是否有任何理由使用旧版本的文件?

0 投票
1 回答
2401 浏览

javascript - Axios GET 请求忽略响应 Cache-Control max-age

我已将服务器响应配置为包含Cache-Control: max-age=<some number>在多个端点上。我在前端使用 Axios 在这些端点上发出 AJAX 请求。当我刷新页面时,从浏览器缓存中正确提取了一些请求,但其中两个总是再次访问服务器。

拒绝从缓存中提取的两个请求总是相同的。
我检查了浏览器缓存,响应确实被缓存了。
Axios 添加max-age=0了两个有问题的请求的标头,但没有添加其他三个,如果我向 Axios 请求添加自定义标头:

该请求通过以下Cache-Control标头进行:

它再次忽略缓存的数据。

鉴于有问题的响应实际上是由浏览器缓存的,问题似乎出在 Axios 请求上。但是命中缓存的请求看起来与缺少缓存的请求完全相同。如果我可以提供任何其他信息来帮助诊断,请告诉我。

编辑:我正在使用 VueJS。我注意到,在 Vue 组件挂载后,两个从未访问浏览器缓存的请求被触发。这很重要吗?Vue 在组件安装后是否无法立即访问浏览器缓存?

0 投票
1 回答
381 浏览

caching - 设置 Cache-Control max-age=0 和 s-maxage= 不为零是否有意义?

有人评论了这个关于缓存的问题:

...使用 Cache-Control 值:max-age=0, s-maxage=604800 似乎可以在新页面内容上获得我想要的即时客户端更新行为,但仍然在 CDN 级别缓存

我真的会在 CDN 级别获得缓存并为我的用户提供即时更新吗?

是否有意义?这种组合如何运作?

0 投票
0 回答
18 浏览

google-chrome - Chrome 忽略云前端的缓存控制

我在云前端后面有一个网站。在云端,我们使用 CachingOptimized 策略:
最小 TTL(秒)- 1
最大 TTL(秒)- 31536000
默认 TTL(秒)- 86400

在 S3 对象中,我通过cache-control: s-maxage=86400,max-age=0 查看 aws文档,在这种情况下,云前端应该缓存 24 小时,浏览器根本不应该缓存。

Chrome 浏览器会忽略它。我找到了这个。但在我的情况下,chrome 只有在所有窗口完全关闭后才会进入原点。在新选项卡或新窗口中打开页面没有帮助。在 Cognito 中,它确实重新验证了内容

我检查并没有在我的浏览器中启用“关闭所有窗口时清除 cookie 和站点数据”。

我错过了什么?

0 投票
1 回答
276 浏览

caching - 如何知道资源是否真正从 chrome devtools 的缓存中加载?

在此处输入图像描述

Chrome devtools 网络选项卡显示相同大小的缓存资源文件的“通过网络传输的数据”值。如果我阻止出现在上图中的最后一个请求,则不会加载图片,但第二个请求仍然显示传输了相同数量的数据。如何知道图像资源是否真的从缓存中提取并节省了带宽?

注意:我使用的是 max-age 缓存控制策略,在 Firefox 中它显然可以正常工作。

0 投票
0 回答
69 浏览

session-cookies - 延长每个请求的关联 cookie 的生命周期

我们在我们的 kuberntes 集群中使用了一个 haproxy 入口,它具有 cookie 亲和性来处理粘性会话。

入口配置如下:

我们希望在每次请求/响应后延长cookie 的生命周期,但事实并非如此。在给定的 Max-Age 期间,我们只接收一次 cookie(对于第一个请求)。

这种行为可以改变吗?

作为一种解决方法,我们删除了 Max-Age 属性 - 现在 cookie 与客户端会话一样长(例如,浏览器实例处于活动状态)。但这可能会导致阻止重新部署/更新集群中的 Pod,因为我们还使用了排水支持功能(如果客户端会话仍然处于活动状态,活动客户端可以再次到达同一个 Pod)。

0 投票
0 回答
90 浏览

http-headers - 如何在 Angular 13 中实现 max-age Cache 控制

我尝试了创建缓存拦截器的 .ts 文件并添加下面提到的代码的上述方法,但是当我在浏览器中检查相同的标题时,相同的代码没有出现在我的标题中。我想设置一个 max-age,以便在部署 Angular PWA 后遇到问题的客户及时清除缓存。

这是我的 cache.interceptor.ts

这是我的 app.module.ts