1汁汗、減少http請求,合理設置HTTP緩存
減少http的主要手段是合并CSS磕诊、合并JavaScript姿现、合并圖片扼脐。將瀏覽器一次訪問需要的javascript和CSS合并成一個文件岸军,這樣瀏覽器就只需要一次請求。圖片也可以合并瓦侮,多張圖片合并成一張艰赞,如果每張圖片都有不同的超鏈接,可通過CSS偏移響應鼠標點擊操作肚吏,構造不同的URL方妖。緩存的力量是強大的,恰當?shù)木彺嬖O置可以大大的減少 HTTP請求罚攀。假設某網(wǎng)站首頁吁断,當瀏覽器沒有緩存的時候訪問一共會發(fā)出 78個請求,共 600多 K數(shù)據(jù)坞生,而當?shù)诙卧L問即瀏覽器已緩存之后訪問則僅有 10個請求,共 20多 K數(shù)據(jù)掷伙。 (這里需要說明的是是己,如果直接 F5刷新頁面的話效果是不一樣的,這種情況下請求數(shù)還是一樣任柜,不過被緩存資源的請求服務器是 304響應卒废,只有 Header沒有Body沛厨,可以節(jié)省帶寬 )。
2摔认、使用瀏覽器緩存
對一個網(wǎng)站而言逆皮,CSS、javascript参袱、logo电谣、圖標這些靜態(tài)資源文件更新的頻率都比較低,而這些文件又幾乎是每次http請求都需要的抹蚀,如果將這些文件緩存在瀏覽器中剿牺,可以極好的改善性能。通過設置http頭中的cache-control和expires的屬性环壤,可設定瀏覽器緩存晒来,緩存時間可以是數(shù)天,甚至是幾個月
3郑现、啟用壓縮
在服務器端對文件進行壓縮湃崩,在瀏覽器端對文件解壓縮,可有效減少通信傳輸?shù)臄?shù)據(jù)量接箫。如果可以的話攒读,盡可能的將外部的腳本、樣式進行合并列牺,多個合為一個整陌。文本文件的壓縮效率可達到80%以上,因此HTML瞎领、CSS泌辫、javascript文件啟用GZip壓縮可達到較好的效果。但是壓縮對服務器和瀏覽器產(chǎn)生一定的壓力九默,在通信帶寬良好震放,而服務器資源不足的情況下要權衡考慮。
4驼修、CSS Sprites
合并 CSS圖片殿遂,減少請求數(shù)的又一個好辦法,如果有條件乙各,可以做成字體icon墨礁,因為每加載一張圖片,就會請求一次耳峦,而字體庫只需請求一次就可以了恩静,大大的減少了服務器的帶寬。
5、LazyLoad Images
這條策略實際上并不一定能減少 HTTP請求數(shù)驶乾,但是卻能在某些條件下或者頁面剛加載時減少 HTTP請求數(shù)邑飒。對于圖片而言,在頁面剛加載的時候可以只加載第一屏级乐,當用戶繼續(xù)往后滾屏的時候才加載后續(xù)的圖片疙咸。這樣一來,假如用戶只對第一屏的內容感興趣時风科,那剩余的圖片請求就都節(jié)省了撒轮。
6、CSS放在頁面最上部丐重,javascript放在頁面最下面
瀏覽器會在下載完成全部CSS之后才對整個頁面進行渲染腔召,因此最好的做法是將CSS放在頁面最上面,讓瀏覽器盡快下載CSS扮惦。如果將 CSS放在其他地方比如 BODY中臀蛛,則瀏覽器有可能還未下載和解析到 CSS就已經(jīng)開始渲染頁面了,這就導致頁面由無 CSS狀態(tài)跳轉到 CSS狀態(tài)崖蜜,用戶體驗比較糟糕浊仆,所以可以考慮將CSS放在HEAD中。
Javascript則相反豫领,瀏覽器在加載javascript后立即執(zhí)行抡柿,有可能會阻塞整個頁面,造成頁面顯示緩慢等恐,因此javascript最好放在頁面最下面洲劣。但如果頁面解析時就需要用到javascript,這時放到底部就不合適了课蔬。
7囱稽、異步請求Callback(就是將一些行為樣式提取出來,慢慢的加載信息的內容)
8二跋、減少cookie傳輸
一方面战惊,cookie包含在每次請求和響應中,太大的cookie會嚴重影響數(shù)據(jù)傳輸扎即,因此哪些數(shù)據(jù)需要寫入cookie需要慎重考慮吞获,盡量減少cookie中傳輸?shù)臄?shù)據(jù)量。另一方面谚鄙,對于某些靜態(tài)資源的訪問各拷,如CSS、script等闷营,發(fā)送cookie沒有意義烤黍,可以考慮靜態(tài)資源使用獨立域名訪問,避免請求靜態(tài)資源時發(fā)送cookie,減少cookie傳輸次數(shù)
9蚊荣、Javascript代碼優(yōu)化
10、CSS選擇符優(yōu)化