動(dòng)靜分離項(xiàng)目改造

參考文章:
     - https://zh.wikipedia.org/wiki/HTTP/2
     - https://zh.nuxtjs.org/guide
     - https://nextjs.org/learn/basics/getting-started
     - https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps
     - https://dev.w3.org/html5/pf-summary/offline.html
     - https://html.spec.whatwg.org/#applicationcache
     - https://github.com/wanbei/Blog/blob/aaf9f07a0d5f91c0274a045c58a24d49bb39fa92/docs/contents/html5-manifest.md

當(dāng)我們做spa項(xiàng)目越做越大的時(shí)候相叁,JS bundle會(huì)越來越大,單頁面不能承載那么多的邏輯辽幌,我們可能會(huì)選擇多個(gè)單頁面(也就是多頁面)增淹。每次加載都會(huì)存在空白加載的情景,雖然性能優(yōu)化上乌企,我們能把這個(gè)時(shí)間減少到很少很少虑润,但是沒法完全把它“干掉”。pwa的service-worker技術(shù)很好地彌補(bǔ)這片“空白”加酵∪鳎“app-shell”也就是web app中的應(yīng)用殼將會(huì)緩存在瀏覽器端哭当,讓它的加載速度更加快速。而可變的內(nèi)容則是異步加載冗澈,這個(gè)技術(shù)細(xì)節(jié)很多钦勘。
第一期我們對主流技術(shù)做評估,設(shè)計(jì)出一套簡單可行的方案(先上圖)亚亲。


1111.jpg

思考

  1. 有些頁面跳轉(zhuǎn)需要后端返回地址彻采,在和后端請求到跳轉(zhuǎn)無法控制,是否需要有跳轉(zhuǎn)過度頁設(shè)計(jì)捌归。

方案要點(diǎn)

* application cache
* pwa技術(shù)
* 降低io請求
* 使用離線存儲(chǔ)存儲(chǔ)靜態(tài)html
* 合理利用瀏覽器緩存
* 使用預(yù)渲染技術(shù)肛响,實(shí)現(xiàn)對當(dāng)先項(xiàng)目的二級頁面進(jìn)行預(yù)渲染,提升用戶體驗(yàn)

技術(shù)細(xì)節(jié)

此方案為治標(biāo)方案陨溅,治本方案在于為什么慢终惑?所以本方案中本本地存儲(chǔ)中增加了一段前端通用js绍在,主要作用有兩個(gè)门扇。
1、上報(bào)請求過程中的耗時(shí)偿渡,通過數(shù)據(jù)優(yōu)化耗時(shí)的地方臼寄。
2、通用的耗時(shí)過長的頁面處理溜宽,優(yōu)化用戶體驗(yàn)吉拳。

需要使用以下方法去控制離線存錯(cuò)的文件

cache = window . applicationCache
(In a window.) Returns the ApplicationCache object that applies to the active document of that Window.

cache = self . applicationCache
(In a shared worker.) Returns the ApplicationCache object that applies to the current shared worker.

cache . status
Returns the current status of the application cache, as given by the constants defined below.

cache . update()
Invokes the application cache update process.
Throws an INVALID_ACCESS_ERR exception if there is no application cache to update.

cache . swapCache()
Switches to the most recent application cache, if there is a newer one. If there isn't, throws an INVALID_ACCESS_ERR exception.

參考

  1. 1.1事件摘要
    當(dāng)用戶訪問聲明清單的頁面時(shí),瀏覽器將嘗試更新緩存适揉。它通過獲取清單的副本來實(shí)現(xiàn)這一點(diǎn)留攒,如果自從用戶代理最后一次看到清單就改變了,重新下載它所提到的所有資源并重新緩存它們嫉嘀。
    隨著這一過程的進(jìn)行炼邀,許多事件被觸發(fā)以保持腳本更新到緩存更新的狀態(tài),從而可以適當(dāng)?shù)赝ㄖ脩艏粑辍J录缦拢?/li>
Event name Occasion Next events
checking 用戶代理正在檢查更新拭宁,或者嘗試首次下載清單。 noupdate, downloading, obsolete, error
noupdate The manifest hadn't changed. (Last event in sequence.)
downloading 用戶代理已經(jīng)找到更新并正在獲取它瓣俯,或者正在第一次下載清單所列出的資源杰标。 progress, error, cached, updateread
cached 清單中列出的資源已被下載,應(yīng)用程序現(xiàn)在被緩存彩匕。 Last event in sequence.
updateready 清單中列出的資源已重新下載腔剂,腳本可以使用。SavaCpCh()切換到新的緩存驼仪。 Last event in sequence.
obsolete 發(fā)現(xiàn)清單已成為404或410頁桶蝎,因此正在刪除應(yīng)用程序緩存驻仅。 Last event in sequence.
error 發(fā)現(xiàn)清單已成為404或410頁,因此正在刪除應(yīng)用程序緩存登渣。清單未更改噪服,但引用清單的頁面未能正確下載. 獲取清單中列出的資源時(shí)發(fā)生致命錯(cuò)誤。.在運(yùn)行更新時(shí)胜茧,清單發(fā)生了更改 The user agent will try fetching the files again momentarily.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛漫,一起剝皮案震驚了整個(gè)濱河市速缨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖他炊,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異踪旷,居然都是意外死亡乍丈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門喉前,熙熙樓的掌柜王于貴愁眉苦臉地迎上來没酣,“玉大人,你說我怎么就攤上這事卵迂≡1悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵见咒,是天一觀的道長偿衰。 經(jīng)常有香客問我,道長改览,這世上最難降的妖魔是什么下翎? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮宝当,結(jié)果婚禮上视事,老公的妹妹穿的比我還像新娘。我一直安慰自己今妄,他們只是感情好郑口,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盾鳞,像睡著了一般犬性。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腾仅,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天乒裆,我揣著相機(jī)與錄音,去河邊找鬼推励。 笑死鹤耍,一個(gè)胖子當(dāng)著我的面吹牛肉迫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稿黄,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼喊衫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杆怕?” 一聲冷哼從身側(cè)響起族购,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陵珍,沒想到半個(gè)月后寝杖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡互纯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年瑟幕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片留潦。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡只盹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愤兵,到底是詐尸還是另有隱情鹿霸,我是刑警寧澤排吴,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布秆乳,位于F島的核電站,受9級特大地震影響钻哩,放射性物質(zhì)發(fā)生泄漏屹堰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一街氢、第九天 我趴在偏房一處隱蔽的房頂上張望扯键。 院中可真熱鬧,春花似錦珊肃、人聲如沸荣刑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厉亏。三九已至,卻和暖如春烈和,著一層夾襖步出監(jiān)牢的瞬間爱只,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工招刹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恬试,地道東北人窝趣。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像训柴,于是被迫代替她去往敵國和親哑舒。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,098評論 1 32
  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件宣赔,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評論 0 11
  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來最佳實(shí)踐预麸。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,848評論 0 1
  • 靜倚古窗眺遠(yuǎn)山,千里煙云密相連儒将。 野花尚有蝴蝶戲吏祸,唯有落寞哀自嘆。
    三克_2481閱讀 54評論 0 0