是否在一些建議/反饋如果可能的話。memcache php緩存js css和圖像
我正在開發一個大型項目,開發團隊要求我們合併所有的JS/CSS並將其與memcache緩存爲一個文件,以加快速度。
我擔心的是這不是我習慣於工作的方式,我只想加載每頁所需的JS和CSS,因爲我認爲這是一個明顯的原因。
我也一直在尋找一些其他高流量的網站,似乎沒有其他人這樣做。
任何人都可以給我一些這種方法的優點和缺點嗎?
在此先感謝
理查德
是否在一些建議/反饋如果可能的話。memcache php緩存js css和圖像
我正在開發一個大型項目,開發團隊要求我們合併所有的JS/CSS並將其與memcache緩存爲一個文件,以加快速度。
我擔心的是這不是我習慣於工作的方式,我只想加載每頁所需的JS和CSS,因爲我認爲這是一個明顯的原因。
我也一直在尋找一些其他高流量的網站,似乎沒有其他人這樣做。
任何人都可以給我一些這種方法的優點和缺點嗎?
在此先感謝
理查德
「我一直在尋找一些其他高流量的網站,並沒有其他人似乎是在做這個」真的
?這令我感到驚訝......這是減少頁面加載時間的第一步。看到這裏:http://developer.yahoo.com/performance/rules.html。如果您想測試遵從性以加載時間最佳實踐,那麼您可能還想嘗試他們的性能測試工具YSlow:http://developer.yahoo.com/yslow/。
這也是爲什麼這被認爲是最好的做法:瀏覽器有大約8個併發連接的每個特定服務器的限制,以及2(多爲不符合瀏覽器)的限制。所以如果你爲一個給定的頁面生成多個文件,那麼它們會連續加載,因爲你的瀏覽器會一次對你的服務器進行15次往返。
所以我們來看看它是如何發揮的。假設你有十五個文件,每個文件10K,或者你可以將它們拼湊成一個150K的文件。假設服務器的延遲時間爲65毫秒,下載速度僅爲25k /秒。讓我們做數學題......這裏的公式:
$page_load_time = (($simultaneous_connections * $load_time_per_file)
+ $latency_per_request)
* ($number_of_files/$request_cycles)
其中:
$request_cycles = max(1, ($number_of_files/$simultaneous_connections))
所以,用15個文件在每個10K:
((2 * .4 seconds) + .065 seconds) * 7.5 = 6.4875 seconds
或一個150K的文件:
((1 * 6 seconds) + 0.065 seconds) * 1 = 6.065 seconds
不是一個戲劇性的差異,b用戶等待時間仍然差不多半秒!
現在 - 當他們是3G連接,會發生什麼?或者有一點Wi-Fi的麻煩?讓我們嘗試更多的帶寬(100K /秒),更延遲(250毫秒):
((2 * .1 seconds) + 0.250 seconds) * 7.5 = 3.375 seconds
或
((1 * 1.5 seconds) + 0.250 seconds) * 1 = 1.750 seconds
哇!現在,所有這些單獨的小文件幾乎翻了一倍的頁面加載時間!
添加在一大堆的其他文件,你看中的TypeKit負載,廣告服務器的負載,Facebook的插件,等等,等等等等,這東西開始更加重要。
你在這裏做了一個很好的例子,所以我會暫時給你一個+1,儘管我仍然不同意至少部分,我認爲從長遠來看,一個好的客戶端緩存頭設置更重要。但我必須說,你的情況很好。 – DaveRandom
@DaveRandom - 謝謝,戴夫!你不會反對我提到好的緩存標題的重要性......但是一旦被照顧,還有另一個禍害。 –
也許你不想把它變成一個真正的問題 – baloo
似乎你在這裏有兩個問題 - 我應該使用memcached緩存js/css,並且應該將所有js/css合併到一個文件中。我建議你分別發佈這兩個問題,因爲它們確實無關。 –
我想這個問題是什麼反對緩存一個巨大的CSS和JS文件,並反對實際上只使用每頁需要什麼,讓瀏覽器緩存它,以及利弊是什麼利弊呢? – user989952