2012-05-15 19 views
0

假設我有一個只在網站上的一個或幾個頁面上使用的javascript或CSS文件。我還有一種方法可以輕鬆識別這些網頁的投放時間,例如可讀的網址。使用服務器端測試有條件地爲JS提供服務是否是不好的做法,以查看腳本是否有必要?隨着PHP例如,我可以這樣做:通過服務器端條件加載JavaScript或CSS是否有缺點?

<?php 
if($page='myFancyPage') 
{ 
?> 
    <script src="myFancyScipt.js"></script> 
<?php 
} 
?> 

我沒有失去瀏覽器緩存是我的優勢?還有其他原因,爲什麼我不應該這樣做?

我認識到,隨着網站變大,越來越多的條件必須堆積起來,可能會變得很難處理。但是除了這個問題之外,是否有理由避免這種做法呢?

+0

給多少談有關於需要一個人的腳本和CSS結合成一個文件(以減少服務器請求),我想知道人們如何看待這種技術作爲替代方案?組合可能會非常痛苦(尤其是當您稍後添加腳本時,只會在站點上使用/範圍有限)。 – technoTarek

+1

考慮到組合的CSS或js文件大約是平均JPG的大小,你仍然在前面。對於小文件,請求是瓶頸,而不是有效載荷。 –

回答

4

否,因爲條件在服務器而不是客戶端上。

客戶端不知道爲什麼它得到的文件,但是當它得到它,它會被緩存。

+1

額外的迴應/請求的開銷是一個下行 –

+1

@AndyDavies這是我的意見,但我沒有理由投票。+1給你好先生。 – RGB

1

瀏覽器緩存發生在客戶端(瀏覽器),而您的PHP將在服務器端執行。如果您的瀏覽器看到其中包含myFancyScript.js的頁面,則假設來自服務器的響應標頭允許它並且瀏覽器服從標頭,則對該頁面的所有後續請求都將使用myFancyScript.js的緩存版本。

0

你不會失去文件緩存的好處,除非他們需要而且沒有提供!如果文件沒有改變並且已經存在於客戶端上,文件緩存將僅對您有益。

有選擇性地鏈接到你的外部文件(只鏈接this頁面需要的文件)的好處,因爲你的文件將加載得更快,因爲它不會必須解析多餘的js/css ...你最好只有並稱將通過頁面

0

這取決於所需要的文件...

一般的建議是儘量減少要求的網頁,使外部資源的數量,作爲額外的請求/響應的經常開銷大於該文件的來源已被合併到另一個文件中的情況。

這就是爲什麼標準性能的建議是要合併的JS文件,共同打造下載的最小數量

相關問題