web 性能優(yōu)化

1.CDN

cdn——維基百科給出的解釋是:內(nèi)容分發(fā)網(wǎng)絡(luò)(Content delivery network或Content distribution network,縮寫:CDN)。簡(jiǎn)單來說它主要的工作是把我們需要被分發(fā)的內(nèi)容分發(fā)到世界各地的各個(gè)節(jié)點(diǎn)上,讓世界各地的人都可以在距離最近的網(wǎng)絡(luò)節(jié)點(diǎn)拿到想要拿到的內(nèi)容,減少網(wǎng)絡(luò)傳輸距離從而達(dá)到加速的目的。

2.Keep-Alive模式

我們知道HTTP協(xié)議采用“請(qǐng)求-應(yīng)答”模式,當(dāng)使用普通模式,即非KeepAlive模式時(shí),每個(gè)請(qǐng)求/應(yīng)答客戶和服務(wù)器都要新建一個(gè)連接,完成之后立即斷開連接(HTTP協(xié)議為無連接的協(xié)議);當(dāng)使用Keep-Alive模式(又稱持久連接、連接重用)時(shí),Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(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)都會(huì)發(fā)起Keep-Alive的連接請(qǐng)求了,所以是否能完成一個(gè)完整的Keep-Alive連接就看服務(wù)器設(shè)置情況。

3.cache-control

我們可以在請(qǐng)求頭中設(shè)置 cache-control 來指導(dǎo)瀏覽器進(jìn)行緩存?

比如response.setHeader('cache-control','max-age=30')

意思是 三十秒鐘之內(nèi),同樣的內(nèi)容不請(qǐng)求第二次。

3.Etag

Etag 可以在響應(yīng)頭中給你請(qǐng)求的文件設(shè)置一個(gè)MD5值 返回費(fèi)客戶端

當(dāng)你第二次請(qǐng)求的時(shí)候 請(qǐng)求頭就會(huì)帶上這個(gè)MD5? 然后對(duì)比這個(gè)值

如果一樣那就說明兩次請(qǐng)求的內(nèi)容是一樣的? 瀏覽器就會(huì) 返回 304 用緩存里面的內(nèi)容而不是重新下載(請(qǐng)求但是不下載)

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)的文件壓縮。我們?cè)贚inux中經(jīng)常會(huì)用到后綴為.gz的文件,它們就是GZIP格式的。目前,GZIP已經(jīng)成為Internet上使用非常普遍的一種數(shù)據(jù)壓縮格式,或者說一種文件格式。下面介紹一下GZIP壓縮時(shí),WEB服務(wù)器與瀏覽器之間的協(xié)商過程如下:1、首先瀏覽器請(qǐng)求某個(gè)URL地址,并在請(qǐng)求的開始部分頭(head) 設(shè)置屬性accept-encoding值為gzip、deflate,表明瀏覽器支持gzip和deflate這兩種壓縮方式(事實(shí)上deflate也是使用GZIP壓縮協(xié)議,在之后的內(nèi)容之我們會(huì)介紹二者之間的區(qū)別);2、WEB服務(wù)器接收到請(qǐng)求后判斷瀏覽器是否支持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覽器會(huì)先等css文件加載完畢再開始渲染頁面,把css放在前面可以讓頁面更快的被渲染出來,而js則可以利用頁面渲染后到用戶移動(dòng)鼠標(biāo)的這段時(shí)間完成加載。

6.合并文件

如果一個(gè)頁面的文件過多,那么可以通過合并文件來達(dá)到較少請(qǐng)求次數(shù)的目的。

7.增加域名以并行下載資源

上面提到我們可以通過合并文件來減少請(qǐng)求次數(shù),但是如果文件的體積過大,就算請(qǐng)求次數(shù)減少來,但是單次請(qǐng)求的時(shí)間變長(zhǎng)了,這時(shí)候我們就不能用合并文件的方法了,因?yàn)橐粋€(gè)域名最多可以同時(shí)發(fā)送四個(gè)請(qǐng)求,在文件過多的情況下我們可以通過增加域名的方法來同時(shí)請(qǐng)求多個(gè)資源。

8.減小Cookie尺寸

HTTP的cookies由于許多原因而被使用(例如權(quán)限認(rèn)證以及私人原因)。cookies中包含的信息會(huì)在web服務(wù)器和瀏覽器之間的HTTP報(bào)頭進(jìn)行交換。使得cookies的尺寸盡可能的小,將對(duì)用戶響應(yīng)時(shí)間造成的影響降到最低是非常重要的。

核對(duì)更多的信息,請(qǐng)查閱Tenni Theurer和Patty Chi編寫的“When the Cookie Crumbles”。調(diào)查后得到實(shí)際結(jié)果如下:

去除不必要的cookies cookies的尺寸盡可能的小,將對(duì)用戶響應(yīng)時(shí)間造成的影響降到最低。 在合適的域級(jí)別設(shè)置cookies應(yīng)該注意,所以其它子域名不會(huì)受影響。 合理設(shè)置過期時(shí)間。太早的過期時(shí)間或者不設(shè)過期時(shí)間,會(huì)更快的移除cookies,縮短用戶的響應(yīng)時(shí)間。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 網(wǎng)頁性能優(yōu)化的目的 減少服務(wù)器壓力 增強(qiáng)用戶體驗(yàn),減少加載時(shí)間,通俗地說就是用戶感覺打開你的網(wǎng)頁很快,等待頁面資源...
    Scott1738閱讀 404評(píng)論 0 1
  • 如何理解 Web 性能優(yōu)化 事實(shí)上就是用戶覺得頁面加載很快,用戶從輸入U(xiǎn)RL(網(wǎng)址)到頁面在瀏覽器上加載出來的時(shí)間...
    不討喜的大雄閱讀 726評(píng)論 0 2
  • 摘要:本文通過 “ 一個(gè)頁面從輸入 URL 到頁面加載顯示完成 ” 的各個(gè)步驟,來詳解闡述一下每一步可以如何優(yōu)化,...
    EnochQin閱讀 477評(píng)論 0 2
  • title: Web性能優(yōu)化date: 2018-11-03 16:46:40tags: [JavaScript]...
    祈念念念閱讀 381評(píng)論 0 0
  • 使用CDN CDN全稱是Content Delivery Network,就是把資源放在不同的地方,用戶請(qǐng)求那個(gè)資...
    寫代碼的海怪閱讀 219評(píng)論 0 0

友情鏈接更多精彩內(nèi)容