精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

藝龍網張美蓉:Slarkjs框架-性能優化之離線模板

原創
開發 架構
了解了slarkjs的頁面模式以及性能后,說說今天的正題離線模板,離線模板通過緩存模板,則實現了slarkjs頁面請求json實現加載另一頁面,同時結合Application cahe,實現離線模式下的展示。雖然Application cache的好壞眾說紛紜,但是結合一個好的設計方案,還是可以發揮很大的作用。總體的思路就是Slark框架的模式slark框架單頁webapp通過Application cache緩存模板,請求json獲取模板數據,將模板數據和模板渲染生成dom結構來優化性能。

 前言

離線模板目的是性能優化,webapp的性能優化主要是在網絡請求和dom操作優化上面進行優化,slarkjs框架的開發理念是SPA(single page application),即單頁webapp,單頁webapp在性能上面首屏加載所有資源,請求量少,無白屏等,但是考慮實際情況,每個頁面的dom結構不可能想似,所以基于單頁應用模式的slarkjs是請求部分html,不是請求json,但是頁面加載資源類似單頁模式,頁面切換轉場無白屏,首屏加載所有資源。在單頁載入下一個頁面時,開始回流,渲染增加的dom結構,并運行該頁面的js腳本。(對slark框架沒有了解的同學可以在此了解一下)。

了解了slarkjs的頁面模式以及性能后,說說今天的正題離線模板,離線模板通過緩存模板,則實現了slarkjs頁面請求json實現加載另一頁面,同時結合Application cahe,實現離線模式下的展示。雖然Application cache的好壞眾說紛紜,但是結合一個好的設計方案,還是可以發揮很大的作用。總體的思路就是Slark框架的模式slark框架單頁webapp通過Application cache緩存模板,請求json獲取模板數據,將模板數據和模板渲染生成dom結構來優化性能。

離線模板原理:

模板:

模板使用采用預編譯模式的javascript模板art-template,預編譯后,通過增加一個js文件和HTML5的application cache,實現請求json,而不是請求html。雖然manifst的更新會消耗一定的流量,應用場景可以局限在不經常改動的站點。

對于頁面異步請求json,避免白屏的問題,在ajax發出之前將模板和空數據結合,并展示不含數據的dom結構,當數據請求返回成功后,在和模板結合,展示帶有真是數據的dom結構;

下面介紹一下art-template

 

其他的javascript模板引擎在對模板變量進行賦值時,渲染都需要動態編譯 javascript 字符串完成變量賦值。而 artTemplate 的編譯賦值過程卻是在渲染之前完成的(這種方式稱之為“預編譯”)。

artTemplate 模板編譯器根據一些簡單的規則提取所有模板變量,并聲明在渲染函數頭部,這個過程就是預編譯,預編譯的產物就是將編譯賦值的過程轉為含參數的js函數執行過程。

什么是Cache Manifest?

首先manifest是一個后綴名為minifest的文件,在文件中定義那些需要緩存的文件,支持manifest的瀏覽器,會將按照manifest文件的規則,像文件保存在本地,從而在沒有網絡鏈接的情況下,也能訪問頁面。

當我們***次正確配置app cache后,當我們再次訪問該應用時,瀏覽器會首先檢查manifest文件是否有變動,如果有變動就會把相應的變得跟新下來,同時改變瀏覽器里面的app cache,如果沒有變動,就會直接把app cache的資源返回,基本流程是這樣的。

Manifest的特點:

  • 離線瀏覽: 用戶可以在離線狀態下瀏覽網站內容。
  • 更快的速度: 因為數據被存儲在本地,所以速度會更快.
  • 減輕服務器的負載: 瀏覽器只會下載在服務器上發生改變的資源。

離線模板思路:

slark框架單頁webapp通過Application cache緩存模板,請求json獲取模板數據,將模板數據和模板渲染生成dom結構來優化性能。

如何實現:

Slark框架之前的單頁模式,如下圖所示:

Art-template支持node,web應用前現將要緩存模板的頁面進行界面和數據的抽離,將分立后的界面預編譯生成js文件,使用manifest緩存這個js文件。每次頁面跳轉只請求數據,傳入js函數(art-temptale預編譯生成),獲取dom,渲染頁面。

既然使用了Application cache,為了在Offline模式下可展示,通過localstorage緩存數據,使用以上設計方案后的請求模式:

可以看到離線模板這種方案,離線模式下展示頁面前提是用戶曾經在Online情況下訪問過本頁面,瀏覽器緩存過頁面數據,這是離線模板v1.0(首頁server端渲染,跳轉頁面前端渲染)

離線模板v1.0離線刷新回退問題和離線模板v2.0 hash url:

manifest的原理,當其他頁面訪問已經緩存的資源請求不會發出,只會使用本地的文件,所以離線刷新當前頁面后回退,應該調到業務上的上一頁面,但是jsonq請求的url和緩存頁面的url相同,請求不會發出。

解決方案:json請求增加時間戳;

manifest文件需要寫明每個頁面的請求路徑才可以做到一次在線瀏覽,offline展示并有動態效果,但是業務上面結合url不是不變的,傳的參數不同,瀏覽器就被認為是不同的文件,所以不惜改slark框架,將原有的url,修改為hash路由(!#!/)。更改slark框架之后的離線模板就是v2.0 hash url。

大家都知道server端不能識別url的hash部分,

原來url:

http://m.elong.com/entry/flight/entry.html?param1=1&&param2=2

Hash url:

http://m.elong.com/entry/flight/!#!/entry!&param1=1&&param2=2

成功解決跳轉回退url變化問題,離線時跳轉和回退時,瀏覽器認為url并沒有發生變化。這樣manifest文件就可以寫一個路徑http://m.elong.com/entry/flight/

離線模板v2.0 hash url離線刷新先顯示首頁的問題:

像上面展示的url例子,slark單頁模式刷新回退,瀏覽器認為url就一直是http://m.elong.com/entry/flight/ 這個url服務器端默認entry.html頁面,只要這個entry.html帶有manifest標簽,頁面離線模式下list,html,detail.html等頁面刷新回退都可以展示,但是問題來了:比如 在線瀏覽所有頁面之后,進入離線模式,刷新list頁面,瀏覽器會先展示entry頁面,然后運行js腳本,將已經緩存list頁面的json數據,和模板結合,展示list頁面。

解決方案:

http://m.elong.com/entry/flight/ 這個url服務器端默認blank.html頁面,這個頁面是所有頁面默認的部分,帶有manifest標簽,是一個空頁面,離線頁面刷新后即使加載blank.html,也是一個空頁面,通過緩存的list頁面數據和模板結合,可以展示list頁面;

模板統一:

***涉及一個問題,就是前后臺模板統一,除了需要后臺對于提供json以外,還需要前后臺統一。這里以后臺使用java freemark模板為例子,修改模板art-template的語法以支持freemark語法。

離線模板使用:

離線模板v1.0使用話,就在引用js之前引用預編譯生成的js,如果要是用離線模板v2.0,需要在頁面路由配置中增加is_frender :true的配置項。

前臺項目使用:

  1. gruntfile文件中tmod任務中配置項目中要離線的頁面路徑,生成預編譯文件,不使用離線模板的頁面不要編譯
  2. appcachejson文件中增加要緩存的文件路徑,生成manifest文件
  3. 所有的html先引用預編譯模板文件,再引用main.js
  4. 要離線的文件html中<html標簽引用manifest文件<html manifest=‘xxx.manifest’
  5. 業務綁定事件onrender的callback中首先添加空渲染處理方法
  6. 合并main.js前的main.js,回調***句core.init(),傳入項目的名字,如core.init(‘offline’)

后臺項目使用:

  1. 使用freemark模板,前后臺使用模板一致;
  2. 同一請求路徑,可以判斷contentType,返回html和特定格式的json;

總結:

離線模板v1.0適合url不含參數的路徑,比如http://m.elong.com/entry/flight/index

htttp://m.elong.com/entry/flight/index?index=1&&key=2 這樣的就不適合,但是不會出現白屏,首頁server端渲染,其他頁面前端渲染。

離線模板v2.0hash url 其實適合所有的url,是所有頁面前端渲染。但是,有兩個缺點;

  1. ***加載webapp的頁面慢。因為要緩存manifest中的所有文件,所以在***首屏可能會有些慢,但是之后就會很快。
  2. 當手機清緩存或者web服務器這邊更新manifest文件后都會更新manifest,而且manifest更新時,***次在線訪問更新緩存,但是不會展示更新內容,這一點對于飛機票火車票等即時性的業務來說不適合。

參考文獻:

https://github.com/yinyinfurong/art-template

http://www.cnblogs.com/yexiaochai/p/3759959.html

http://www.jq22.com/jquery-info1097

http://blog.csdn.net/fwwdn/article/details/8082433

 作者簡介

張美蓉,15年應屆畢業生,之前實習微商開發,15年任職藝龍網前端框架組開發工程師。

 
責任編輯:王雪燕 來源: 51CTO
相關推薦

2015-09-18 09:10:53

藝龍網Slarkjs框架

2015-09-21 11:48:45

藝龍網前端優化IT技術周刊

2015-11-25 09:04:54

藝龍網前端domdiff

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2021-11-29 11:13:45

服務器網絡性能

2022-02-16 14:10:51

服務器性能優化Linux

2018-01-09 16:56:32

數據庫OracleSQL優化

2019-12-13 10:25:08

Android性能優化啟動優化

2009-06-30 11:23:02

性能優化

2025-01-20 09:09:59

2011-07-11 15:26:49

性能優化算法

2023-07-19 12:24:48

C++constexpr?語句

2013-02-20 14:32:37

Android開發性能

2015-05-27 15:26:46

攜程

2015-05-27 14:06:55

攜程

2023-04-10 11:18:38

前端性能優化

2011-06-14 11:14:10

性能優化代碼

2021-07-16 23:01:03

SQL索引性能

2013-09-17 10:32:08

Android性能優化數據庫

2011-06-14 14:17:23

性能優化系統層次
點贊
收藏

51CTO技術棧公眾號

久久综合一区二区| 日韩视频第二页| 99热这里只有精品2| 午夜视频免费在线| 欧美日韩91| 欧美日韩在线综合| 清纯唯美亚洲综合| 第一页在线视频| 日本人妻丰满熟妇久久久久久| 99久久久久国产精品| 欧美影视一区在线| 日本中文不卡| jizz国产在线观看| 伊人久久大香线蕉综合网蜜芽| 五月婷婷激情综合| 亚洲va久久久噜噜噜| 长河落日免费高清观看| 黑人一区二区三区| 中文一区在线播放| 国产日韩精品一区二区| 激情五月深爱五月| 黑人久久a级毛片免费观看| 国产精品你懂的在线欣赏| 国产精品96久久久久久| 欧美老女人性生活视频| 国产福利亚洲| 亚洲四区在线观看| 国产福利久久| 免费观看成人毛片| 欧美精品一区二区久久| 欧美午夜免费电影| 丝袜老师办公室里做好紧好爽| 视频二区在线| 久久中文字幕导航| 91精品国产免费| 久草视频这里只有精品| 亚洲精品久久久久avwww潮水| 樱桃成人精品视频在线播放| 日韩av在线播放资源| 男女曰b免费视频| av天在线观看| 国产成人精品亚洲午夜麻豆| 国模私拍视频一区| www.av欧美| 亚洲精品无播放器在线播放| 亚洲欧美日韩国产一区二区三区| 99re在线观看| 国产原创视频在线| 欧美hd在线| 精品欧美久久久| 成人免费观看视频在线观看| 国精一区二区三区| 国产欧美一区二区在线观看| 91牛牛免费视频| 日韩av在线天堂| 欧洲毛片在线视频免费观看| 亚洲欧美国产精品久久久久久久| 亚洲娇小娇小娇小| 免费网站在线观看人| 91亚洲精品一区二区乱码| 国产精品国产福利国产秒拍| 免费在线黄色片| 欧美人与牛zoz0性行为| 欧美一区二区三区四区久久| 看看黄色一级片| www视频在线观看| 亚洲欧美综合在线精品| 国内视频一区二区| 国产乱淫片视频| 久久男女视频| 欧美精品videos| 精品一区二区在线观看视频| 日本妇女一区| 日韩一区二区免费在线观看| 日韩有码免费视频| 成人免费在线观看视频| 9191久久久久久久久久久| 日韩欧美国产免费| 亚洲国产成人二区| 五月婷婷另类国产| 免费观看成人网| 华人av在线| 欧美最猛性xxxxx直播| 激情深爱综合网| av片哪里在线观看| 国产精品二三区| 欧美视频1区| 少妇一级淫片免费看| 国产精品一区一区| 成人黄色免费在线观看| 免费在线不卡av| 六月丁香综合| 欧美专区在线播放| 一级日韩一级欧美| 日韩精品视频网| 日本精品视频在线播放| 成人精品在线看| 免费在线视频一区| 国产精品伦子伦免费视频| 国产精品第5页| 国产日韩免费| 4k岛国日韩精品**专区| 国产精品日日夜夜| 最新国产精品久久久| 久久中文精品视频| 外国一级黄色片| 亚洲视频在线免费| 精品中文字幕在线| 精国产品一区二区三区a片| 欧美亚洲网站| 欧洲亚洲免费在线| av中文字幕免费| 国产精品1区2区| 日本一区二区精品视频| 黄色免费在线播放| 国产精品天干天干在观线| 日本a在线天堂| 欧美1234区| 欧美日本在线一区| 亚洲一级片免费观看| 日韩中文字幕在线一区| 精品国产3级a| 国产在线观看无码免费视频| 尤物tv在线精品| 久久久久国产精品免费网站| 91亚洲国产成人久久精品麻豆 | 一本色道久久亚洲综合精品蜜桃 | 亚洲AV无码成人精品一区| 成年网站在线| 国产精品电影院| 国产情侣av自拍| 天海翼亚洲一区二区三区| 日韩二区三区在线| 久草视频在线资源站| 久久99九九99精品| 99国精产品一二二线| 日本精品在线| 亚洲一区二区四区蜜桃| 欧美日韩一道本| 日日av拍夜夜添久久免费| 欧美婷婷六月丁香综合色| 午夜理伦三级做爰电影| 亚洲自啪免费| 欧美成熟毛茸茸复古| 在线观看麻豆蜜桃| 欧美色手机在线观看| 欧美激情aaa| 日韩av中文字幕一区二区三区| 另类视频在线观看+1080p| 在线能看的av网址| 国产午夜精品久久久 | 国产福利视频一区| 久久久久亚洲AV成人无在 | 欧美r级在线| 国产99久久久国产精品潘金| 国产乱码精品一区二区三区卡 | 91亚洲精品久久久蜜桃| 国自产拍偷拍精品啪啪一区二区| 欧美a级网站| 欧洲成人在线观看| 成人高潮成人免费观看| 欧美日韩夫妻久久| 免费中文字幕在线| 狂野欧美一区| 奇米精品在线| 男人亚洲天堂| 久久亚洲影音av资源网 | 狠狠精品干练久久久无码中文字幕 | 91视频免费在线| 超碰人人在线| 精品欧美激情精品一区| 在线观看日本www| 九热爱视频精品视频| 国产精品久久婷婷六月丁香| 日韩精品黄色| 亚洲精品一区在线观看| 欧美性猛交bbbbb精品| 亚洲国产精品传媒在线观看| 黄色片免费网址| 一区二区视频欧美| 日韩国产欧美精品| 久久免费精品| 中文字幕亚洲国产| 日韩欧美在线观看免费| 国产精品久久久久久户外露出| 宇都宫紫苑在线播放| 99亚洲一区二区| 成人av免费看| 成人av观看| 亚洲国产精品久久91精品| 国产第一页浮力| 美女在线一区二区| 亚洲 欧美 综合 另类 中字| 国产一区二区视频在线看| 国产亚洲欧美日韩美女| 国产精品久免费的黄网站| 国产精品久久久久久久久搜平片 | 亚洲色成人www永久在线观看| 亚洲高清极品| av激情久久| 国产一区二区精品调教| 亚洲久久久久久久久久久| 夜夜躁很很躁日日躁麻豆| 国产蜜臀av在线一区二区三区| 毛毛毛毛毛毛毛片123| 欧美一区=区| 永久免费看av| 日韩欧洲国产| 国产精品免费一区二区三区都可以| 99麻豆久久久国产精品免费优播| 热99精品只有里视频精品| 2017亚洲天堂1024| 日韩成人在线免费观看| 国产高清第一页| 欧美综合色免费| 精品成人av一区二区在线播放| 亚洲欧美在线另类| 日本二区在线观看| 一道本一区二区| 日本三级福利片| 欧美日韩一二三四| 免费一区二区三区| 精品深夜福利视频| 成人3d动漫一区二区三区91| 亚洲欧美在线综合| 国产精品中文久久久久久久| 麻豆影院在线观看| 亚洲性xxxx| 偷拍自拍在线视频| 亚洲成avwww人| 亚洲精品97久久中文字幕| 在线电影院国产精品| 久久亚洲av午夜福利精品一区| 99久久夜色精品国产网站| 精产国品一区二区三区| 国产成人综合网站| 伦伦影院午夜理论片| 国产一区二区三区综合| 日本xxxxxxxxxx75| 日韩成人精品一区| 91久久大香伊蕉在人线| 精品三级久久| 久久免费国产视频| 999精品网| 色老头一区二区三区在线观看| 高h调教冰块play男男双性文| 91久久人澡人人添人人爽欧美| 91人妻一区二区三区蜜臀| 国产精品久久久久影院| av在线播放中文字幕| 国产精品久久久久久久久免费相片| 国产免费嫩草影院| 亚洲色图一区二区三区| 久久久久亚洲AV成人| 亚洲一二三四在线| 韩国av免费观看| 亚洲视频每日更新| 国产盗摄x88av| 亚洲成人午夜影院| 992在线观看| 国产精品久久久久一区| 国产成人av免费在线观看| 亚洲色图视频网| 精品人妻在线播放| 狠狠爱在线视频一区| 在线视频精品免费| 精品成人乱色一区二区| 69成人免费视频| 欧美日韩一区成人| www.久久久久久| 欧美日韩一级视频| 国产精品久久综合青草亚洲AV| 日韩欧美国产系列| 国产一区二区在线视频聊天| 欧美一区二区三区免费在线看| 丰满人妻一区二区三区四区53| 精品五月天久久| 天天在线视频色| 国外成人在线播放| 久久久久久一区二区三区四区别墅| 91丝袜脚交足在线播放| 免费欧美激情| 欧美性受xxxx黑人猛交88| 欧美一级本道电影免费专区| 久久久久久欧美精品色一二三四| 2020最新国产精品| 亚洲一区久久久| 天天操综合520| 中文字幕成人一区| 欧美国产美女| 男人添女荫道口图片| 免费av网站大全久久| 欧美极品jizzhd欧美仙踪林| 国产一区二区三区免费在线观看| 91丨porny丨对白| 国产精品久久久久久久久久久免费看 | 国产精品久久久久久久久毛片 | chinese全程对白| 久久久久久影视| 中国美女乱淫免费看视频| 99久久免费精品| 国产精品白丝喷水在线观看| 狠狠色狠色综合曰曰| 国产精品久久久午夜夜伦鲁鲁| 精品调教chinesegay| 亚洲区欧洲区| 久久久久中文字幕2018| av在线一区不卡| 国产亚洲一区在线播放| 无需播放器亚洲| 毛片一区二区三区四区| 成人免费视频免费观看| 成熟妇人a片免费看网站| 国产精品久久久久久一区二区三区| 日本三级午夜理伦三级三| 欧美精品99久久久**| 黄色av网站在线免费观看| 久久露脸国产精品| 亚洲日本va中文字幕| 中国人体摄影一区二区三区| 久久国产精品久久w女人spa| 精品1卡二卡三卡四卡老狼| 日韩美女视频一区| 中文字幕日本人妻久久久免费 | 美女久久99 | 久久er精品视频| a级大片在线观看| 日韩欧美国产免费播放| 影音先锋在线国产| 欧美精品一区二区精品网| 色婷婷视频在线观看| 亚洲综合成人婷婷小说| 日韩精品影视| 午夜久久福利视频| 国产99久久久久| 538精品在线观看| 欧美一区二区视频在线观看| 久热国产在线| 91精品国产99| av成人在线观看| 日本10禁啪啪无遮挡免费一区二区 | 日日夜夜精品视频| 国产美女作爱全过程免费视频| 国产精品一区二区男女羞羞无遮挡| 亚洲伦理一区二区三区| 这里只有精品电影| 亚洲91av| 国产一区二区中文字幕免费看| 影音先锋久久| 人妻丰满熟妇av无码久久洗澡| 欧美日韩国产精品一区二区三区四区 | 亚洲免费一级片| 久久欧美在线电影| 农村少妇一区二区三区四区五区| 成人性免费视频| 91亚洲大成网污www| 亚洲AV成人无码精电影在线| 欧美日韩情趣电影| 欧美精品电影| 91av一区二区三区| 亚洲精品国产日韩| 宇都宫紫苑在线播放| 一区二区免费在线播放| 自拍偷拍色综合| 精品国产一区二区三区久久久狼| 草草在线观看| 青青草原亚洲| 国产一区二区三区四区五区入口| 青青青在线视频| 日韩精品在线观看一区| 99久久久国产精品免费调教网站| 亚洲一区二区三区乱码| 美女网站久久| 色婷婷国产精品免| 欧美一级久久久| 国产激情在线播放| 午夜精品福利一区二区| 夜夜夜久久久| 一二三四在线观看视频| 日韩视频在线一区二区| 中文字幕色婷婷在线视频| 亚洲欧美影院| 日本aⅴ免费视频一区二区三区| 国产又粗又长又爽| 亚洲国产日韩综合久久精品| 黄色av网站在线看| 亚洲xxx大片| 美女尤物久久精品| 欧美成人国产精品高潮| 亚洲日韩欧美视频一区| 国产精品迅雷| 一区二区日本伦理| 99精品欧美一区二区蜜桃免费 | 99re这里都是精品| 亚洲一级特黄毛片| 欧美亚洲国产成人精品| 亚洲字幕久久| 五月天精品视频| 亚洲国产欧美一区| 手机在线理论片|