2010-07-27 47 views
2

我正在開發一個PHP應用程序,它使用Twig(但那不重要)作爲視圖層。這個視圖層有一個自定義的擴展,它允許我註冊遠程樣式和腳本資源以及樣式和腳本行內塊。系統會保留這些引用,直到頁面完成渲染,將所有樣式直接放置在標記之前,並將所有腳本直接放置在標記reference之前。Just-In-Time Asset Packager

我在幾個網站上看到過這樣的打包機(DataExplorer for one)。下面是從vimeo樣本:

<link rel="stylesheet" type="text/css" media="all" href="/assets/css/get/38402/global,lightbox,new_phome,stats_module" />

我想衡量利弊(這裏的地方你們進來!)創建一個資產打包(和極小),這將緩存所有的將頁面的依賴關係分解爲兩個文件(分別爲js和css)。

的幾個問題需要考慮:

  • 請問如果用戶因爲它被包裝在一個頁面上有login.css和包裝與另一個沒有它下載global.css中的部分這有助於提高性能?

  • 是作爲一個用戶點擊它有必要編譯這些第一次(和,當然,緩存後),或者是有刮每一頁和緩存的最小化的結果作爲部署的一部分的方法等等那一個用戶從來沒有被這麼長的頁面負載所擊中?

這是一段時間以外的部署;我只是想我會從你的專家那裏得到一些想法。

回答

1

理想情況下,您應該將文件打包成儘可能少的文件,包括庫和類似文件。併發送它們放氣壓縮。

每個文件創建另一個請求,與:

  1. DNS查詢可能作出的,
  2. 餅乾發送(如果沒有使用靜態子域),
  3. 認證機制被觸發,
  4. .htaccessphp.ini等進行檢查

和大量的其他資源。這個開銷通常比打包並將它們發送到單個壓縮文件中指數地大。壓縮,文件大小和緩存不會是一個問題。

你可以在Google Speed(特別是文章)和Yahoo Performance上找到關於這個和其他可能的速度改進的很好的指針。