2010-12-15 46 views

回答

3

如果你使用Apache,那麼這樣的事情是要走的路。根據所安裝的模塊,有幾種不同的方法來完成它。一些比其他人更容易。我建議expiresdocs)和headersdocs)模塊(他們都需要下面的例子,但你只能與headers把它關閉,如果你真的想)。

<LocationMatch "/js/(.*)\.js"> 
    ExpiresDefault "access plus 10 years" 
    Header set Cache-Control "public" 
</LocationMatch> 

這個例子匹配/ JS /所有文件擴展名爲.js爲此,並設置了10年的到期時間到未來相對於文件被訪問的時間。它還明確將Cache-Control設置爲公開;我們運行所有東西over SSL,所以它可能不需要,但它不會以任何方式傷害你。

這個例子可以很容易地擴展,以配合您的CSS的位置和文件,以及;只需複製,粘貼並更改LocationMatch。

有很多網站,將讓你在這個完整的破敗的;看看這一個,「Caching Tutorial」,這似乎涵蓋了一切。

+0

這給了我一個內部服務器錯誤,我使用Apache – Zhianc 2010-12-17 02:59:39

+0

@jc,是否啓用了'expires'和'的Apache headers'模塊? – 2010-12-18 12:38:28

0

這取決於您使用的是什麼Web服務器。不過,它不能通過修改CSS或腳本文件來完成。

+0

我使用Apache ... – Zhianc 2010-12-17 03:00:31

3

/min/README.txt有documentation for sending far-future expires headers

Minify可以發送遠期(一年)Expires標題。爲了使這一點,你必須 將號碼添加到查詢字符串(例如/min/?g=js&1234/min/f=file.js&1234) 並改變它時,源文件被更改。如果你有一個構建過程,你可以使用一個構建/源代碼控制修訂版本號 。

您可以交替使用效用函數Minify_getUri()來獲得「版本化」 最小化URI以便在您的HTML中使用。

+0

我很困惑這是如何工作的。我的理解是,http規範要求瀏覽器始終使用查詢字符串獲取任何請求的全新副本。這不會打敗遠期的緩存嗎?或者是Minify通過使用標題指令來覆蓋它? – 2011-03-01 16:38:45

+0

'Cache-Control:max-age =#'允許緩存querystring資源。 .htaccess中有一個RewriteRule,所以「?」在URL中不是必需的,但這是針對某些較舊的代理緩存。 – 2011-03-02 22:21:44