當前位置:
首頁 > 知識 > 讓web app更快的HTML5最佳實踐

讓web app更快的HTML5最佳實踐

簡介


本文重點關注如何充分利用HTML5和CSS讓web app運行更加流暢.

讓web app更快的HTML5最佳實踐


Tip 1: 使用web storage代替cookie


cookie最大的缺陷是在每一次HTTP請求中都會攜帶所有符合規則的cookie數據.這會增加請求響應時間,特別是XHR請求. 在HTML5中使用sessionStorage和localStorage代替cookie是更好的做法.


這另種方法可以將數據永久或者以session時間存儲在用戶本地.數據不會隨著HTTP請求傳遞.所以我們優先使用web storage,僅僅使用cookie作為替代方案.

// if localStorage is present, use thatif (( localStorage in window) && window.localStorage !== null) { // easy object property API localStorage.wishlist = ["unicorn", "Narwhal", "deathbear"] ;} else { // without sessionStorage we ll have to use a far-future cookie // with document.cookie s awkward API var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); var expires = date.toGMTString(); var cookiestr = wishlist=["unicorn", "Narwhal", "deathbear"]; + expires= + expires + ; path=/ ; document.cookie = cookiestr;}


Tip 2: 使用CSS Transition代替JavaScript動畫


CSS Transition能帶來更高的性能,更少的代碼,更容易維護和理解.


Tip 3: 使用客戶端資料庫代替伺服器請求


Web SQL Database和IndexedDB讓瀏覽器有了資料庫存儲能力.很多應用場景可以遷移到客戶端資料庫以減少伺服器的請求次數.

localStorage和sessionStorage在簡單數據存儲時比客戶端資料庫更快,可以用來實現一些簡單的狀態,進度保存.


當一個組件需要管理上百條數據(如好友列表),同時支持用戶搜索, 過濾, 排序時, 客戶端資料庫存儲一份數據可以有效減少HTTP請求次數. 查看Web SQL Database tutorial獲取詳細指導.


Tip 4: 使用JavaScript原生API


隨著更高版本JavaScript的普及, 像Array prototype新增了很多API都可以在大多數瀏覽器中直接使用.例如:


// give me a new array of all values multiplied by 10[5, 6, 7, 8, 900].map(function (value) { return value * 10;});// [50, 60, 70, 80, 9000]// create links to specs and drop them into #links.var linksList = document.querySelector( #links );var links = [];[ html5 , css3 , webgl ].forEach(function (value) { links.push(value.link( http://google.com/search?btnI=1&q= + value + spec ));});linksList.innerHTML = links.join( );// return a new array of all mathematical constants under 2[3.14, 2.718, 1.618].filter(function (number) { return number < 2;});// you can also use these extras on other collections link nodeLists[].forEach.call(document.querySelectorAll( section[data-bucket] ), function (elem, i) { localStorage[ bucket + i] = elem.getAttribute( data-bucket );});

通常情況下這些原生方法比手動編寫循環要快:


for (var i = 0, len = arr.length; i < len; ++i) {}


使用原生JSON.parse()比json2.js更加高效,安全.


Tip 5: 不僅僅為離線app使用cache manifest,在線網站網站也可以適當使用

後台管理系統這樣的站點使用緩存可以極大提高性能.


cache manifest比設置Expires有一些優勢:明確地聲明需要緩存的文件,瀏覽器可以進行優化,可能在你使用之前就已經提前下載到本地了.


可以將頁面基本結構看做模板, 顯示的內容隨著數據變化, 將可模板化的HTML結構通過cache.manifest進行緩存, 從伺服器端獲取JSON數據之後更新內容.


查看application cache tutorial獲取詳細指導.


Tip 6: enable硬體加速來增強視覺體驗


某些瀏覽器可能使用GPU加速讓高速動畫更加平滑.Firefox Minefield, IE9, Safari已經宣稱實現了硬體加速. Chromium也增加了window平台的3D transform加速.各個瀏覽器對硬體加速的支持肯定會越來越好.


在支持並啟動了硬體加速的情況下, 動畫, rotation, scaling, opacity肯定會更加平滑. 所有實際操作都發生在GPU而不需要內容的重繪. 然而需要注意的是,任何影響頁面布局的操作都會降低速度.


Tip 7: 使用web worker執行需要大量CPU資源的操作


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序源 的精彩文章:

Spring AOP 的實現原理
Ubuntu LAMP WEB開發環境搭建
創業做一個app究竟要花多少錢?
理解大型分布式網站你必須知道這些概念
Nginx反向代理,负载均衡,redis session共享,keepalived高可用

TAG:程序源 |

您可能感興趣

Dweb:使用WebRTC/WebTorrent構建彈性Web
Web Pages HTML 表單
Mozilla將WebXR Viewer更新至ARKit2.0
TechWeb
WebKit漏洞影響最新版Apple Safari
Mozilla VR Hub現在可以共享Web剪貼板和上傳的內容
思科將Webex Spark和Webex合併成Webex Teams
Web Pages-WebMail 幫助器
ASP.NET Web Forms 維持 ViewState
如何擴展 Create React App 的 Webpack 配置
前Mozilla WebVR創始人推VR瀏覽器:Supermedium
微軟Skype Web不再支持Linux/ChromeOS
Mozilla用WebXR Viewer提供對iOS on WebXR訪問
Raf Simons x The Webster 發布獨佔 「I Love NY」 T 恤
關於PWA-Progressive Web App的一些測試思考
Flutter、GraphQL、PWA、WebAssembly……大前端時代,你需要掌握的那些技術
Magic Leap瀏覽器將支持WebXR應用
ASP.NET Web Pages-HTML 表單
快速搭建CentOS+ASP.NET Core環境支持WebSocket
前端常用技術概述——Less、typescript與webpack