2014-10-01 80 views
0

假設一個網站,收集所有必要的CSS和JS文件鏈接到一個數組,包括他們的頭,像這樣前:將所有JS和CSS拖入內聯?

<link rel='stylesheet' href='[CSS-FILE-LINK].css' type='text/css' /> 

<script type='text/javascript' src='[JS-FILE-LINK].js'></script> 

他們有些是本地文件,有些是遙遠。

一般 - 是否有任何缺點,包括遠程的鏈接,但輸出本地的內聯?

更具體地說:我現在主要關心的是我在猜測變量名是否相互衝突...... CSS我想只是以一種從底層開始處理衝突/覆蓋的方式級聯......但JS我不確定 - 一個js文件中的全局變量與另一個全局變量衝突嗎?

加分點: 假設這是一個好主意,這樣做是爲了獲得因請求之間的等待時間減少的速度,將是更好的ReadFile()或file_get_contents()函數在這種情況下?

+0

我反對遠程託管的CSS文件,除非您自己託管它們。如果你不把它託管在你自己的服務器上,有人可以改變一件小事,徹底打破你的頁面。但我猜你已經想到了? ;) – Rvervuurt 2014-10-01 07:05:05

+0

所有JavaScript文件都在完全相同的環境中執行。全球只有一個,就是「窗口」。在同一個HTML中包含所有內容有助於減少HTTP請求的數量,但說實話,差異是微不足道的。 – 2014-10-01 07:05:52

+0

如果你的JavaScript文件中有名字衝突,你可以在函數中「包含」它們:(function(){/ * Your JavaScript here * /})()但是你應該儘量避免內聯javascript和CSS,如在寫這篇文章時發佈的答案,你的初始頁面加載可能會更快,但是一旦你加載了js和css文件{幾乎}每個瀏覽器都會緩存它們,這會使後續頁面加載速度更快(內置的js和css會有被傳送到瀏覽器的每一個請求,例如不可緩存) – Snellface 2014-10-01 07:10:12

回答

0

不利的一面是你的初始頁面加載會更重。如果您的文件很小,由於請求量減少,它仍然是性能的淨增益。

CSS會像你說的那樣處理衝突,JS不會。這就是爲什麼你should not put thingsin the global scope

0

JS全局變量可以讓你的網站非常糟糕地工作。如果你有改變,我建議你使用JS Module模式,這樣你就可以擁有單獨的命名空間,所以你不會遇到全局JS的問題。

如果你想贏得速度,你可以使用亞馬遜的商店靜態內容。你可以將請求緩存到你的css/js文件中,並且速度會更快,不是很難建立並且不昂貴。

1

好吧,你可以從本地文件輸出CSS(請不要複製粘貼它,如果你這樣做,你肯定會遇到麻煩:D)。

人們通常會做的事情是,他們在開發過程中保持鏈接,並在生產之後立即使用串接和uglification。全局JS變量通常是一個壞主意,是的,它們可能會發生衝突(它們被附加到全局可用的窗口對象上)。