2009-02-25 88 views
6

我們正在計劃開發一個新的網站。我們的目標是快速加載網頁 。我們需要遵循哪些技巧?快速加載網頁

任何人都可以給我很好的建議,論壇鏈接或文章。

我們的平臺是PHP,MySQL,Javascript和AJAX。

+0

'快'有多快?你真的期望什麼樣的負載?應用程序將如何託管?你究竟會做什麼?在寫'速度夠快'的東西和可以處理Facebook規模的東西之間有一個世界性的區別。 – 2009-02-25 17:46:07

回答

3
  • 使用CSS精靈來保持HTTP請求的計數。
  • 確保你所有的圖片都是體面的大小。
  • 確保你有一個非常好的上游和下游主機。
  • 請確保您的服務器能夠及時執行您的腳本,您可以使用microtime功能來檢查它。
  • 確保您的代碼已正確優化。
5

緩存緩存緩存。

memcached

APC

選擇一個,使用它。無需從數據庫中獲取所有內容,可以大大提高速度。

+1

請注意,memcached與APC並不相互排斥 - 使用APC作爲操作碼緩存並不排除使用memcached。 – 2009-02-25 17:41:58

+0

是的,APC一定要用作操作碼,但實際上它也支持緩存數據,很多人都沒有意識到。 http://php.net/apc_add http://php.net/apc_fetch – 2009-02-25 18:10:20

15

一個有用的工具是YSlow這是一個來自雅虎的工具,可幫助識別網頁性能問題。此外,雅虎的Best Practices for Speeding Up Your Web Site是一個很好的清單。

但是,有關此問題的某些觀點,請參閱Jeff的博客條目Yahoo's problems are not your problems

+0

+1對於雅虎的問題不是你的問題。 – 2009-02-25 17:41:24

+0

同上肖恩的評論。 – 2009-02-25 17:50:01

+0

+1鏈接到Jeff的博客。 – altermativ 2009-03-16 14:09:50

2

儘量少寫代碼,但不要太少。

代碼少,編譯少,發送少,接收少,處理少,顯示少。

+0

+1佈局更清晰/噪音最低 – Niteriter 2009-11-09 14:37:50

1

使用PHP的分析器來確保您的代碼以合適的速度執行。重構(如果可能的話)如果性能可以提高。

1

一些隨機點。

漸進渲染而不是將其構建在內存中,並在最後發送給出明顯的印象的速度。

您可以使用一些高級緩存技巧,例如正向緩存(這是Akamai在大規模上執行的操作)並分隔靜態和動態內容。

對於PHP來說,特別要小心複製大量的數據。由於它是「默認複製」,PHP 4因此而臭名昭着,但它仍然有點太容易讓大量數據交給PHP 5.換句話說:不要複製(或創建!)字符串,數組和不必要的物品;與他們一起工作並傳遞參考。

0

除了說了些什麼:

  • 模糊處理和壓縮你的CSS
  • 模糊處理和壓縮你的JavaScript
  • 減檔==少的HTTP請求更快== ==網站把你所有的在一個文件中的CSS,把所有的JavaScript在一個文件中
1

壓縮所有的文件,包括CSS和JS文件也壓縮你的PHP文件。儘可能少的數據庫調用,並如前所述緩存所有的回報。

3

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_gzipmod_deflate的文檔都有應該工作正常的例子(我假設他們這樣做,或者人們會通過電子郵件發送更改:-)。

我還應該提一下,根據我的經驗,如果你在mod_gzip的Apache服務器和世界之間有一個反向代理,那麼你需要小心。 Squid 2.6經常會欺騙Apache,當它應該更糟時,它會緩存未壓縮的東西,並將它們提供給可以處理gzip內容的瀏覽器。不知道,如果3.0修復這個,我不知道它是否在我的配置錯誤(懷疑它)。只要小心:-)

這就是說。打開它。認真地:-)

1

雅虎:「把樣式表放在最前面」,「把腳本放在最下面」。

這使我最近的網站比其他任何優化都快。

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

0

一個項目,與一些在雅虎準則點(http://developer.yahoo.com/performance/rules.html)幫助是Minify它採用微小,包捆綁在同一個空間服務條件HTTP,具有良好的設計實踐中使用可以顯著減少頁面加載,尤其是用戶體驗(與實際的頁面加載時間不同)。