開發(fā)APP的公司怎樣解決異步加載第三方資源?深圳APP開發(fā)公司在這里提醒對于APP開發(fā)來說好的用戶體驗從加載開始。第三方資源有的時候不可控,比如說頁面統(tǒng)計、地圖顯示、分享組件等,這些第三方資源使用的時候要慎重選擇,充分考察它們對于性能的影響。
為了避免第三方資源在頁面加載時成為問題,甚至有可能更嚴(yán)重地阻塞全部頁面的加載,應(yīng)該使用異步的方式加載第三方資源,防止第三方資源的使用影響到頁面本身的功能。例如,異步加載第三方JavaScript資源:
01 var url = 'thirdpart. js', // 第三方 JavaScript 資源 地址 02 script = document. createElement(' script'), 03 scripts = document. getElementsByTagName(' script')[ 0]; 04 script. async = true; 05 script. src = url; 06 scripts. parentNode. insertBefore( script, scripts);
在加載時間較長的時候,務(wù)必要讓用戶明確感知到加載完成的提示,通常是在加載過程中顯示Loading的進(jìn)度條,加載完成的時候隱藏它。從心理上,這會讓用戶有一種“期盼感”,而不至于太過枯燥。對于一些重量級的移動應(yīng)用,例如游戲,開始前需要加載很多資源才能讓后面的游戲過程更為流暢,一個帶百分比進(jìn)度顯示的進(jìn)度條就更加重要了。
APP開發(fā)公司提醒關(guān)于其他加載優(yōu)化除了前幾小節(jié)介紹的加載優(yōu)化之外,還有Cookie和重定向優(yōu)化。
開發(fā)APP關(guān)于優(yōu)化Cookie
眾所周知,HTTP是一個無狀態(tài)協(xié)議,所以客戶端每次發(fā)出請求時,下一次請求無法得知上一次請求所包含的狀態(tài)數(shù)據(jù),如何能把一個用戶的狀態(tài)數(shù)據(jù)關(guān)聯(lián)起來呢?Cookie是解決這個問題的方法之一。在服務(wù)器與瀏覽器之間Cookie的處理與傳遞如圖9.21所示。
Cookie核心對象是key-value,除此之外還有max-age、path、domain和httponly屬性。httponly屬性標(biāo)識一個客戶端JavaScript能否直接操作該Cookie;max-age表示緩存時間,單位為秒;domain代表域名,例如設(shè)置為.myblog.com,則i.myblogs.com也可以訪問該Cookie,如果設(shè)置為i.cnblogs.com,則image.cnblogs.com這個域名下的資源將不能訪問這個Cookie;path代表文件路徑,默認(rèn)為/,表示該domain下的所有資源都可以訪問這個Cookie。
瀏覽器對單個Cookie大小限制不超過4KB;對于同一域名下Cookie的數(shù)量也有限制,一般不允許超過50個。假如Http請求響應(yīng)頭部Set-Cookie的時候沒有給Cookie添加一個過期時間,則它的默認(rèn)過期時間為當(dāng)前瀏覽會話結(jié)束,即退出瀏覽器這個Cookie就無效了,這個Cookie就叫作非持久Cookie,因為是存儲在瀏覽器進(jìn)程的內(nèi)存中的。如果給Cookie添加了一個過期時間,則Cookie信息將存儲到硬盤上,即使瀏覽器退出這個Cookie還是存在的。只要Cookie未被清除且還在過期時間以內(nèi),這個Cookie就會在訪問對應(yīng)域名的時候發(fā)送給服務(wù)器。
從圖9.21中可以看出,Cookie在訪問對應(yīng)域名下的資源的時候都會通過HTTP請求發(fā)送到服務(wù)器,所以通過合理地設(shè)計Cookie、減少Cookie的體積,能夠減少HTTP請求報文的大小、提高響應(yīng)速度。例如,靜態(tài)資源域名不使用Cookie。Cookie在訪問對應(yīng)域名下的資源時都會通過HTTP請求發(fā)送到服務(wù)器,但是在訪問一些資源(例如JavaScript腳本、CSS和圖片)的時候,大多數(shù)情況下這些Cookie是多余的,所以我們可以通過使用不同的主機來存儲一些靜態(tài)資源,例如用專門的主機來存儲圖片,這樣訪問這些資源的時候就不會發(fā)送多余的Cookie,從而提高響應(yīng)速度。
例如,訪問阿里旅行無線首頁 https://h5.m.taobao.com/trip/home/index.html,
通過圖9.22的network資源列表可以看出,圖片均使用gw.alicdn.com域名,而JavaScript資源使用g.alicdn.com域名,ajax請求使用api.m.taobao.com域名。如此,針對不同靜態(tài)資源的類型,分別使用不同的域名,這樣訪問這些資源的時候就不會發(fā)送多余的Cookie。好了,APP開發(fā)公司本文關(guān)于“開發(fā)APP的公司怎樣解決異步加載第三方資源?”的相關(guān)經(jīng)驗就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。