Chrome 未缓存 css 文件。缓存适用于 .js/.png 文件。
Chrome not caching css file. The caching works for .js/.png files.
我观察到 CSS 文件没有在 Chrome 浏览器上缓存。我的应用程序由 Angular-CLI 构建,所有必需的 cache-control headers 和 Expires header 设置为 5 分钟:
Accept-Ranges:bytes
Cache-Control:max-age=600
Content-Encoding:gzip
Content-Type:text/css
Date:Wed, 13 Sep 2017 05:11:17 GMT
ETag:W/"441246-1505278984000"
Expires:Wed, 13 Sep 2017 05:21:18 GMT
Last-Modified:Wed, 13 Sep 2017 05:03:04 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Vary:Accept-Encoding
设置为相同响应 header 的 JS 文件按预期进行缓存。 css 文件也缓存在 Firefox Mozilla 中。
我搜索了这些帖子,很少有帖子建议是:
如果存在任何 SSL 错误,Chrome 有时不会缓存提供 self-signed 证书和使用 HTTPS 的资源。但就我而言,所有其他文件,如 .js、.png 文件都在同一通道上运行并被缓存。
Transfer-Encoding: chunked
是否导致 chrome 上的缓存出现问题?不过它在 FireFox 中运行良好。
gzip 压缩不适用于 Chrome:https://github.com/expressjs/compression/issues/64
任何pointers/suggestions?
我在一个网站上遇到了同样的问题,但是将同一个网络应用程序部署到另一个网站(在同一个 IIS 上)服务器上,我得到了所有缓存。
回收应用程序池没有帮助。
只有在停止和启动 IIS 后,两个网站现在才在 Chrome 中缓存 CSS 和 JS 文件。打不过我,但你可以试一试。
似乎 Chrome 没有缓存资源文件,如果它有 Transfer-Encoding:chunked
响应 header。即使资源文件很小,也会设置此响应 header。我认为 header 是根据 http 服务器配置自动设置的。此配置可以基于文件的大小等。
由于我无法控制服务器配置来设置任何 HTTP 协议设置,我
最终设置响应 header:Transfer-Encoding: identity
。
对于此响应 header,http 服务器不会进一步修改 header,并且也会添加 Content-Length
header。通过 Content-Length
header 响应,Chrome 清楚地表明资源文件可以被缓存。
不确定这是否是您的情况,但我遇到了同样的问题,并且当我开始为域使用正确的 SSL 证书时问题消失了。
我观察到 CSS 文件没有在 Chrome 浏览器上缓存。我的应用程序由 Angular-CLI 构建,所有必需的 cache-control headers 和 Expires header 设置为 5 分钟:
Accept-Ranges:bytes
Cache-Control:max-age=600
Content-Encoding:gzip
Content-Type:text/css
Date:Wed, 13 Sep 2017 05:11:17 GMT
ETag:W/"441246-1505278984000"
Expires:Wed, 13 Sep 2017 05:21:18 GMT
Last-Modified:Wed, 13 Sep 2017 05:03:04 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Vary:Accept-Encoding
设置为相同响应 header 的 JS 文件按预期进行缓存。 css 文件也缓存在 Firefox Mozilla 中。 我搜索了这些帖子,很少有帖子建议是:
如果存在任何 SSL 错误,Chrome 有时不会缓存提供 self-signed 证书和使用 HTTPS 的资源。但就我而言,所有其他文件,如 .js、.png 文件都在同一通道上运行并被缓存。
Transfer-Encoding: chunked
是否导致 chrome 上的缓存出现问题?不过它在 FireFox 中运行良好。gzip 压缩不适用于 Chrome:https://github.com/expressjs/compression/issues/64
任何pointers/suggestions?
我在一个网站上遇到了同样的问题,但是将同一个网络应用程序部署到另一个网站(在同一个 IIS 上)服务器上,我得到了所有缓存。 回收应用程序池没有帮助。
只有在停止和启动 IIS 后,两个网站现在才在 Chrome 中缓存 CSS 和 JS 文件。打不过我,但你可以试一试。
似乎 Chrome 没有缓存资源文件,如果它有 Transfer-Encoding:chunked
响应 header。即使资源文件很小,也会设置此响应 header。我认为 header 是根据 http 服务器配置自动设置的。此配置可以基于文件的大小等。
由于我无法控制服务器配置来设置任何 HTTP 协议设置,我
最终设置响应 header:Transfer-Encoding: identity
。
对于此响应 header,http 服务器不会进一步修改 header,并且也会添加 Content-Length
header。通过 Content-Length
header 响应,Chrome 清楚地表明资源文件可以被缓存。
不确定这是否是您的情况,但我遇到了同样的问题,并且当我开始为域使用正确的 SSL 证书时问题消失了。