2011-08-14 122 views
8

是否從這是一個優化嗎?

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

<script type="text/javascript"> 
    <?php echo file_get_contents('jquery.js'); ?> 
</script> 

真正速度?

我在想這樣做,因爲php可以獲取並嵌入文件內容的速度比客戶端的瀏覽器可以完整地請求文件,因爲php不會通過網絡。

傳統方法可以緩存的主要區別是什麼?

+2

雖然_will_會影響緩存。 – GWW

+2

@GWW將「will」替換爲「will」。 :) – nickf

+1

@nickf:Fixed;) – GWW

回答

11

可能是在第一頁面加載速度更快,但在隨後每次負載這將是慢。在第一個例子中,客戶端瀏覽器會緩存結果。第二,它不能。

2

在這兩種情況下,您都需要將字節傳輸到瀏覽器。唯一的區別是您在後一種情況下保存HTTP請求。 此外,請務必使用CDATA或使用htmlspecialchars轉義javascript。

如果你的JS庫包含在你的HTML頁面中,它不能被瀏覽器緩存。將JS從常規HTML代碼中分離出來通常是一個好主意,因爲瀏覽器可以緩存它,並且不需要在隨後的請求中獲取它。

所以爲了簡短起見,這是一個優化,只有當頁面被用戶調用一次,並且jquery沒有在其他頁面上使用時,該優化才起作用。


或者,您可能需要使用jQuery的從google apis - 與他們經常在瀏覽器的緩存反正效果,所以沒有必要在所有傳輸的lib。

+1

在HTML 4.01中,元素類型「SCRIPT」已經聲明瞭內容類型CDATA。 –

+1

...和'htmlspecialchars'會非常糟糕地搞砸了,比如說像if(a

+0

我期待這個頁面是XHTML,而用XHTML你必須逃避它。 – cweiske

0

這取決於有多少文件使用相同的文件。但是,在大多數情況下,這會比第一段代碼慢,主要是因爲可以緩存jquery.js

4

如果你只在客戶的生活中服務過一個單一的網站,那麼是的,因爲你只有一個HTTP請求而不是兩個。

如果您要爲多個網站提供全部鏈接到相同的javascript源文件,那麼您將複製所有這些冗餘數據,而不是讓客戶端有機會緩存​​該文件。

0

是的,這將最初是關於用於提供頁面的HTTP請求數量的性能優化 - 然而,頁面會逐頁增加,因爲jquery.js將在第一次下載後在瀏覽器中緩存。

0

它的確如果你的網頁是靜態的。
但如果它不是靜態的,你的瀏覽器會很快下載頁面,而jquery不會改變,但仍然包括在內。如果您使用src="jquery.js"並且頁面發生更改,瀏覽器將從緩存中加載jQuery並且不會再次下載,因此使用src="jquery.js"實際上會更快。

2

它是這樣做的那一頁。

所有後續頁面使用相同的庫(jquery.js從相同的URL下載)SUFFER,因爲如果你包含對外部文件的引用是,它必須在一個額外的連接下載(這是相對便宜HTTP \ 1.1和流水線),但是 - 如果你的網絡服務器爲它提供了有用的頭文件(Expires: - 遠在將來的頭文件),瀏覽器緩存下載,而「優化」必須用每一個內容檢索 - 頁。

也看到類似的網頁這一個: http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

2

第一個是更好,因爲瀏覽器可以緩存(這裏的關鍵詞是與那些遙遠的將來到期日期連接「轉速」)腳本。使用第二個版本時,即使腳本沒有更改,每次加載頁面時都必須重新下載該腳本。

第二個版本是唯一一次改進瀏覽器無法緩存的腳本。