问题标签 [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.
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
?
google-cloud-storage - 设置自定义 Google Storage Bucket 范围的 max-age 标头
尊敬的前辈,我正在使用谷歌存储桶来存储我网站的静态内容。我希望将此内容缓存在 CDN 中,这就是我将存储桶公开的原因,这导致默认情况下将 https 标头 Cache-control 设置为 public 和 max-age 设置为 3600。我想为将上传到存储桶中的所有未来对象设置 max-age 为更高的值。我搜索了很多,但在网上找不到任何解决方案。如果有任何方法可以做到这一点,请指导我。
python - 如何为 flask_cors 设置 Access-Control-Max-Age?
在我的烧瓶应用程序中,我需要设置Access-Control-Max-Age
. 它的正确语法是什么?
safari - Safari 使用文件的陈旧副本
我有一个在服务器上经常更新的 javascript 文件(每小时)。它是网站用户在网站中使用的插件。每天提供数百万次。
为了让用户获得最新的副本,我使用了一个标题:
(Safari 不支持stale-while-revalidate所以它被忽略)。
更改文件时,所有浏览器都会在一小时内赶上,但 Safari 除外,其中一小部分用户继续使用旧版本的文件(可能是几周前)。似乎它是由返回用户(进入网站的用户,而不是一周后返回的用户)引起的。
尽管设置了 max-age,Safari 是否有任何理由使用旧版本的文件?
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 在组件安装后是否无法立即访问浏览器缓存?
caching - 设置 Cache-Control max-age=0 和 s-maxage= 不为零是否有意义?
有人评论了这个关于缓存的问题:
...使用 Cache-Control 值:max-age=0, s-maxage=604800 似乎可以在新页面内容上获得我想要的即时客户端更新行为,但仍然在 CDN 级别缓存
我真的会在 CDN 级别获得缓存并为我的用户提供即时更新吗?
是否有意义?这种组合如何运作?
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 和站点数据”。
我错过了什么?
session-cookies - 延长每个请求的关联 cookie 的生命周期
我们在我们的 kuberntes 集群中使用了一个 haproxy 入口,它具有 cookie 亲和性来处理粘性会话。
入口配置如下:
我们希望在每次请求/响应后延长cookie 的生命周期,但事实并非如此。在给定的 Max-Age 期间,我们只接收一次 cookie(对于第一个请求)。
这种行为可以改变吗?
作为一种解决方法,我们删除了 Max-Age 属性 - 现在 cookie 与客户端会话一样长(例如,浏览器实例处于活动状态)。但这可能会导致阻止重新部署/更新集群中的 Pod,因为我们还使用了排水支持功能(如果客户端会话仍然处于活动状态,活动客户端可以再次到达同一个 Pod)。
http-headers - 如何在 Angular 13 中实现 max-age Cache 控制
我尝试了创建缓存拦截器的 .ts 文件并添加下面提到的代码的上述方法,但是当我在浏览器中检查相同的标题时,相同的代码没有出现在我的标题中。我想设置一个 max-age,以便在部署 Angular PWA 后遇到问题的客户及时清除缓存。
这是我的 cache.interceptor.ts
这是我的 app.module.ts