高性能建站指南

《高性能建站指南》上次讀是六年前在大學的時候,昨天下午有空從新讀了一遍,所以留下筆記,加上了一些本身的理解css

一、減小http請求

   圖片地圖,css sprites,內聯圖片,合併腳本和樣式表node

二、使用內容發佈網絡

  cdn,縮短用戶和服務器之間的接收距離,下降中央服務器的壓力ajax

三、添加expires頭

 可以在過時時間前運用緩存瀏覽器

  expires 定義靜態資源的過時日期,缺點是要保持用戶的系統時間和服務器的時間一致,緩存

  max-age 優先級比expires高,定義還有多長時間過時,所以用戶系統時間無不須要和服務器的時間一致服務器

爲組件添加長久的expries頭網絡

四、壓縮組件(css、js)

客戶端發送獲取資源的request會帶上 Accept-Encoding:gzip,deflate,請求的response返回 Content-Encoding:gzip,tcp

主流瀏覽器都支持解壓gzip壓縮的文件,業界也主要使用gzip壓縮文件,服務器壓縮組件會增長服務器負載(細微得能夠忽略?)性能

對應有些瀏覽器不支持gzip壓縮,服務器會告知代理須要獲取accept-encoding請求頭來決定是否發送壓縮的文件,Vary:Accept-Encoding代理

五、將樣式表放在頂部

瀏覽器逐步呈現,所以儘早加載構建好css Tree能更快構建好RenderTree,減小瀏覽器白屏時間加強用戶體驗

@import引用的CSS會等到頁面所有被下載完再被加載,不建議使用

使用Link標籤將樣式表放在head中

六、將腳本放在底部

同步(以script標籤)加載腳本會阻塞後續資源加載,而且在瀏覽器解析js時候,會阻塞renderTree的構建

七、避免CSS表達式

CSS表達式容易致使頁面性能開銷大,所以要避免用

八、使用外部JavaScript和css

內聯的JavaScript和css雖然減小了http請求開銷,可是會致使JavaScript和css沒法利用瀏覽器緩存

將JavaScript和css放到外部文件中

九、減小DNS查找

TTL(time-to-alive)告訴客戶端對改記錄保存多久,然而瀏覽器通常會忽略該值

開啓keep-alive(我的以爲keep-alive主要是經過重用tcp/ip通道減小tcp握手時間,對DNS查找無多大相關影響)

經過使用keep-alive和較少域名來減小DNS查找

十、精簡JavaScript(JavaScript、css)

對JavaScript源代碼進行精簡

十一、避免重定向

尋找一種避免重定向方法

十二、刪除重複腳本

確保腳本只被包含一次

1三、配置Etag

Etag即爲文件的版本號,當文件超過了過時時間,瀏覽器會向服務器發起文件請求,若瀏覽器緩存文件的Etag和服務器一致,

服務器返回304,瀏覽器則會繼續使用本地緩存文件,

不一樣的服務器對相同的文件的etag定義(inode-size-timestamp)是不一樣的,瀏覽器訪問不一樣的服務器會致使相同的文件卻沒法經過Etag重用緩存

建議配置Etag,只包含大小和時間戳或只有時間戳,或者移除Etag(last-modified頭能夠提供等價信息),移除Etag能夠減少http頭大小

1四、使用Ajax可緩存

確保ajax請求遵照性能指導,尤爲應具備長久的Expires頭

相關文章
相關標籤/搜索