一個網站,對於我的或小公司來講,前期直接上集羣的開銷是比較大的,那麼採用單臺服務器如何才能儘量的提升網站效率呢? php
我以爲首先要選擇一個合適的環境,對於大多數php站點來講,運行在lnmp(linux+nginx+mysql+php)環境下是個理想的選擇. mysql
首先一點linux對比win的優點我就不說了。 linux
其次nginx的優點總結起來就是負載均衡,高併發性能優異。 nginx
這裏php採用fastcgi的方式接入nginx,php5.3 自帶的php-fpm已經很好了,相比於apache的php模塊方式,這裏由php本身直接處理php請求是比較好的,而且可調控進程數量以優化併發性能。 sql
上面說的是基本環境,我有一臺q6600的老四核,4G內存的linux服務器,上面跑了幾十個站點,最高跑到90M帶寬,成功hold住! 數據庫
下面說說程序方面的優化。 apache
咱們知道,靜態頁面的速度比動態頁面要快,尤爲是在nginx下,靜態頁面直接由nginx提供服務,性能尤爲高。而動態頁面,雖然fastcgi也很好,可是相比於nginx直接處理靜態頁面,仍是有點差距的。 數組
這裏介紹兩個好東西,一個是nginx自身的緩存功能proxy_cache和fastcgi_cache,而後還有一個nginx模塊ngx_cache_purge用於清理指定url的緩存。
這裏單臺服務器咱們主要使用的是fastcgi_cache,能夠指定的url下,將php腳本的執行結果緩存到磁盤和內存上,並能夠指定過時時間,第二次訪問的時候,由nginx直接取緩存文件,就至關於靜態頁面了,效率固然很高。 緩存
說完nginx再說說php,nginx用於緩存整個頁面,而有的頁面咱們不須要緩存所有,只須要緩存一些短數據,好比一些數組,訪問記錄之類的臨時新內容。傳統的php是直接採用文件式緩存,就像dedecms裏data/cache目錄,裏面存放的就是不少緩存文件,主要是用來避免頻繁的數據庫查詢。通常狀況下,文件緩存也夠了,可是要追求極致,尤爲是高併發下,不如試試memcached吧,很好的一個東西,做用是將一些字符串以鍵值對的形式存放到服務器內存中,指定過時時間,下次用的時候直接從內存中取,不消耗磁盤I/O,速度也不是一個級別的,原理和文件緩存同樣。 服務器
暫時能想到的就是這麼多,其實主旨就是一個:緩存。只是緩存的方式不一樣罷了。那麼如何選擇合適的緩存方式,就是咱們開發人員須要考慮的事情了。