2017-09-13 148 views
2

我在觀察,CSS文件沒有在Chrome瀏覽器上緩存。我的應用程序是由角CLI和所有需要的緩存控制標頭構建和Expires頭設置爲5分鐘:Chrome沒有緩存css文件。緩存適用於.js/.png文件。

被設定相同的響應頭是否如預期般高速緩存
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 

JS文件。 css文件也在Firefox Mozilla中緩存。 我搜索過的帖子和幾個崗位的建議是:

  1. 資源呈現自簽名的證書,並與HTTPS工作並不由Chrome緩存有時如果有任何SSL錯誤。但在我的情況下,所有其他文件,如.js,.png文件都在相同的頻道上運行並被緩存。

  2. Transfer-Encoding: chunked在chrome上導致任何問題?它在FireFox中工作正常。

  3. gzip壓縮不適用於Chrome運行良好:https://github.com/expressjs/compression/issues/64

任何指針/建議嗎?

回答

1

看起來,Chrome不會緩存資源文件,如果它有Transfer-Encoding:chunked響應標頭。即使資源文件的大小很小,此響應標題也會被設置。我認爲頭根據http服務器配置自動設置。此配置可能基於文件的大小等。

由於我無法控制服務器配置以設置任何HTTP協議設置,因此,我在 的最後設置了響應標頭:Transfer-Encoding: identity。 使用此響應標頭,http服務器不會進一步修改標頭並將其放在Content-Length標頭中。用Content-Length標題作爲迴應,給Chrome一個清晰的圖片,可以緩存資源文件。

0

我在一個網站上有同樣的問題,但部署相同的Web應用程序到另一個網站(在同一個IIS)服務器上,我得到一切緩存。 回收應用程序池並沒有幫助。

只有在停止並啓動IIS之後,兩個網站才能在Chrome中緩存CSS和JS文件。打敗我,但你可以試試看。

+0

是的,你可能是對的。它與HTTP服務器上的配置有關。在我的情況下,我沒有自由/訪問服務器配置,所以我爲JS文件設置了響應頭「Transfer-Encoding:identity」。 – Nilesh