摘要:唯一的格式約束是該字符串必須用引號(hào)引起來(lái)。對(duì)于網(wǎng)站背后的服務(wù)器來(lái)說(shuō),不大相同。不過(guò)用戶不必忍受整個(gè)頁(yè)面的重新加載了,而且用戶在等待時(shí),仍然可以響應(yīng)。
本篇是對(duì)《高性能網(wǎng)站建設(shè)指南》一書(shū)的后7種規(guī)則進(jìn)行梳理。
八、使用外部Jacascript和css1.如果需要呈現(xiàn)給用戶的頁(yè)面可以實(shí)現(xiàn)完整緩存,那么使用外部Jacascript和css會(huì)提高網(wǎng)站性能。
2.在使用使用外部Jacascript和css時(shí),可以設(shè)置頁(yè)面加載完成后下載,這樣可保證頁(yè)面也首屏效果。
1.Internet是通過(guò)IP地址來(lái)查找服務(wù)器的。由于IP地址很難記憶,通常使用包含主機(jī)名的URL來(lái)取代它,但是瀏覽器發(fā)送請(qǐng)求時(shí),IP地址仍然是必需的。這就是Domain Name System(DNS)所處的角色,DNS將主機(jī)名映射到IP地址上。當(dāng)你輸入一個(gè)網(wǎng)址時(shí),鏈接到服務(wù)器的DNS解析器會(huì)返回服務(wù)器的IP地址。
2.DNS開(kāi)銷:通常瀏覽器查找的一個(gè)給定的主機(jī)名的IP地址要花費(fèi)20-120毫秒,在完成查找之前,瀏覽器不能從主機(jī)那里下載任何的東西。
3.使用Keep-Alive和較少的域名來(lái)減少DNS查詢
精簡(jiǎn)是從代碼中移除不必要的字符,比如空白符(空格、換行、制表符)等以減少文件大小,進(jìn)而改善加載時(shí)間。
十一、避免重定向1.重定向用于將用戶從一個(gè)url重新路由到另一個(gè)url。重定向有很多種:301和302是常見(jiàn)的兩種
2.當(dāng)Web服務(wù)器向?yàn)g覽器返回一個(gè)重定向時(shí),響應(yīng)中就會(huì)擁有一個(gè)范圍在3xx的狀態(tài)碼(注意:"304 Not Modeified"并不是真的重定向-他是用來(lái)響應(yīng)GET請(qǐng)求,避免下載已經(jīng)存在于瀏覽器緩存中的數(shù)據(jù)。)。
3.重定向的損傷:在重定向完畢并且HTML文檔下載完成之前,沒(méi)有任何東西顯示給用戶。
重復(fù)性腳本損傷性能的方式有兩種:不必要的HTTP請(qǐng)求和執(zhí)行JavsScript所浪費(fèi)的時(shí)間。
十三、配置或移除ETag1.Etag是什么?
實(shí)體標(biāo)簽(Entity Tag ETag)是Web服務(wù)器和瀏覽器用于確認(rèn)緩存組件的有效性的一種機(jī)制。
2.瀏覽器的緩存與確認(rèn)?
步驟一:Expires頭:瀏覽器在下載組件時(shí),會(huì)將它存儲(chǔ)到緩存中。再次請(qǐng)求改組件時(shí),會(huì)確認(rèn)改組件是否過(guò)期來(lái)決定是否重新請(qǐng)求改組件,而這個(gè)過(guò)期時(shí)間是由Expires頭的值來(lái)決定。當(dāng)請(qǐng)求一個(gè)組件時(shí),服務(wù)器會(huì)根據(jù)其選項(xiàng)在響應(yīng)中返回一個(gè)Expires頭。
步驟二:條件GET請(qǐng)求:如果緩存的組件過(guò)期了(或者用戶明確地重新記載了頁(yè)面),瀏覽器在重用它之前必須首先檢查它是否仍然有效,這稱作條件GET請(qǐng)求。如果組件有效,原始服務(wù)器會(huì)返回一個(gè)"304 Not Modified"狀態(tài)碼。
服務(wù)器在檢測(cè)緩存的組件是否有效時(shí)有兩種方式: 1.比較最新修改日期 2.比較實(shí)體標(biāo)簽
2.1 最新修改時(shí)間:
原始服務(wù)器通過(guò)Last-Modified響應(yīng)頭來(lái)返回組件的最新修改時(shí)間,它要求服務(wù)器端和客戶端時(shí)間完全統(tǒng)一的情況下才有意思。
2.1 實(shí)體標(biāo)簽:
ETag提供了另一種方式,用于檢測(cè)瀏覽器緩存中的組件與原始服務(wù)器上的組件是否匹配。ETag在HTTP1.1中引用。ETag是唯一標(biāo)識(shí)了一個(gè)組件的一個(gè)特定版本的字符串。唯一的格式約束是該字符串必須用引號(hào)引起來(lái)。原始服務(wù)器使用ETag來(lái)響應(yīng)指定組件的Etag。 Etag為驗(yàn)證實(shí)體提供了比修改最新日期更為靈活的機(jī)制,例如,如果實(shí)體依據(jù)User-Agent或者Accept-Language頭而改變,實(shí)體的狀態(tài)可以反映在ETag中。此后,如果瀏覽器必須驗(yàn)證一個(gè)組件,它會(huì)使用If-None-Match頭將ETag傳回原始服務(wù)器。如果ETag是匹配的,就會(huì)返回304狀態(tài)嗎。
3.ETag帶來(lái)的問(wèn)題
ETag的問(wèn)題在于,通常使用的組件的某些屬性來(lái)構(gòu)造它,這些屬性對(duì)于特定的,寄宿了網(wǎng)站的服務(wù)器來(lái)說(shuō)是唯一的。當(dāng)瀏覽器從一臺(tái)服務(wù)器獲取了原始組件,之后,又向另外一臺(tái)不同的服務(wù)器發(fā)起條件GET請(qǐng)求時(shí),ETag是不會(huì)匹配的——對(duì)于使用服務(wù)器集群來(lái)處理請(qǐng)求的網(wǎng)站來(lái)說(shuō),這是很常見(jiàn)的一種情況。默認(rèn)情況下,對(duì)于擁有多臺(tái)的服務(wù)器網(wǎng)站,APache和IIS中嵌入的數(shù)據(jù)都會(huì)大大地降低有效性驗(yàn)證的成功率。
3.1 Apache1.3和2.X的ETag格式是inode-size-timestamp,即使文件系統(tǒng)的所有信息都是一致的,但是不同服務(wù)器上的inode仍然是不同的。
3.2 IIS5.0和6.0在ETag上有著類似的問(wèn)題。IIS上ETag的格式是Fletimestamp:ChangNumber。ChangNumber適用于跟蹤IIS配置變化的計(jì)數(shù)器。對(duì)于網(wǎng)站背后的服務(wù)器來(lái)說(shuō),ChangNumber不大相同。
3.3 最后結(jié)果,對(duì)于完全相同的組件,從一臺(tái)服務(wù)器到另一臺(tái)Apache和 IIS產(chǎn)生的ETag是不同的,如果你使用了服務(wù)器集群,使用ETag會(huì)造成組件不必要的重復(fù)加載并影響服務(wù)器的性能、增加寬帶的開(kāi)銷。
4.ETag用還是不用?
如果你使用的是服務(wù)器集群,且使用默認(rèn)的ETag配置,你的用戶將面對(duì)緩慢的頁(yè)面,你的服務(wù)器會(huì)有很高的負(fù)載,你會(huì)消耗大量的帶寬,而且代理也不能有效地緩存你的內(nèi)容。
為了使用ETag的靈活性的驗(yàn)證能力而又要消除其所帶來(lái)的問(wèn)題,有一種選擇是對(duì)ETag進(jìn)行自定的配置。比如可以使用一段根據(jù)瀏覽器是否為Internet Explorer而變化的腳本。如果使用PHP來(lái)生成腳本,你可以通過(guò)設(shè)置ETag頭來(lái)反映瀏覽器的狀態(tài)。 如果你的組件必須通過(guò)最新修改日期之外的一些東西來(lái)進(jìn)行驗(yàn)證,則自定義ETag是一種強(qiáng)大的方法。如果你不能自定義ETag,建議你移除ETag。十四、使用Ajax可緩存
公所周知,主動(dòng)的Ajax請(qǐng)求時(shí)異步的,用戶可能仍然需要等待響應(yīng)。不過(guò)用戶不必忍受整個(gè)頁(yè)面的重新加載了,而且用戶在等待時(shí),UI仍然可以響應(yīng)。
由于Ajax畢竟是一個(gè)請(qǐng)求,所有為更好的用戶體驗(yàn),我們?nèi)孕杞Y(jié)合上面其他的性能優(yōu)化條例來(lái)使用,比如緩存等。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/114671.html
摘要:一直忙于工作,最近這段時(shí)間終于可以靜下心來(lái)細(xì)讀一些與工作相關(guān)的書(shū)籍。第二部分見(jiàn)提升網(wǎng)站頁(yè)面速度的條最佳實(shí)踐二。高性能網(wǎng)站建設(shè)指南一書(shū)共列舉了條提升網(wǎng)站速度的方法,本篇就前種進(jìn)行總結(jié)。 一直忙于工作,最近這段時(shí)間終于可以靜下心來(lái)細(xì)讀一些與工作相關(guān)的書(shū)籍。本篇文章是《高性能網(wǎng)站建設(shè)指南》一書(shū)的梳理。希望自己收獲的同時(shí),也能給對(duì)這塊知識(shí)感興趣的童鞋給與入門(mén)指導(dǎo)。關(guān)于《高性能網(wǎng)站建設(shè)指南》的梳...
摘要:一直忙于工作,最近這段時(shí)間終于可以靜下心來(lái)細(xì)讀一些與工作相關(guān)的書(shū)籍。第二部分見(jiàn)提升網(wǎng)站頁(yè)面速度的條最佳實(shí)踐二。高性能網(wǎng)站建設(shè)指南一書(shū)共列舉了條提升網(wǎng)站速度的方法,本篇就前種進(jìn)行總結(jié)。 一直忙于工作,最近這段時(shí)間終于可以靜下心來(lái)細(xì)讀一些與工作相關(guān)的書(shū)籍。本篇文章是《高性能網(wǎng)站建設(shè)指南》一書(shū)的梳理。希望自己收獲的同時(shí),也能給對(duì)這塊知識(shí)感興趣的童鞋給與入門(mén)指導(dǎo)。關(guān)于《高性能網(wǎng)站建設(shè)指南》的梳...
摘要:唯一的格式約束是該字符串必須用引號(hào)引起來(lái)。對(duì)于網(wǎng)站背后的服務(wù)器來(lái)說(shuō),不大相同。不過(guò)用戶不必忍受整個(gè)頁(yè)面的重新加載了,而且用戶在等待時(shí),仍然可以響應(yīng)。 本篇是對(duì)《高性能網(wǎng)站建設(shè)指南》一書(shū)的后7種規(guī)則進(jìn)行梳理。 八、使用外部Jacascript和css 1.如果需要呈現(xiàn)給用戶的頁(yè)面可以實(shí)現(xiàn)完整緩存,那么使用外部Jacascript和css會(huì)提高網(wǎng)站性能。 2.在使用使用外部Jacascr...
閱讀 1849·2021-11-25 09:43
閱讀 1491·2021-09-02 15:21
閱讀 3453·2019-08-30 15:52
閱讀 1501·2019-08-30 12:48
閱讀 1295·2019-08-30 10:57
閱讀 2929·2019-08-26 17:41
閱讀 681·2019-08-26 11:59
閱讀 1366·2019-08-26 10:41