我們正在計劃開發一個新的網站。我們的目標是快速加載網頁 。我們需要遵循哪些技巧?快速加載網頁
任何人都可以給我很好的建議,論壇鏈接或文章。
我們的平臺是PHP,MySQL,Javascript和AJAX。
我們正在計劃開發一個新的網站。我們的目標是快速加載網頁 。我們需要遵循哪些技巧?快速加載網頁
任何人都可以給我很好的建議,論壇鏈接或文章。
我們的平臺是PHP,MySQL,Javascript和AJAX。
一個加快你的網站的加載時間的最佳指南:
http://developer.yahoo.com/performance/rules.html
更新:谷歌現在擁有一支優秀的引導以及
http://code.google.com/speed/page-speed/docs/rules_intro.html
隨着一個更好的addon for Firefox。在我迄今爲止的測試中,Google的Page Speed插件遠遠勝過YSlow。它提供了更詳細的分析和更聰明的建議(而不是像YSlow這樣的小型網站推薦CDN)
一個有用的工具是YSlow這是一個來自雅虎的工具,可幫助識別網頁性能問題。此外,雅虎的Best Practices for Speeding Up Your Web Site是一個很好的清單。
但是,有關此問題的某些觀點,請參閱Jeff的博客條目Yahoo's problems are not your problems。
+1對於雅虎的問題不是你的問題。 – 2009-02-25 17:41:24
同上肖恩的評論。 – 2009-02-25 17:50:01
+1鏈接到Jeff的博客。 – altermativ 2009-03-16 14:09:50
使用PHP的分析器來確保您的代碼以合適的速度執行。重構(如果可能的話)如果性能可以提高。
一些隨機點。
漸進渲染而不是將其構建在內存中,並在最後發送給出明顯的印象的速度。
您可以使用一些高級緩存技巧,例如正向緩存(這是Akamai在大規模上執行的操作)並分隔靜態和動態內容。
對於PHP來說,特別要小心複製大量的數據。由於它是「默認複製」,PHP 4因此而臭名昭着,但它仍然有點太容易讓大量數據交給PHP 5.換句話說:不要複製(或創建!)字符串,數組和不必要的物品;與他們一起工作並傳遞參考。
除了說了些什麼:
壓縮所有的文件,包括CSS和JS文件也壓縮你的PHP文件。儘可能少的數據庫調用,並如前所述緩存所有的回報。
1)mod_gzip/mod_deflate!這是一個簡單的修復,我很驚訝它默認情況下沒有打開。
2)玩你的URL的技巧,所以你可以告訴瀏覽器永遠緩存你的JS和CSS文件。換句話說,構造URL的樣子:
http://www.yourdomain.com/js/mad_scriptz-v123.js
然後使用mod_rewrite並去掉了 「-v123」:
<IfModule mod_rewrite.c>
# http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
RewriteEngine on
RewriteRule ^/(.*)\-v[0-9.]+\.(css|js|gif|png|jpg|xap)$ /$1.$2 [L]
</IfModule>
現在Apache會去尋找「/js/mad_scriptz.js 「...每當你改變你的靜態內容時,只需修改版本號碼即可強制瀏覽器重新加載內容。我通常有一個模板變量,其中包含一切全局的全局版本號。不是最有效率的,但適用於我的目的。如果您可以將版本號綁定到您的構建系統或文件的散列,那將會更加甜蜜。
獲取指定mod_expires,使得所有的你的靜態的東西到期年從現在開始:
<IfModule mod_expires.c>
ExpiresActive On
# all in seconds...
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/css A2592000
ExpiresByType application/rdf+xml A1800
</IfModule>
更新:有人指出,並非所有的瀏覽器或類似gzip壓縮內容的搜索引擎。不要像我上面所建議的那樣盲目地打開它。確保即使他們接受它,也不會饋送古董瀏覽器gzip(其中一些會使用壓縮的javascript得到pissy)。 mod_gzip和mod_deflate的文檔都有應該工作正常的例子(我假設他們這樣做,或者人們會通過電子郵件發送更改:-)。
我還應該提一下,根據我的經驗,如果你在mod_gzip的Apache服務器和世界之間有一個反向代理,那麼你需要小心。 Squid 2.6經常會欺騙Apache,當它應該更糟時,它會緩存未壓縮的東西,並將它們提供給可以處理gzip內容的瀏覽器。不知道,如果3.0修復這個,我不知道它是否在我的配置錯誤(懷疑它)。只要小心:-)
這就是說。打開它。認真地:-)
雅虎:「把樣式表放在最前面」,「把腳本放在最下面」。
這使我最近的網站比其他任何優化都快。
下面是我總是發現有用的一個提示: 如果你有很多微小的圖像,把它們放在一個平鋪的圖像。在你的CSS聲明,通過操縱背景的X和Y座標控件的HTML元素的視口:
.icon {
background-image:url(static/images/icons.png);
height:36px;
width:36px;
}
.food {
background-position:-52px -8px;
}
.icon_default {
background-position:-184px -96px;
}
平鋪在Python腳本來完成,或者通過手,如果你有一個管理組。
Gmail也這樣做。參見:http://mail.google.com/mail/images/2/5/greensky/icons7.png
一個項目,與一些在雅虎準則點(http://developer.yahoo.com/performance/rules.html)幫助是Minify它採用微小,包捆綁在同一個空間服務條件HTTP,具有良好的設計實踐中使用可以顯著減少頁面加載,尤其是用戶體驗(與實際的頁面加載時間不同)。
'快'有多快?你真的期望什麼樣的負載?應用程序將如何託管?你究竟會做什麼?在寫'速度夠快'的東西和可以處理Facebook規模的東西之間有一個世界性的區別。 – 2009-02-25 17:46:07