1.CDN
cdn——維基百科給出的解釋是:內(nèi)容分發(fā)網(wǎng)絡(luò)(Content delivery network或Content distribution network溉跃,縮寫:CDN)帜消。簡單來說它主要的工作是把我們需要被分發(fā)的內(nèi)容分發(fā)到世界各地的各個節(jié)點(diǎn)上殃恒,讓世界各地的人都可以在距離最近的網(wǎng)絡(luò)節(jié)點(diǎn)拿到想要拿到的內(nèi)容履怯,減少網(wǎng)絡(luò)傳輸距離從而達(dá)到加速的目的终畅。
2.Keep-Alive模式
我們知道HTTP協(xié)議采用“請求-應(yīng)答”模式宏所,當(dāng)使用普通模式命咐,即非KeepAlive模式時(shí)诈铛,每個請求/應(yīng)答客戶和服務(wù)器都要新建一個連接乙各,完成之后立即斷開連接(HTTP協(xié)議為無連接的協(xié)議);當(dāng)使用Keep-Alive模式(又稱持久連接幢竹、連接重用)時(shí)耳峦,Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對服務(wù)器的后繼請求時(shí)妨退,Keep-Alive功能避免了建立或者重新建立連接妇萄。
http 1.0中默認(rèn)是關(guān)閉的蜕企,需要在http頭加入”Connection: Keep-Alive”,才能啟用Keep-Alive冠句;http 1.1中默認(rèn)啟用Keep-Alive轻掩,如果加入”Connection: close “,才關(guān)閉懦底。目前大部分瀏覽器都是用http1.1協(xié)議唇牧,也就是說默認(rèn)都會發(fā)起Keep-Alive的連接請求了,所以是否能完成一個完整的Keep-Alive連接就看服務(wù)器設(shè)置情況聚唐。
3.cache-control
我們可以在請求頭中設(shè)置 cache-control 來指導(dǎo)瀏覽器進(jìn)行緩存?
比如response.setHeader('cache-control','max-age=30')
意思是 三十秒鐘之內(nèi)丐重,同樣的內(nèi)容不請求第二次。
3.Etag
Etag 可以在響應(yīng)頭中給你請求的文件設(shè)置一個MD5值 返回費(fèi)客戶端
當(dāng)你第二次請求的時(shí)候 請求頭就會帶上這個MD5? 然后對比這個值
如果一樣那就說明兩次請求的內(nèi)容是一樣的? 瀏覽器就會 返回 304 用緩存里面的內(nèi)容而不是重新下載(請求但是不下載)
4.G-zip
GZIP網(wǎng)頁壓縮杆查,是一種WEB服務(wù)器與瀏覽器之間共同遵守的協(xié)議扮惦,也就是說WEB服務(wù)器和瀏覽器都必須支持該技術(shù)才能實(shí)現(xiàn)GZIP壓縮,而當(dāng)下主流的瀏覽器都是支持GZIP壓縮亲桦,包括IE6崖蜜、IE7、IE8客峭、IE9豫领、FireFox、谷歌瀏覽器舔琅、Opera等等恐,而常見的WEB服務(wù)器通常有Apache和IIS兩種。GZIP最早由Jean-loup Gailly和Mark Adler創(chuàng)建备蚓,用于UNIX系統(tǒng)的文件壓縮课蔬。我們在Linux中經(jīng)常會用到后綴為.gz的文件,它們就是GZIP格式的星著。目前购笆,GZIP已經(jīng)成為Internet上使用非常普遍的一種數(shù)據(jù)壓縮格式,或者說一種文件格式虚循。下面介紹一下GZIP壓縮時(shí)同欠,WEB服務(wù)器與瀏覽器之間的協(xié)商過程如下:1、首先瀏覽器請求某個URL地址横缔,并在請求的開始部分頭(head) 設(shè)置屬性accept-encoding值為gzip铺遂、deflate,表明瀏覽器支持gzip和deflate這兩種壓縮方式(事實(shí)上deflate也是使用GZIP壓縮協(xié)議茎刚,在之后的內(nèi)容之我們會介紹二者之間的區(qū)別)襟锐;2、WEB服務(wù)器接收到請求后判斷瀏覽器是否支持GZIP壓縮膛锭,如果支持就傳送壓縮后的響應(yīng)內(nèi)容粮坞,否則傳送不經(jīng)過壓縮的內(nèi)容蚊荣;3、瀏覽器獲取響應(yīng)內(nèi)容后莫杈,判斷內(nèi)容是否被壓縮互例,如果是壓縮文件則解壓縮,然后顯示響應(yīng)頁面的內(nèi)容筝闹。
5.調(diào)整css文件和js文件位置
一般情況下我們都將css文件放在head中 而js文件則放在body后面媳叨,因?yàn)橐恍g覽器會先等css文件加載完畢再開始渲染頁面,把css放在前面可以讓頁面更快的被渲染出來关顷,而js則可以利用頁面渲染后到用戶移動鼠標(biāo)的這段時(shí)間完成加載糊秆。
6.合并文件
如果一個頁面的文件過多,那么可以通過合并文件來達(dá)到較少請求次數(shù)的目的议双。
7.增加域名以并行下載資源
上面提到我們可以通過合并文件來減少請求次數(shù)痘番,但是如果文件的體積過大,就算請求次數(shù)減少來平痰,但是單次請求的時(shí)間變長了夫偶,這時(shí)候我們就不能用合并文件的方法了,因?yàn)橐粋€域名最多可以同時(shí)發(fā)送四個請求觉增,在文件過多的情況下我們可以通過增加域名的方法來同時(shí)請求多個資源。
8.減小Cookie尺寸
HTTP的cookies由于許多原因而被使用(例如權(quán)限認(rèn)證以及私人原因)翻斟。cookies中包含的信息會在web服務(wù)器和瀏覽器之間的HTTP報(bào)頭進(jìn)行交換逾礁。使得cookies的尺寸盡可能的小,將對用戶響應(yīng)時(shí)間造成的影響降到最低是非常重要的访惜。
核對更多的信息嘹履,請查閱Tenni Theurer和Patty Chi編寫的“When the Cookie Crumbles”。調(diào)查后得到實(shí)際結(jié)果如下:
去除不必要的cookies cookies的尺寸盡可能的小债热,將對用戶響應(yīng)時(shí)間造成的影響降到最低砾嫉。 在合適的域級別設(shè)置cookies應(yīng)該注意,所以其它子域名不會受影響窒篱。 合理設(shè)置過期時(shí)間焕刮。太早的過期時(shí)間或者不設(shè)過期時(shí)間,會更快的移除cookies墙杯,縮短用戶的響應(yīng)時(shí)間配并。