2011-04-21 142 views
3

令人沮喪。 :PTomcat正在爲JS和CSS文件設置no-cache

真的希望這些緩存在用戶的瀏覽器上,但它是設置它。

的Cache-Control:無店鋪,無緩存, 必重新驗證,檢查後= 0, 前檢查= 0

如何停止?

我試着在我們的設置中查找與緩存相關的任何內容。根據文檔使用所有默認值,這意味着它是允許的。像JS和CSS的靜態文件是不同的?

編輯: 我注意到一些JS文件被允許緩存,因爲Chrome說他們是從緩存中「檢索」。但是沒有CSS文件。

回答

1

或者您可以讓servlet在響應中設置緩存過期和上次修改的標頭。

我也推薦GZIP壓縮JavaScript和CSS。 Tomcat的/ examples目錄中帶有一個壓縮過濾器,您可以通過它導入適當的URL。

您應該結合並縮小JavaScript和CSS以獲得更好的性能。

所有這些都是來自Firefox的YSlow插件的建議。您可以看到這些措施使用Firebug插件的效果如何。

+0

我們已經gzipping CSS和Javascript文件。我們也在考慮縮小我們的JS。 – bobber205 2011-04-21 22:43:41

+0

原來這是這裏描述的最明顯的地方。 :D不知道我怎麼可能錯過它嘿嘿。我們正在設定我想要自己手動離開的選項。 – bobber205 2011-04-22 23:48:24

1
<FilesMatch "\.(js|css)$"> 
    ExpiresDefault "now plus 1 week" 
</Files> 

在你的Apache配置應該做的伎倆,只要它是 Tomcat配置的東西后某處

+0

我們沒有使用Apache,或者至少我沒有權限訪問生產機器。 – bobber205 2011-04-21 22:44:11

1

你可以編寫你自己的緩存過濾器,並在你的web xml中配置它。

Here您會發現一個基本但很好的示例,說明如何實現它。

<filter> 
    <description>Set HTTP headers for a mapping.</description> 
    <filter-name>CacheFilter</filter-name> 
    <filter-class>your.package.CacheFilter</filter-class> 
    <init-param> 
     <description>Adds an expires header to the response</description> 
     <param-name>header</param-name> 
     <param-value>Expires: Thu, 26 Apr 2012 20:00:00 GMT</param-value> 
    </init-param> 
</filter> 

然後映射它(它適用於響應):

web.xml你聲明你的過濾器

<filter-mapping> 
    <filter-name>CacheFilter</filter-name> 
    <url-pattern>*.js</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>CacheFilter</filter-name> 
    <url-pattern>*.css</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

您可能還需要使用壓縮過濾器(同樣的方式) ,以減少從服務器發送的數據的負載。這implementation of a gzip filter多年來爲我工作(沿緩存過濾器),從來沒有任何問題。

+0

Tomcat附帶一個壓縮過濾器;我會推薦使用它。還有一個緩存過濾器?你擔心線程安全嗎?我會。 – duffymo 2011-04-23 00:22:35

相關問題