提高網(wǎng)站性能的SEO后端優(yōu)化全列表
提高網(wǎng)站性能的SEO 后端優(yōu)化全列表從我開始知道 SEO 這幾年起,基本上所有的 SEO 活動都是基于前端的,從header 到 body ,從小標(biāo)簽到 CSS ,從鏈接到關(guān)鍵詞密度;初期牛人們診斷一
提高網(wǎng)站性能的SEO 后端優(yōu)化全列表
從我開始知道 SEO 這幾年起,基本上所有的 SEO 活動都是基于前端的,從header 到 body ,從小標(biāo)簽到 CSS ,從鏈接到關(guān)鍵詞密度;初期牛人們診斷一個網(wǎng)站 SEO 的標(biāo)準(zhǔn)也是從前端頁面著手,不過的確也是,從排名算法前端的代碼的確占了大部分的比例,但后端的服務(wù)器速度優(yōu)化,也開始成為一個越來越重要的因素,特別是流言四起的Google 將會把網(wǎng)站速度作為算法的一部分。
當(dāng)然,服務(wù)器那種事不該是一個 SEOer 或者 SEMer 應(yīng)該去精通的東西,其實只要了解并掌握其規(guī)律就可以了(推薦另外一片文章:大型網(wǎng)站架構(gòu)演變和知識體系) ;但依然要熟悉網(wǎng)站系統(tǒng)或者 CMS 的加速手段,正如國平在《怎樣形成一套非??茖W(xué)系統(tǒng)的SEO 方法》中分析的 什么措施能影響網(wǎng)頁加載速度呢? 網(wǎng)絡(luò)環(huán)境、服務(wù)器硬件、CMS 本身都能影響網(wǎng)頁加載速度。優(yōu)化其中的任何一項,都能提升網(wǎng)頁加載速度。那馬上又可以得出:網(wǎng)絡(luò)環(huán)境影響SEO 流量、服務(wù)器硬件影響SEO 流量、CMS 本身的速度影響SEO 流量。
影響速度的因素有很多,這里做一個匯總(不包括硬件)
本文內(nèi)容參考Yahoo :Best Practices for Speeding Up Your Web Site 和 高性能網(wǎng)頁開發(fā)的14條軍規(guī)
一、盡可能的減少 HTTP 的請求數(shù)
這個第一條是我們大多數(shù)SEO 所知道的,我再做一個簡單的描述:大多數(shù)的HTTP 請求都是前端的,用戶的大多數(shù)時間都被用來下載圖片、CSS 樣式表、各種Scripts 、Flash 等等。當(dāng)然或許將css ,js 文件拆分多個是因為css 結(jié)構(gòu),共用等方面的考慮。阿里巴巴中文站當(dāng)時的做法是開發(fā)時依然分開開發(fā),然后在后臺 對js ,css 進行合并,這樣對于瀏覽器來說依然是一個請求,但是開發(fā)時仍然能還原成多個,方便管理和重復(fù)引用。yahoo 甚至建議將首頁的css 和 js 直接寫在頁面文件里面,而不是外部引用。因為首頁的訪問量太大了,這么做也可以減少兩個請求數(shù)。而事實上國內(nèi)的很多門戶都是這么做的。
而css sprites是指只用將頁面上的背景圖合并成一張,然后通過css 的background-position 屬性定義不過的值來取他的背景。淘寶和阿里巴巴中文站目前都是這樣做的。有興趣的可以看下淘寶和阿里巴巴的背景圖。
,background-position 坐標(biāo)。并將結(jié)果以png 和gif 的格式輸出。
二、使用CDN (內(nèi)容分發(fā)網(wǎng)絡(luò))Content Delivery Network
之前曾經(jīng)問過張智勇公子關(guān)于 CDN 是否對 SEO 有影響,在征詢了技術(shù)老總的意見之后,這個影響其實幾乎可以忽略的,反而是用戶端的速度體驗提升了,對網(wǎng)站的正向作用更大。
CDN 加速現(xiàn)在很流行,幾乎稍微大一點的網(wǎng)站都有用這個服務(wù),就是將網(wǎng)站的鏡像服務(wù)備份到多個服務(wù)器節(jié)點,從而加速該服務(wù)器周圍的用戶訪問。
更詳細地內(nèi)容大家可以參考百度百科上對于CDN 的解釋
三、添加Expire/Cache-Control 頭
這個規(guī)則有兩個東西:
?
? 對靜態(tài)的組件:設(shè)置為永不過期; 對動態(tài)的組件:設(shè)置為一個合理的緩存控制頭來幫助有條件的相應(yīng).
通過設(shè)置Expires header 來緩存這些文件。Expire 其實就是通過header 報文來指定特定類型的文件在覽器中的緩存時間。大多數(shù)的圖片,flash 在發(fā)布后都是不需要經(jīng)常修 改的,做了緩存以后這樣瀏覽器以后就不需要再從服務(wù)器下載這些文件而是而直接從緩存中讀取,這樣再次訪問頁面的速度會大大加快。 一個典型的HTTP 1.1協(xié)議返回的頭信息:
HTTP/1.1 200 OK
Date: Fri, 30 Oct 1998 13:19:41 GMT
Server: Apache/1.3.3 (Unix)
Cache-Control: max-age=3600, must-revalidate
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT
ETag: “3e86-410-3596fbbc”
,Content-Length: 1040
Content-Type: text/html
其中通過服務(wù)器端腳本設(shè)置Cache-Control 和Expires 可以完成。
如,在php 中設(shè)置30天后過期:
= “Expires: ” . gmdate (“D, d M Y H:i:s”, time () $offset ) . “ GMT”;Header($ExpStr ); –>
在asp 中設(shè)置絕對時間過期:
< Response.ExpiresAbsolute=#May 31,2010 13:30:15 GMT# >
也可以通過配置服務(wù)器本身完成,這些偶就不是很清楚了,呵呵。想了解跟多的朋友可以參考
四、Gzip 壓縮
這個是目前應(yīng)用最多的加速方式之一,代碼也很簡單,gzip 的壓縮比例非常大,一般壓縮率為85,就是 說服務(wù)器端100K 的頁面可以壓縮到25K 左右再發(fā)送到客戶端。雅虎開發(fā)者特別強調(diào), 所有的文本內(nèi)容都應(yīng)該被gzip 壓縮: html (php), js, css, xml, txt。
五、將css 放在頁面最上面
六、將script 放在頁面最下面
七、避免在CSS 中使用Expressions
css 表達是的執(zhí)行次數(shù)是遠遠多于我們想象的,往往會嚴(yán)重地影響性能。而且,它只能在IE 中執(zhí)行。所以因盡量地避免它。這一條以前倒沒想過,個人用 這個就是在對ie 使用max-width 和min-width 屬性的時
,候。大家知道IE 是不支持max-width 和min-width 屬性的。有時候的 頁面(特別是自適應(yīng)大小的頁面)為了能在分辨率小到一定程度后還能顯示要用到這個功能,怎么辦。當(dāng)時我的做法就是利用expressions:
八、外置javascript 和css 文件
這個地球人都知道
九、減少DNS 查詢
在 Internet 上域名與IP 地址之間是一一對應(yīng)的,域名(SEMWatch.org )很好記,但計算機不認識,計算機之間的“相認”還要轉(zhuǎn)成ip 地址。在網(wǎng)絡(luò) 上每臺計算機都對應(yīng)有一個獨立的ip 地址。在域名和ip 地址之間的轉(zhuǎn)換工作稱為域名解析,也稱DNS 查詢。一次DNS 的解析過程會消耗20-120毫秒的 時間, 在dns 查詢結(jié)束之前,瀏覽器不會下載該域名下的任何東西。所以減少dns 查詢的時間可以加快頁面的加載速度。yahoo 的建議一個頁面所包含的域 名數(shù)盡量控制在2-4個。這就需要對頁面整體有一個很好的規(guī)劃。
十、壓縮 JavaScript 和 CSS
壓縮js 和css 的左右很顯然,減少頁面字節(jié)數(shù)。容量小頁面加載速度自然也就快。而且壓縮除了減少體積以外還可以起到一定的保護左右。
當(dāng)然,壓縮帶來的一個弊端就是代碼的可讀性沒了。相信很多做前端的朋友都遇到過這個問題:看Google 的效果很酷,可是去看他的源代碼卻是一大堆 擠在一起的字符,連函數(shù)名都是替換過的,汗死!自己的代碼也這樣豈不是對維護非常不方便。
十一、雅虎開發(fā)者告訴我們要避免重定向
301,302重定向是普通 SEO 里最常見的,特別是301,對權(quán)重的轉(zhuǎn)移和保留非常有幫助,除非迫不得以,盡量少用重定向。
十二、移除重復(fù)的腳本
這點我想不說也知道,不僅是從性能上考慮,代碼規(guī)范上看也是這樣。但是不得不承認,很多時候我們會因為圖一時之快而加上一些或許是重復(fù)的代碼
,十三、配置實體標(biāo)簽(Configure ETags)
這點我也不懂,呵呵。在inforQ 上找到一篇解釋得比較詳細的說明《使用ETags 減少Web 應(yīng)用帶寬和負載》,有興趣的同學(xué)可以去看看。
十四、使 AJAX 緩存 (Make Ajax Cacheable )
記住,即使AJAX 是動態(tài)產(chǎn)生的而且只對一個用戶起作用,他們依然可以被緩存
Even though your Ajax responses are created dynamically, and might only be applicable to a single user, they can still be cached. Doing so will make your Web 2.0 apps faster.
十五、Flush the Buffer Early
十六、Use GET for AJAX Requests
十七、Post-load Components
十八、Preload Components
十九、Reduce the Number of DOM Elements
二十、Split Components Across Domains
二十一、Minimize the Number of iframes
框架最好都不要用。
二十二、No 404s
這個和SEO 的相關(guān)條款不一致,可以忽視哈。
二十三、Reduce Cookie Size
盡可能的吧,cookies 跟蹤好了,有可能比速度更重要
,二十四、Use Cookie-free Domains for Components 二十五、Minimize DOM Access
二十六、Develop Smart Event Handlers
二十七、Choose over @import
二十八、Avoid Filters
二十九、Optimize Images
三十、Optimize CSS Sprites
三十一、Don’t Scale Images in HTML
三十二、Make favicon.ico Small and Cacheable 三十三、Keep Components under 25K
三十四、Pack Components into a Multipart Document 三十五、Avoid Empty Image src
避免空的圖片地址鏈接
1. straight HTML
2. JavaScript var img = new Image();
img.src = “”;
這兩種形式都會導(dǎo)致同樣的效果:瀏覽器會向服務(wù)器進行額外請求
,三十六、沒了 哎喲,太多了