2009-08-20 46 views
1

我正在使用PHP腳本JSMin從服務前從我的JavaScript和CSS文件中刪除評論和空白。如果我設置如何通過JSMin PHP腳本通過正確的HTTP緩存服務文件(使用.htaccess?)

<script src="jsmin.php?file=myfile.js"> 

由於Last-Modified HTTP標頭從不檢查腳本,所以文件沒有被緩存。因此,爲了通過JSMin並運行文件(希望)啓用緩存,我使用的.htaccess以下設置:

RewriteEngine on 
RewriteRule ^.*$ jsmin.php?file=%{REQUEST_FILENAME} [NC,L] 

然後我就可以使用:

<script src="myfile.js"> 

,並得到效果JSMin。

Apache仍然沒有爲Last-Modified標頭提供文件,所以它仍然沒有被瀏覽器緩存。有沒有一種方法可以查看Apache中的If-Modified-Since標題,並且只有在相應的時間後修改了相關文件時才提供JSMin腳本?否則,我希望瀏覽器使用緩存版本。

+0

爲什麼不保存已經縮小版本的腳本並將其提供給客戶? – Gumbo 2009-08-20 19:09:14

回答

0

爲什麼不在部署前壓縮文件?在運行時壓縮它看起來更復雜和更慢。

我用http://developer.yahoo.com/yui/compressor/

+0

我已經考慮過這個問題,但這些文件的更換頻率很高,所以每次更新都會讓我們的團隊感到煩惱。運行JSMin的服務器開銷應該幾乎可以忽略不計,儘管如果它成爲一個問題,這似乎是正確的方法。 – Travis 2009-08-20 18:09:59

+1

你可以設置一個構建過程(可以用螞蟻說),並且按下按鈕就可以爲你準備整個可分發組件。它使事情變得更容易,更快,錯誤更少。 – cherouvim 2009-08-20 18:49:21

3

+1的構建過程。 部署應該是自動的。這使得結果可預測。

另外, 在URL中使用類似的文件路徑是要求別人去引用它並加載他們不應該訪問的文件。 考慮:

<script src="jsmin.php?file=../../../../../../../../../../../../../../etc/passwd"> 

如果你的腳本只是路過那個正跟在命令行你就麻煩了。