Apache網(wǎng)站性能優(yōu)化方案
在 Yahoo 開發(fā)者網(wǎng)站上,Yahoo 提出了優(yōu)化網(wǎng)站性能的N條規(guī)則(Best Practices for Speeding Up Your Web Site)。這些規(guī)則是:
1. 盡可能的減少 HTTP 的請求數(shù)(Minimize HTTP Requests) —— Tag: content
2. 使用 CDN(Use a Content Delivery Network) —— Tag: server
3. 添加 Expires 頭(或者 Cache-control ) (Add an Expires or a Cache-Control Header) —— Tag: server
4. Gzip 組件(Gzip Components) —— Tag: server
5. 將 CSS 樣式放在頁面的上方 (Put Stylesheets at the Top) —— Tag: css
6. 將腳本移動到底部(包括內(nèi)聯(lián)的)(Put Scripts at the Bottom) —— Tag: javascript
7. 避免使用 CSS 中的 Expressions(Avoid CSS expressions) —— Tag: css
8. 將 JavaScript 和 CSS 獨(dú)立成外部文件(Make JS and CSS external) —— Tag: javascript, css
9. 減少 DNS 查詢 (Reduce DNS lookups) —— Tag: content
10. 壓縮 JavaScript 和 CSS ( Minify JS) —— Tag: javascript, css
11. 避免重定向(Avoid redirects) —— Tag: server
12. 移除重復(fù)的腳本(Remove duplicate scripts) —— Tag: javascript
13. 配置實(shí)體標(biāo)簽(Configure ETags) —— Tag: css
14. 使 AJAX 緩存(Make Ajax Cacheable) —— Tag: content
15. 提前刷新輸出緩沖(Flush the Buffer Early) —— Tag: server
16. Use GET for AJAX Requests —— Tag: server
17. Post-load Components —— Tag: content
18. ……
最開始 Yahoo 提出了 14 條規(guī)則(所以到現(xiàn)在搜索到的資料大多是叫“YAHOO 優(yōu)化網(wǎng)站性能的14條規(guī)則”),后來 Yahoo 不斷完善添加,到今天我寫這篇文章 http://www.xiaohui.com/dev/server/speeding-up-your-web-site.htm 的時(shí)候,已經(jīng)有 34 條規(guī)則了,覆蓋了server、CSS、javascript等七個(gè)大類。需要了解的可以在 Yahoo Developer 英文站上了解。
Yahoo 同時(shí)提供了一個(gè) FireFox 插件 YSlow,可以直觀、方便的看到你的網(wǎng)站根據(jù)前13條優(yōu)化規(guī)則的建議。關(guān)于這 13 條優(yōu)化規(guī)則的中文說明,感興趣的可以直接參考 Yaosl 的文章:優(yōu)化網(wǎng)站性能 提高網(wǎng)站速度訪問速度的14條實(shí)踐。他這里說得比較詳細(xì)。
在其中的第三條,Yaosl 沒有針對服務(wù)器端配置進(jìn)行說明,他說:
第三條、 添加Expire/Cache-Control 頭
Cache-control 也可以通過配置服務(wù)器本身完成,這些偶就不是很清楚了,呵呵。想了解跟多的朋友可以參考http://www.web-caching.com/。
正好我在看到 Yahoo 的優(yōu)化規(guī)則之后,也試著優(yōu)化了一下自己的服務(wù)器。在服務(wù)器端配置 Expire/Cache-control 其實(shí)挺容易的。以 Apache 為例,在 httpd.conf 中做以下修改即可:
啟用 expires_module 模塊
LoadModule expires_module modules/mod_expires.so
打開 Expires 控制
ExpiresActive On
設(shè)置 Expires 規(guī)則
我的 Expire/Cache-Control 規(guī)則是:將 IMAGE 圖片(JPEG, GIF, PNG)、CSS 文件、JS 文件緩存 14 天。因?yàn)檫@些文件基本上很少修改。我的配置語法如下:
ExpiresByType image/gif "access plus 14 days"ExpiresByType image/jpeg "access plus 14 days"ExpiresByType image/png "access plus 14 days"ExpiresByType text/css "access plus 14 days"ExpiresByType application/x-javascript "access plus 14 days"
重啟 Apache 服務(wù)器。
有關(guān) Apache Expires Module 的介紹,可以參閱其官方文檔:Apache Module mod_expires。(來源)
來源:月光博客