LNMP web架構優化
前端:
1、js、css甚至html代碼壓縮和gzip壓縮,css在頭,js在尾。
2、合并Js、CSS,減少http請求
3、網站太大可以考慮用bigpipe頁面加載技術
4、圖檔懶加載
5、CSS Sprites(圖檔整合成一個,同樣是為了減少http請求)
6、圖檔的無損壓縮(Smush.it )
7、靜态檔案浏覽器緩存(head頭裡Expires、cache-control設定緩存時間)
8、對于http請求多的網站可以把靜态檔案放到多個域名下,有利于增加并發請求,也利于減少cookie發送
9、網站根目錄下的favicon.ico記得加上
10、減少重定向301、302
11、cdn分布
12、寫好的你的前端代碼
web後端:
1、PHP通過opcahe緩存到記憶體中
2、通過LVS或者Nginx進行負載均衡
3、通過Nginx或者squid進行反向代理,緩存一些資料
4、開啟keep-alive
5、nginx以unix-domain-socket方式連接配接fastcgi(php)
6、通過記憶體共享session,例如memcached,redis
7、負載均衡要做高可用,可以通過keepalived、heartbeat(腦裂警惕)
8、去掉你不用的PHP擴充
9、存儲共享,把相同的東西放到一起公用,例如靜态資源,實作的方式很多,例如NFS、MFS(moosefs)
10、寫好你的後端代碼
資料端:
1、MySQL主從,多主多從等等
2、分庫分表
3、緩存查詢的資料,例如Memcached
4、索引
5、分區、視圖、存儲過程用一下會有意外收獲
6、多explain和explain partitions你的sql
7、如果資料不那麼重要,資料量又特别大,那就可以考慮Redis、Mongodb、HBase了
8、搜尋用Sphinx搜尋引擎,一個國産的Xunsearch也不錯,一般夠用了
9、大并發的插入可以通過隊列減少并發,例如Redis的List就能實作
10、優化MySQL的配置,例如連接配接數、InnoDB緩沖池、MyISQM鍵緩存
11、備份資料
Linux:
1、最小化安裝Linux
2、優化Linux核心參數
3、關閉不需要的服務,例如ipv6、列印服務等
4、軟體安裝盡量選擇編譯安裝
總結:
目前就能想到這麼多,以後想起來再補充。以上隻是針對LNMP架構優化方面的見解,沒有深入到具體,大家可以針對每個點做深入研究。本人短見薄識,希望大家可以多多交流!