Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




May 26, 2006
處理 GZip 的 CSS cache

今天發現 Apache 啟用了 Gzip 或 Deflate 之後,在 IE 會發生 css 檔案一直丟 cache 出來,而不去讀取目前 css 檔案的狀況。

也就是下面這種語法會沒辦法讀到更新過後的檔案:

<link rel="stylesheet" type="text/css" href="common.css" />

解法的方式可以參照這篇的做法,動態產生日期碼來解決:

<link rel="stylesheet" type="text/css" href="common.css?time=20060408.css" />

不過我個人的解法傾向於直接把 CSS 用 <style> </style> 放在 HTML 裡面,目前 Yahoo! 跟 Google 不論 css 或 javascript 皆不採用外部載入的方式,Yahoo! 連斷行跟多餘的空白也都拿掉了,這樣的做法應該對傳輸效率會有大幅度的提升。

20060526_01.gif
(Yahoo! 的 HTML)

20060526_02.gif
(Google 的HTML)

 
由 Neo 發表於 May 26, 2006 12:50 PM 收進你的MyShare個人書籤  

我用 mod_deflate 沒這問題ㄝ, 會不會設定或是特定版本或伺服器環境造成的問提.


archangel 發表於 May 27, 2006 02:36 AM

archangel:
的確有可能。不過最近實在太忙了,也沒時間找原因了,先解決再說囉。^^


Neo 發表於 May 27, 2006 03:46 AM

缺點是和內嵌式圖片一樣...不能共用之類的|||
畢竟是寫死在HTML裡面~ :P 這樣傳輸反而差吧??
(應該是想直接替換+動態考量就會這樣寫~)
then~ 上面那個日期的給了一個很好的想法~
like href="common.css?update=20060408.css"
數字產生用資料庫或是記憶體中最後一次的更新代號
而不是動態產生的日期值~
:P 這樣應該就可以共用+更新時自動替換了吧?? 不過要更新數值罷了~


JellyCatz果凍喵 發表於 May 27, 2006 07:13 PM

JellyCatz:

如果善用 ASP 或 PHP 的 include 就可以達到共用的功能囉。^^


Neo 發表於 May 27, 2006 09:47 PM

cc~ 寫的那方式是更新後~ 發覺網址不一樣而重取檔案(UpdateTime)~
而不是就主題範例所提的~ 每次都要重取檔案(nowTime)~
(CSS cahce的重複使用&兼具更新的目的)~
common.css?update=20060408.css
?後面跟參數的是GET傳值~ 得到的是實體common.css檔~ 所以傳值只是用來偽裝罷了~ 連include都可以省掉哩~

JSP也有include :P
[而JSP也有server變數可用~ UpdateTime可存在裡面:) 就不會花資料庫or檔案資源]


JellyCatz果凍喵 發表於 May 29, 2006 12:22 AM

我是在猜想是否是因為某些 mod 模組設定互相衝突, 先前我也發生過因為其中一個模組 ( mod_security ) 的設定問題, 導致很多程式都無法正常運作.

所以我想 Neo 可能可以花少許的時間, 先把所有的模組都暫時關閉, 再一個一個開啟. 這樣或許比較容易找出問題所在. ^^


archangel 發表於 May 30, 2006 02:02 AM

縮行可以減少很多 K , 不過 css 跟 index 放在一起是怕外部連結的 server 掛了把yahoo 首頁搞垮.


Josh 發表於 May 30, 2006 11:40 PM

yahoo 這種入口首頁幾乎都是動態轉靜態
所以轉靜態時當然把 css include 進來一起轉比較優啊
例如:樓上朋友提到的 cache 問題

再者,yahoo 這種入口網站跟不需要擔心 "頻寬" 問題
他只擔心完整度與穩定性 :D


Ascent 發表於 June 2, 2006 04:11 AM

"處理 GZip 的 CSS cahce"
標題有點小錯,應該是 "CSS Cache"


SpongeBob 發表於 June 6, 2006 09:20 AM

SpongeBob:

感謝指正,馬上改。^^


Neo 發表於 June 6, 2006 11:03 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.