2010-09-10 67 views
1

我有一個巨大的縮小的JavaScript文件(CSS同上)。我正在尋找在下載和緩存速度方面的一些優化。我想爲這兩個文件設置過期標題,這樣只需要2個HTTP調用就可以獲得它們(並且直到我在URL中更改其版本號)才希望它們被緩存。我的問題是 -Javascript和CSS - 壓縮和緩存

  1. 我在哪裏設置過期標題?我是否需要將其設置爲每個請求的響應的一部分?或者我需要將它設置在Web服務器設置中?
  2. 如何壓縮這些文件(JS和CSS)?我在哪裏以及如何指定它?壓縮是正常的.zip還是.tar.gz?如果這樣的話,另一端的普通瀏覽器會解壓並使用這些腳本?
  3. 是否可以將兩個JS + CSS放在一個文件中,縮小和壓縮它?這樣我可以通過一個HTTP請求來獲取?這會工作嗎?我的猜測不是,因爲JavaScript運行的標記是<script>,而CSS運行的是<link>標記。但是,仍然可以探索這種思路?也許可以使用Javascript本身來加載後動態插入DOM的DOM。但是這會對頁面加載產生怎樣的影響。由於瀏覽器在執行任何JavaScript之前將CSS應用於DOM。

任何幫助,建議,歡迎...

回答

2

首先,你已經在網址中使用版本號在正確的軌道上。 (我假設它不在查詢字符串中,但是在實際的資源路徑中。)V.聰明。

回答您的問題直接:

  1. 在你的Web服務器的配置。

  2. 在您的Web服務器配置中;你應該可以選擇啓用gzip壓縮,在這一點上它與現代服務器它剛剛發生(tm)。

  3. 是的,但你可能不想。您可以可以將CSS作爲一串字符串嵌入到JavaScript文件中,然後在頁面加載時輸出style元素(而不是通過document.write,這會通過DOM方法殺死您明顯的頁面加載性能)。但是,如果JavaScript在客戶端上被禁用,那將會是一個問題。 :-)也可能出現渲染延遲,無論如何,你可能沒有足夠的力量來使複雜性值得。

其他的事情要考慮:

  • 如果您的網站使用cookies,你要避免從該cookie將被送回的路徑服務的JS和CSS,因爲存在請求中的cookie可以擊敗一些緩存。這就是爲什麼你經常看到從不同的域或子域加載的這些資源。
  • 看看JS和CSS縮小器,如果你還沒有 - 你知道,刪除不必要的空白的東西,那種事情。
  • 如果你對速度感興趣,可以看看爲你的JS和CSS使用CDN。他們是lot比以前便宜。這是一個有趣的地方看看他們:http://cloudharmony.com/speedtest到目前爲止(這是早期)我已經印象深刻MaxCDN的39.95美元的介紹(通常99美元)。
+0

@Crowder。是的版本號是在實際的資源路徑中。這種方式我想,後來推翻緩存的版本,我所需要做的就是改變url中的verion arg! – 2010-09-10 15:13:55

+0

@Crowder。你所有的答案都有道理。謝謝,非常興奮現在就試試:) – 2010-09-10 15:14:31

+0

@Crowder忘了提。我正在做JS minify(即刪除空白)和最小的變量替換。例如。 var stripped_char被命名爲var a1。我看到這個東西真的會減少你的JS文件的大小。我發現這種類型的minify + compress通常會減少原始尺寸的75-80%... – 2010-09-10 15:19:00

0

這是我真正感興趣的主題,剛開始考慮壓縮並加快我的網站/節省帶寬。

我發現this article非常有用和有趣: