我有以下配置(对于 Angular 应用程序):
location / {
try_files $uri /index.html;
add_header "Cache-Control" "no-cache" ;
}
Run Code Online (Sandbox Code Playgroud)
现在我想仅为index.html,但不为任何其他文件添加该标头。怎么做?
Chrome devtools 网络选项卡显示与缓存资源文件大小相同的“通过网络传输的数据”值。如果我阻止上图中出现的最后一个请求,则不会加载图片,但第二个请求仍然显示传输了相同数量的数据。如何知道图像资源是否真正从缓存中提取并节省了带宽?
注意:我正在使用 max-age 缓存控制策略,并且在 Firefox 中它显然有效。
caching cache-control http-headers google-chrome-devtools max-age
如果源站 Web 服务器将响应标头中的 expires 值设置为相对较久以前传递的时间,会发生什么情况。
例如,考虑当前时间是格林威治标准时间 2013 年 1 月 25 日星期五,并且过期标头设置为 -->
到期:1994 年 12 月 1 日星期四 16:00:00 GMT
客户端将如何响应上述实例?
任何帮助,将不胜感激
这是我的 htaccess 缓存控制策略:
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico)$"> Header set Cache-Control "max-age=31536000" </FilesMatch>
<FilesMatch "\.(js|css|pdf|swf)$"> Header set Cache-Control "max-age=31536000" </FilesMatch>
<FilesMatch "\.(html|htm|txt)$"> Header set Cache-Control "max-age=600" </FilesMatch>
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch>
<FilesMatch "\.(eot|otf|ttf|woff|woff2|svg)$"> Header set Cache-Control "max-age=31536000" </FilesMatch>
Run Code Online (Sandbox Code Playgroud)
现在,对于 webp 图像是否可以设置缓存控制指令?
非常感谢
我正在使用 jboss Server 7.1.1 来部署 java web 应用程序。对于 js、css、字体文件,浏览器缓存不会随着新的更改而更新。每次我们都坚持要求客户清除浏览器中的缓存以使新的更改生效。
是否有任何我可以配置的配置,以便在部署新代码时我可以引导所有请求提供更新的文件?
通过谷歌搜索这个主题,我发现我们可以编写自定义方法来设置电子标签值。有什么配置可以帮助我做到这一点吗?
大多数时候我们都会进行热部署(在 jboss 管理控制台中上传 war 文件,无需停机)。所以我怀疑在热部署期间自定义电子标签是否会更新,因为我们在服务器启动时配置了它。
或者有没有办法在 Web 应用程序的 web.xml 文件中处理它?
我需要一个可以使用浏览器缓存的解决方案,直到下次部署 js、css 和字体文件。我不知道如何设置“过期”标题。因为我们没有固定的部署周期。
如果您需要更多信息才能找到解决方案,请告诉我。
我从Lighthouse得到以下信息:
如何更改Nuxt.js SSR 网站上的缓存 TTL?我找到了一些答案,但没有找到关于 Nuxt.js 的信息...
重要提示:部署在 Google App Engine 中
我有一个网站,其中包含不会更改的静态资产(js、图像等)。这些资源中的每一个都具有带有以下属性的缓存控制标头集:
cache-control: public, max-age=31536000, immutable
Run Code Online (Sandbox Code Playgroud)
但是,当我重新加载页面时,我仍然看到来自服务器的 200 响应,而不是 304 响应。浏览器指示正在从内存或磁盘缓存提供资源,但它仍在发出请求并下载内容。这以前是有效的,我倾向于这是一个浏览器错误,但我不完全确定。
http cache-control http-status-code-304 http-status-code-200
我目前正在使用 Cypress 6.4.0,它启动我的 Angular 应用程序。这个Angular应用程序在开始时调用后端的时间同步路由。我们通过以下方式拦截此调用:
cy.wait('/api/t', { requestTimeout: 10_000 }).then((req) => {
expect(req.response!.statusCode).to.equal(200);
// some extra stuff...
});
Run Code Online (Sandbox Code Playgroud)
这对于第一次测试有效,但第二次测试总是失败。我检查了网络日志,似乎第二个响应来自浏览器缓存。我首先认为后端或 Angular 的缓存删除了pragma和no-cache标头,但是当在没有 Cypress 的情况下运行应用程序时,标头就在那里。
我的测试中有两个测试,第二个测试失败了。或者,如果我有 1 个测试,并使用R.
那么,有没有办法禁用 Cypress 中的缓存呢?
我正在尝试在某些字段上设置静态cacheControl,如此处所示
根据我的理解,我需要使用指令,因此我使用以下嵌套文档来声明指令
因此,我构建了一个 cacheControl 指令,这就是我的 GraphQLModule.forRootAsync 在 buildSchemaOptions 中的内容:
buildSchemaOptions: {
directives: [
new GraphQLDirective({
name: 'cacheControl',
locations: [
DirectiveLocation.FIELD_DEFINITION,
DirectiveLocation.OBJECT,
DirectiveLocation.INTERFACE,
DirectiveLocation.UNION
],
args: {
maxAge: { type: GraphQLInt },
scope: {
type: new GraphQLEnumType({
name: 'CacheControlScope',
values: {
PUBLIC: {
astNode: {
kind: 'EnumValueDefinition',
description: undefined,
name: {
kind: 'Name',
value: 'PUBLIC'
},
directives: []
}
},
PRIVATE: {
astNode: {
kind: 'EnumValueDefinition',
description: undefined,
name: {
kind: 'Name',
value: 'PRIVATE'
},
directives: []
} …Run Code Online (Sandbox Code Playgroud) 我不明白must-understandHTTPCache-Control标头的指令。有哪些示例说明何时使用此功能,以及服务器可能使用缓存可能理解或不理解的哪种状态代码?
响应
must-understand指令指示缓存仅在根据状态代码了解缓存要求时才应存储响应。
must-understandno-store应该与后备行为结合起来。Run Code Online (Sandbox Code Playgroud)Cache-Control: must-understand, no-store如果缓存不支持
must-understand,它将被忽略。如果no-store也存在,则不存储响应。如果缓存支持
must-understand,它会根据其状态代码来存储响应并了解缓存要求。
RFC 9111中也对其进行了正式描述:
必须理解的响应指令将响应的缓存限制为能够理解并符合该响应状态代码要求的缓存。
包含必须理解指令的响应还应该包含 no-store 指令。当实现“必须理解”指令的缓存收到包含该指令的响应时,如果缓存理解并实现了状态代码的缓存要求,则它应该忽略“无存储”指令。
尽管有这些描述,我仍然不知道该指令在什么情况下有用。
cache-control ×10
caching ×3
http ×3
http-headers ×3
.htaccess ×1
angular ×1
code-first ×1
cypress ×1
etag ×1
graphql ×1
java ×1
jboss ×1
lighthouse ×1
max-age ×1
nestjs ×1
nginx ×1
nuxt.js ×1
webp ×1