在決定采用HTTP/2之前,首先得知道你的代碼有哪些是針對HTTP/1.x優化過的。大概有四方面的優化。
1. 分域存儲。為了實現并行請求文件,你可能把文件分散到了不同的域里,CDN會自動這么做。但分域存儲會影響HTTP/2的性能,建議使用HTTP/2友好的分域存儲([建議七](http://www.w3ctech.com/topic/1563#tip7sharding)),只針對HTTP/1.x用戶分域。
2. 雪碧圖。雪碧圖把很多圖片拼成一個文件,然后通過代碼按需取得每個圖片。雪碧圖在HTTP/2的環境下沒太大用處,但還是有點用的。
3. 拼接的代碼文件。與使用雪碧圖的原因類似,很多獨立的文件也會被弄成一個,然后瀏覽器再從其中找到并運行需要的文件。
4. 插入行內的文件。CSS代碼、JavaScript代碼,甚至圖片等被直接插到HTML文件中的內容。這樣可以減少文件傳輸,代價是初始HTML文件較大。
后面三種優化都涉及把小文件塞進一個較大的文件里,目的是減少新建連接的初始化和握手,這些操作對TLS而言非常費時間。
第一種優化即分域存儲恰恰相反,強制打開多個連接,目的是并行地從不同的域獲取文件。這兩種看似矛盾的技術對于HTTP/1.x下的站點卻十分有效。然而,要用好這兩種技術,必須投入大量時間、精力和資源,用于實現、管理和運維。
在采用HTTP/2之前,需要找出應用了這些優化的代碼,分析一下它們會不會影響你的應用設計和工作流程。這樣在遷移到HTTP/2之后,就可以著手改造它們,甚至撤銷某些優化。