我有一個高流量的網站,我需要確保我的網站足夠快,以快速顯示我的網頁給每個人。PHP網站優化
我搜索在谷歌關於速度和優化許多文章和這裏是我的發現:
- 緩存的頁面
- 將其保存到磁盤
在內存中緩存的頁面:
這是非常快,但如果我需要改變我的網頁的內容,我必須從緩存中刪除它,並且然後將該文件重新保存在磁盤上。
保存到磁盤
這是很容易維護,但每次訪問頁面時我必須在磁盤上讀取。
我應該使用哪種方法?
我有一個高流量的網站,我需要確保我的網站足夠快,以快速顯示我的網頁給每個人。PHP網站優化
我搜索在谷歌關於速度和優化許多文章和這裏是我的發現:
在內存中緩存的頁面:
這是非常快,但如果我需要改變我的網頁的內容,我必須從緩存中刪除它,並且然後將該文件重新保存在磁盤上。
保存到磁盤
這是很容易維護,但每次訪問頁面時我必須在磁盤上讀取。
我應該使用哪種方法?
月& IDM是正確的,但這裏是如何:
緩存(頁或內容)對於性能來說非常重要。無論您的內容是靜態還是動態,您向數據庫或文件系統請求的最少調用都會更好。
,如果你需要運行動態內容,您可以使用PHP加速器:
我的建議是使用Alternative PHP Cache (APC)
下面是一些標杆:
What is the best PHP accelerator to use?
PHP Accelerators : APC vs Zend vs XCache with Zend Framework
Lighttpd – PHP Acceleration Benchmarks
要緩存內容,甚至可以使用以下頁面:Memcached或Redis。
的Memcached: 免費&開源的,高性能的,分佈式內存對象緩存系統,通用的性質,但擬用於減少數據庫負載,加快動態Web應用程序。 Memcached是內存中的鍵值存儲,用於從數據庫調用,API調用或頁面呈現結果中爲任意數據(字符串,對象)創建小塊。
Redis Redis是一個開源的高級鍵值存儲。它通常被稱爲數據結構服務器,因爲密鑰可以包含字符串,哈希,列表,集合和有序集合。
兩者都是緩存內容或變量的非常好的工具。
下面是一些基準,你可以選擇你喜歡哪一個:
Redis VS Memcached (slightly better bench)
On Redis, Memcached, Speed, Benchmarks and The Toilet
光油: 光油是專爲內容較多的動態網站的HTTP加速器。與其他HTTP加速器相比,如開始生命作爲客戶端緩存的Squid或主要是原始服務器的Apache,Varnish從最初設計爲HTTP加速器。
nginx的 的nginx(發音?發動機-X?)是一個輕量級的,高性能的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,下一個類似BSD許可證授權。它運行在Unix,Linux,BSD變體,Mac OS X,Solaris和Microsoft Windows上。
g-wan G-WAN是一個Web服務器,其ANSI C腳本和Key-Value存儲性能優於所有其他解決方案。
下面是一些基準,你可以選擇你喜歡哪一個:
Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN
Web Server Performance Benchmarks
Nginx+Varnish compared to Nginx
我使用nginx + redis,它們超快速+1 – Gabriel
你有一個好主意,這是接近我自己。如果我有一個100%靜態的頁面,我將保存它的html版本並將其提供給用戶,而不是每次都重新生成內容。這在一些情況下可以同時保存mysql查詢和多個io操作。每次我進行一些更改時,我的管理界面都會簡單地刪除html文件並重新創建它。
此方法已被證明在我的服務器上快100倍左右。
這是最好的緩存方法之一,只需重新創建靜態html頁面的變化。 –
這個過程可以很容易地自動化。 –
我可以添加:
緩存一切你能
最小數量的包括
使用加速器
請調查,是什麼讓你的網站慢。不要忘記YSlow和類似的東西,他們可以幫助你很多。
此外,如果你有大量計算,你可以寫PHP擴展他們,但我不認爲這是你的情況
網站性能的一個大問題是「您是否提供靜態頁面,或者您是否提供動態頁面?」。
靜態頁面
加快靜態頁面的最佳方法是對其進行緩存您的網站之外。如果你能負擔得起,從CDN(Akamai,Cotendo,Level3)提供服務。在這種情況下,流量不會觸及您的網站。有幾種方法可以控制緩存 - 從固定持續時間到標準的HTTP緩存指令。
即使您無法從CDN提供HTML,將圖片,JavaScript和其他靜態資產存儲在CDN上可以加速您的網站 - 您可以使用像Amazon這樣的雲服務。
如果您無法承受您的HTML的CDN,那麼您可以使用自己的緩存代理層,如Zeus建議的那樣。我用清漆取得了很好的效果。理想情況下,您可以在自己的硬件上運行緩存代理 - 但可以在現有服務器上運行它。
動態網頁
動態網頁更難緩存 - 那麼你需要把精力集中在自己的網頁儘可能高效。這基本上意味着尋找瓶頸 - 在大多數系統中,瓶頸是數據庫(但絕不總是)。
如果您確信自己的瓶頸是數據庫,那麼緩存選項有多種方法 - 您可以緩存HTML的「片段」,也可以緩存數據庫查詢。使用加速器有助於此 - 我不會從頭開始創建一個。這可能意味着重新設計(部分)您的應用程序。
您必須首先對您的網站進行簡介。
而不是瘋狂猜測一個人必須確定某些瓶頸,然後解決某個問題。
Cahing不是一顆銀子彈,也不是優化的同義詞。
有時緩存不適用(例如廣告),有時它不會有任何幫助,因爲網站緩慢的原因可能在某個不相關的位置。
您的網站可能會耗盡內存。所以,內存緩存會讓事情變得更糟。
我不能相信某人有一個高流量的網站,並說nmot一個先前的分析的話。你怎麼能知道它的內部結構? CPU負載,內存負載,磁盤I/O等。
你應該添加更多關於你的網站的細節:os,server,cms?...etc – soju
我使用apache + php + mysql + centos - 沒有cms或框架 – ana
你有什麼類型的託管?共享?專用? –