在提高整體網站性能(下載和渲染速度)的情況下似乎有以下兩個最佳實踐之間的矛盾:最佳實踐 - 只需下載您需要的CSS,或使用縮小過程?
只有打倒你需要的頁面之中的CSS查看。 (因爲太多的CSS規則會導致慢渲染)
始終縮小CSS和它合併成一個文件。 (因爲更多的請求意味着較慢頁面加載)
現在說我決定遵循規則1.
以下問題上來:
如果2頁共用1套的CSS規則?
在這種情況下,我需要把這些規則在一個單獨的文件和參考來自兩個頁面文件。
但是,如果我開始有很多這樣的「共享規則」,我可能最終會從每個頁面引用了很多單獨的文件,因此,打破規則2.
例如,網頁A可能取決於CSS 1和2,而頁面B和C都依賴於CSS 2,頁面D取決於CSS 1.
在這種情況下,不可能每個頁面只有一個CSS,甚至不能有多個CSS,因爲有些頁面需要與其他頁面共享一些CSS文件。
但是我們不能解決結合所有的CSS的每一頁到一個單獨的每個頁面的CSS文件這個問題?
我們可以,但是這會帶來其他問題。
如果兩個網頁共享CSS的一個片段,即使我們壓縮了地獄的話,我們還是會反覆下載的片段,每次我們請求一個頁面誰的CSS時間包含片段。
由於我們已將頁面中的CSS 壓縮,所以我們允許在CSS片段被兩個或多個頁面共享的情況下發生冗餘。
瀏覽器緩存確實沒有我們這裏好,因爲在瀏覽器中,每個CSS文件有不同的文件名,因此是一個獨立的文件,即使他們中的一些包含內容是一樣的。
那麼我們應該打破哪條規則?
我劃掉的一個是:
1.您應該只打倒你需要的網頁正在查看的CSS。
我認爲這是多簡單,更實用來縮小/組合地獄所有的CSS爲我的網站,並把它倒在一個去。
至於性能問題,這可能會創造,我認爲它們是由以下事實削弱:
現代瀏覽器越來越善於處理CSS規則比較快,所以很快就沒有問題,如果你在內存中有很多規則沒有被使用。
擁有所有你的CSS緩存將提高速度比你從留出不必要的規則,這會得到任何改善多了很多獲得加載反正,當用戶瀏覽到需要這些規則的網頁。
我就在這裏嗎?
我完全會回答這個問題,但它超級遲,而且這是一本能夠通讀的小說。你絕對應該縮小你的CSS,並且你應該儘可能地把它合併成一個文件。客戶端會將文件拉下一次,並將其緩存以供將來使用。它遠勝於多個HTTP請求。 – 2010-07-04 05:49:27
是的,具有諷刺意味的是,我的問題也許可以使用一些縮小:) – Jonathan 2010-07-04 06:18:57