1、將css放在頁(yè)面最上面,將js放在頁(yè)面最下面
css放在頁(yè)面最上面可以防止頁(yè)面出現(xiàn)白屏、閃跳的現(xiàn)象,即減少頁(yè)面的首屏出現(xiàn)時(shí)間。js的下載和執(zhí)行會(huì)阻塞Dom樹的構(gòu)建(嚴(yán)謹(jǐn)?shù)卣f(shuō)是中斷了Dom樹的更新),所以script標(biāo)簽放在首屏范圍內(nèi)的HTML代碼段里會(huì)截?cái)嗍灼恋膬?nèi)容。而且js中可能會(huì)對(duì)DOM節(jié)點(diǎn)進(jìn)行操作,而這時(shí)代碼是自上向下進(jìn)行執(zhí)行的,這樣會(huì)造成js對(duì)相應(yīng)的元素操作不了。所以js放在頁(yè)面的最下面。
2、減少文件體積,去除不必要的空白符、格式符、注釋。
也就是減小文件占用內(nèi)存,更快,更高效餓去加載網(wǎng)頁(yè)和腳本。
3、把js和css提取出來(lái)放在外部文件中
把js和css文件提取出來(lái)放在外部文件的優(yōu)點(diǎn)是:減少html文件體積,提高了js和css的復(fù)用行,提高日后的可維護(hù)性。缺點(diǎn)時(shí):增加了http請(qǐng)求。(js和css代碼比較少的時(shí)候,可以將js和css寫在頁(yè)面上)
4、避免重定向
重定向就是用戶請(qǐng)求的頁(yè)面被轉(zhuǎn)移到了別的地方,瀏覽器向服務(wù)請(qǐng)請(qǐng)求一個(gè)頁(yè)面,服務(wù)器告訴瀏覽器請(qǐng)求的頁(yè)面已經(jīng)被轉(zhuǎn)移到另外一個(gè)頁(yè)面,并告知另一個(gè)頁(yè)面地址,瀏覽器就再發(fā)送請(qǐng)求到重定向的地址。這樣會(huì)增加服務(wù)器和瀏覽器之間的往返次數(shù),影響網(wǎng)站性能。
5、移除重復(fù)的腳本
6、減少DNS查詢
DNS查詢服務(wù)指域名查找,指將請(qǐng)求的域名轉(zhuǎn)化為對(duì)應(yīng)的IP地址,就如姓名和門牌號(hào)的關(guān)系。如輸入www.baidu.com ?DNS系統(tǒng)會(huì)將此域名轉(zhuǎn)化為119.75.217.109,然后將IP地址返回給瀏覽器,這個(gè)過程會(huì)花費(fèi)一定的時(shí)間,影響頁(yè)面的加載,所以要盡可能減少DNS查詢。
減少DNS查詢的方法有:緩存 DNS查找可以改善頁(yè)面性能,大多數(shù)瀏覽器有自己的緩存系統(tǒng),緩存時(shí)間又不一致,緩存時(shí)間越長(zhǎng),DNS保存的時(shí)間越長(zhǎng)。
當(dāng)客戶端中的 DNS緩存都為空時(shí)(瀏覽器和操作系統(tǒng)都為空), DNS查找的次數(shù)和頁(yè)面中主機(jī)名的數(shù)量相同。這其中包括頁(yè)面中 URL、圖片、腳本文件、樣式表、Flash對(duì)象等包含的主機(jī)名。減少主機(jī)名的數(shù)量可以減少DNS查找次數(shù)。
減少主機(jī)名的數(shù)量還可以減少頁(yè)面中并行下載的數(shù)量。減少 DNS查找次數(shù)可以節(jié)省響應(yīng)時(shí)間,但是減少并行下載卻會(huì)增加響應(yīng)時(shí)間。我的指導(dǎo)原則是 把這些頁(yè)面中的內(nèi)容分割成至少兩部分但不超過四部分。這種結(jié)果就是在減少 DNS查找次數(shù)和保持較高程度并行下載兩者之間的權(quán)衡了。
8、使用ajax緩存
ajax的get和post方法:
只要是瀏覽器的get請(qǐng)求,瀏覽器都會(huì)使用緩存,對(duì)于同一地址的請(qǐng)求,服務(wù)器會(huì)發(fā)送304狀態(tài)碼到瀏覽器,瀏覽器就會(huì)使用緩存中的數(shù)據(jù)
post的請(qǐng)求每次都會(huì)被執(zhí)行,瀏覽器不會(huì)緩存