2008-10-07 34 views
11

我已經過壓縮我的JavaScript和我的CSS最佳實踐:包括(或<SCRIPT SRC =」

現在,哪一個更好

<script type="text/javascript"> 
<? 
    $r = file_get_contents('min.js'); 
    if($r) echo $r; 
?> 
</script> 

OR

<script type="text/javascript" src="min.js"></script> 

同樣的問題?對於CSS。

如果答案是'有時是因爲瀏覽器同時獲取文件?'哪些瀏覽器和示例是o f兩種情況下的時間。

+0

這是incorectly標記 'HTTP'。 – 2009-05-10 01:26:23

回答

22
<script type="text/javascript" src="min.js"></script> 

...更好,因爲用戶的瀏覽器可以緩存文件。

src添加參數(例如文件的上次修改時間戳)甚至更好,因爲用戶的瀏覽器將緩存文件,但在修改文件時始終會檢索最新的版本。

<script type="text/javascript" src="min.js?version=20081007134916"></script> 
+0

20-60%的用戶擁有一個空的緩存,有更少的HTTP請求或緩存的結果會更好嗎? – 2008-10-07 12:49:22

+0

*引用http://developer.yahoo.com/yui/compressor/ – 2008-10-07 12:49:54

6

因爲瀏覽器能夠緩存javascript/css文件,所以最好包含javascript和css文件。這樣,即使您將該文件包含在其他幾個頁面中,該文件也只能由瀏覽器加載一次。

但是,只有通過php或Apache mod_expires爲javascript和css文件設置適當的過期和/或緩存控制標頭時,纔會出現這種情況。

基於由雅虎卓越的性能recommondation只有一個例外:

,其中內聯最好唯一的例外是主頁,如雅虎的頭版和我的雅虎。每個會話只有很少(可能只有一個)頁面視圖的主頁可能會發現內嵌JavaScript和CSS可以縮短最終用戶的響應時間。

我強烈建議你試試插件「YSlow for Firebug」。它回答了很多關於緩存和瀏覽器/客戶端性能的問題。

參見:

Apache mod_expires

Best Practices for Speeding Up Your Web Site

YSlow

0

記住,瀏覽器可以從同一個域中下載最多兩個文件並行(這是在現代瀏覽器的默認 - 我確定IE6和IE7,不知道其他人)。這意味着如果你的頁面引用了20個微小的JavaScript文件,那麼很多會依次下載。

要添加到已經說過的內容:請記住,如果您合併/縮小您的JavaScript文件,最好將它們合併爲一個 - 壓縮效果會更好。此外,即使您不縮小文件,請記住在您的Web服務器配置中打開GZIP;那麼,如果將所有JS文件合併爲一個文件幷包含該文件,則GZIP壓縮效果最好(因爲將兩個JS文件壓縮在一起會比分別壓縮每個文件產生更好的結果)。

如果你正在尋找一個良好的JS縮小實用程序,嘗試JS帕克(http://dean.edwards.name/packer/