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

我在幾期薅羊毛活動中學到了什么~

開發 前端
項目是基于 Vue+SSR 架構的,且沒有做緩存處理,沒做緩存的主要原因第一個是原本應用 tps 比較低,改造動力不強,并且頁面渲染結果中包含了用戶數據以及服務端時間,沒法在不經過改造的情況下直接上緩存。

[[413645]]

前言

為什么突然想寫一篇總結了呢,其實也是被虐的。今年 3 月份初期,我們商城接了一個 XX 銀行的一分購活動(說白點就是薅羊毛),那時候是活動第一期,未曾想到活動入口開放時,流量能直接將 cpu 沖至 100%,導致服務短暫的 502 了。期間采取了緊急方案到活動結束,但未曾想到還有活動二期,以及上周剛上線的活動三期。想著最近這段時間也做了一些事情,還有遇到的一些坑點,趁此機會,就不偷懶記錄一下吧。

活動一期到三期具體做了些什么

技術背景&瓶頸

項目是基于 Vue+SSR 架構的,且沒有做緩存處理,沒做緩存的主要原因第一個是原本應用 tps 比較低,改造動力不強,并且頁面渲染結果中包含了用戶數據以及服務端時間,沒法在不經過改造的情況下直接上緩存。所以當一期活動大流量沖擊時,高并發情況下很容易將 cpu 打至 100%。

一期在未知情況下,服務直接扛不住了,當時為了活動能正常進行,首要方案就是先加機器扛住部分壓力,緊接著就是加緩存,目前有兩種緩存方案,緩存頁面或緩存組件,但由于我們的需要緩存的商品詳情頁組件涉及到動態信息,可維護性太差,心智成本高,最終選擇了前者。我們整理了一下商詳頁有關動態變化的信息數據(與時間/用戶相關等類型的數據),在活動期間,緊急屏蔽了部分不影響功能的動態內容,然后頁面上 CDN。

活動結束后,我們做了下復盤,要像應用要能保障大流量情況下穩定運行,性能優化處理是避免不了的了。為此我們做了以下四大方案:

1.對數據做動靜分離: 我們可以將數據分類成動靜兩類,靜態數據即是一段時間內,不隨時間/用戶改變,動態數據則是相反的,經常變動,與時間有關,有用戶相關等類型的數據都可以歸類為動態數據。原頁面無法上緩存的最大阻礙就是,就是在 node 渲染模板時,會默認獲取用戶數據,或是在 asyncData 中調用用戶相關的接口;此外,還會設置服務端時間等動態數據。所以思路就是將靜態數據放在 node 獲取,將動態數據放到客戶端(瀏覽器讀取 asyncData、mounted 等瀏覽器生命周期里)獲取保證服務端的清潔。

2.頁面接入 CDN: 經過動靜態分離的改造后,已經可以將其路徑加入 cdn。但需要注意路徑上 query 等參數是否會影響渲染,如果影響,需要把邏輯搬到客戶端,同時需要注意一下過期時間(如 10 分鐘)是否會對業務產生影響

3.應用緩存: 如果在比較糟糕的情況下,cdn 失效了導致回源率上升,應用本身還是需要做好準備。這就要根據項目需要去選擇內存緩存/redis 緩存。

4.自動降級: 在極端的情況下,前面的緩存都沒擋住流量,就需要終極方案:降級渲染。所謂降級渲染,就是不進入路由,直接將空模板返回,完全交給瀏覽器去做渲染。這樣做的最大好處就是完全避免了 node 壓力,將一個 SSR 應用變成了靜態應用。缺點也是顯而易見的,用戶看到的是空模板,需要等待初始化。那如何自動降級呢,可以通過定時器時時檢測 cpu、負載等壓力,來確定當前機器的負載,從而決定是否降級;也可以通過 url 的 query 上是否攜帶特定標識,顯式地決定是否降級。

對項目方案做了以上性能優化接下來就是壓測,也算是順利上線了。🤪

二期活動沒過多久又來了,不過如我們預期,項目很穩定地扛住了壓力,期間也增加了流量接口,并加友好提示等優化。但其中一個痛點是需要針對幾個特殊商品去做個文案處理,這幾個文案非接口返回,也是臨時性的一些醒目提示,沒必要放在詳情頁接口中返回。由于時間也很緊急,我們不確定后面還有沒有這種特定的文案需求(和具體的頁面以及特定的區域關聯),決定還是暫時寫一些 low code:針對特定的活動商品 id,臨時添加文案,活動下線之后,把文案去除。這樣做的風險性是有的,畢竟代碼是臨時性的,需要上下線,并且有時間延遲。但好在活動結束時是周末,最后一天流量訪問并不大,給了相對應的引導文案以及售后處理,評估下來影響不大,尚可接受。

以下圖片商品詳情頁和商品購買頁需要加的特定文案:

薅羊毛活動是真香現場嗎~~6 月底產品就和我打了個招呼,說 XX 活動又要有三期了,但整體方案依舊和二期一樣不變。我內心:還來???(小聲說句打工人太苦了),由于最終時間沒定下來,也有了二期的教訓之后,和后端同學也一起商量了一下,把活動商品往配置化方向考慮,放在我們配置后臺中文案模塊且是可行的。針對商品詳情頁,考慮到不破壞動靜分離,先確定下配置化接口返回的數據是靜態的,可以放在服務端獲取。以下具體三期做的事情:

  1. 將參與活動商品的文案做成配置化,從配置接口獲取,去除 low code
  2. 整理大流量活動頁(例如商詳頁)的接口,放在客戶端的接口需要做限流,接口達到一定的 tps 后,返回 429 狀態,前端要做容錯處理,頁面功能正常訪問,屏蔽限流接口錯誤。
  3. 針對購買限流接口,需要給 busy 提示(活動太火爆了,請稍后再試)
  1. // 統一在 getResponseErrorInterceptor 處針對 429 狀態做處理 
  2. export const getResponseErrorInterceptor = ({ errorCallback }) => (error) => { 
  3.   if (!isClient) { 
  4.     ... 
  5.   } else { 
  6.     // 429 Code 服務報錯需要支持不彈出錯誤提示 
  7.     if (+error.response.status === 429) { 
  8.     // 針對限流接口,且需要 busy 提示時增加 needBusyMsg 屬性 
  9.       errorCallback(error.config.needBusyMsg ? '活動太火爆了,請稍后再試' : null); 
  10.     } else { 
  11.         ... 
  12.       ); 
  13.     } 
  14.   } 
  15.  
  16.   return throwError(error); 
  17. }; 

結束了上周一周忙碌的壓測和測試,三期終于上線了。👏👏👏👏

想了解更多 Vue SSR 性能優化方案可以移步到這里: Vue SSR 性能優化實踐

實際過程中遇到的一些 Coding Question

1.本地項目(vue-SSR 架構)里,一個動態接口放在服務端獲取時,有一段代碼很 easy,一個是否是會員的標識去開通會員按鈕的顯隱,代碼如下(代碼有簡化):

  1. <redirect 
  2.   v-if="!isVip" 
  3.   :link="link" 
  4.   type="h5" 
  5.   開通會員<ui-icon name="arrow-right" /> 
  6. </redirect> 

本地中雖然運行正常,但是會有如下警告:vue.esm.js:6428 Mismatching childNodes vs. VNodes: NodeList(2) [div, a.DetailVip-right.Redirect] (2) [VNode, VNode]

[Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside

, or missing . Bailing hydration and performing full client-side render.

但更新到測試環境中,頁面會失效,點擊失效等。會報有如下錯誤:Failed to execute 'appendChild' on 'Node': This node type does not support this method

分析

Vue SSR 指南在客戶端激活里剛好說到了一些需要注意的坑,使用「SSR + 客戶端混合」時,需要了解的一件事是,瀏覽器可能會更改的一些特殊的 HTML 結構。例如 table 中漏寫<tbody>,像以下幾種情況也會導致導致服務端返回的靜態 HTML 和瀏覽器端渲染的內容不一致:

  1. 無效的HTML(例如:<p><p>Text</p></p>)
  2.  
  3. 服務器與客戶端的不同狀態
  4. 例如日期、時間戳和隨機化等不確定變量的影響
  5. 第三方腳本影響到了組件的渲染
  6. 需要身份驗證相關時

當然確定原因之后對癥下藥,總結有幾種辦法可以解決此問題:

  1. 檢查相關代碼,確保 HTML 有效
  2. 最簡單粗暴的一個方法就是:用v-show去代替v-if,要知道構建時生成的HTML是無狀態的,應用程序中與身份驗證相關的所有部分應該只在客戶端呈現,具體可以 diff 下獲取數據以及在服務器/客戶端呈現的內容,解決服務器和客戶端之間的狀態不一致
  3. 面對第三方腳本這類的,可以通過將組件包裝在標簽中來避免在服務器端渲染組件
  4. .....(歡迎補充)

針對此類問題,還可以看看這篇文章:https://blog.lichter.io/posts/vue-hydration-error/

2: 同樣的 h5 頁面,在瀏覽器中打開配置生效,而在公眾號&小程序中打開卻失效了?

三期的時候,我們把活動商品 id 和對應文案做成了配置化處理。配置方式如下:

獲取商品配置內容經過 JSON.stringify()之后,毋庸置疑會得到如下字符串:

  1. 455164527672033280|龍支付 立減 10 元|滿 40 立減 10(僅限 XX 卡)#\\n623841656577658880|龍支付 立減 10 元(僅限 XX 卡)|滿 40 立減 10(僅限 XX 卡)#\\n350947143063699456|龍支付測試 立減 10 元(僅限 XX 卡)|滿 40 立減 10 測試(僅限 XX 卡)# 

在詳情頁獲取所有的商品 id 列表信息,我們用的#做區分,寫了一個簡單的正則如下:

  1. activityItems() { 
  2.   return this.getFieldValue('activity_item')?.split('#\\n'); 
  3. }, 

但在公眾號里面打開我們的 h5 鏈接,會將#自動轉義成\,內容會變成:

  1. 455164527672033280|龍支付 立減 10 元(僅限 XX 卡)|滿 40 立減 10(僅限 XX 卡)\\\n623841656577658880|龍支付 立減 10 元(僅限 XX 卡)|滿 40 立減 10(僅限 XX 卡)\\\n350947143063699456|龍支付測試 立減 10 元(僅限 XX 卡)|滿 40 立減 10 測試(僅限 XX 卡)\ 

啊,這,,,不是吧??(發現時內心幾乎是崩潰的)😩 解決方式立馬把#字符換成不被轉移的字符;。

另外在小程序中打開失效是因為延用二期的方案,當時做了限制判斷,只需要在主站和主 app 中打開有效,小程序設有自己單獨的 appid,三期活動有多方入口,把該限制放開即可。

總結

薅羊毛參與了三期,也是積累了一些經驗,踩了一些坑吧,想著太久沒寫了該記錄一下了,先總結到這里,還有忘記的再補充~

本文轉載自微信公眾號「微醫大前端技術」,可以通過以下二維碼關注。轉載本文請聯系微醫大前端技術公眾號。

 

責任編輯:姜華 來源: 微醫大前端技術
相關推薦

2021-03-09 09:55:02

Vuejs前端代碼

2016-01-18 10:06:05

編程

2020-12-31 10:47:03

開發Vuejs技術

2019-06-18 11:09:54

2012-07-12 00:22:03

創業產品

2015-09-06 16:03:57

2020-10-30 12:40:04

Reac性能優化

2020-10-13 18:10:46

Kubernetes容器化云計算

2020-11-04 07:13:57

數據工程代碼編程

2020-03-05 17:38:19

物聯網安全網絡安全

2010-01-25 17:14:09

2022-03-27 09:06:04

React類型定義前端

2020-02-22 15:01:51

后端前端開發

2023-10-16 08:55:43

Redisson分布式

2020-09-18 11:00:18

IT預算IT支出領導人

2023-04-10 07:40:36

GraphQLRest通信模式

2019-08-27 10:49:30

跳槽那些事兒技術Linux

2019-08-16 17:14:28

跳槽那些事兒技術Linux

2020-07-06 15:24:50

技術人工智能面試

2023-12-30 21:02:36

點贊
收藏

51CTO技術棧公眾號

欧美性20hd另类| 精品亚洲国产成人av制服丝袜| 日韩免费看网站| 18禁免费无码无遮挡不卡网站| 都市激情一区| 成人高清视频在线观看| 国产精品扒开腿做爽爽爽视频 | 日本一区二区视频在线观看| 91在线视频精品| 男人天堂av在线播放| 欧美/亚洲一区| 国产亚洲成精品久久| 永久看看免费大片| 精品亚洲美女网站| 亚洲成va人在线观看| 一区二区三区国| 精品美女视频在线观看免费软件| 国产成人a级片| 成人久久18免费网站图片| 天天综合网久久综合网| 欧美jjzz| 久久九九国产精品怡红院| 少妇精品一区二区三区| **爰片久久毛片| 欧美日韩精品福利| 成人性视频欧美一区二区三区| 狂野欧美激情性xxxx欧美| 国产精品每日更新| 日韩精品伦理第一区| 日本黄色不卡视频| 国产精品综合视频| 91免费看片在线| 亚洲图片中文字幕| 免播放器亚洲一区| 日本午夜在线亚洲.国产| 日本熟女一区二区| 亚洲特色特黄| 久久久亚洲网站| 久久久久久久久久久97| 午夜日韩福利| 欧美黑人巨大xxx极品| 538精品在线视频| 久久久久久久久久久久久久久久久久 | 第一福利永久视频精品| 每日在线观看av| 韩国日本一区| 亚洲一区二区在线免费观看视频 | 91精品国产综合久久久久久久| 妺妺窝人体色www在线观看| 电影网一区二区| 色综合网站在线| 欧洲av无码放荡人妇网站| 第一福利在线视频| 欧美日韩在线第一页| 成人av一级片| 裤袜国产欧美精品一区| 91国产精品成人| 一女二男3p波多野结衣| 亚州欧美在线| 日韩欧美黄色影院| 亚洲av人人澡人人爽人人夜夜| 国产精品宾馆| 日韩激情视频在线播放| 中文字幕在线看高清电影| 亚洲va久久久噜噜噜久久| 亚洲欧美国产一本综合首页| 欧美做受高潮6| 日韩在线理论| 欧美极品在线播放| 无码人妻一区二区三区线| 麻豆精品视频在线观看免费| 成人美女免费网站视频| 亚洲精品久久久久久动漫器材一区| 粉嫩绯色av一区二区在线观看| 极品日韩久久| 91精品大全| 亚洲另类春色国产| 男人靠女人免费视频网站 | 亚洲第一毛片| 国产成人精品久久亚洲高清不卡| 91成年人视频| 成人激情小说乱人伦| 日韩成人在线资源| 性直播体位视频在线观看| 婷婷激情综合网| 日本888xxxx| 凹凸成人在线| 日韩中文字幕免费| 欧美精品亚洲精品日韩精品| 欧美a级一区二区| 国产日韩一区欧美| 日韩伦理在线观看| 五月天激情小说综合| 超碰在线公开97| 国产精品视屏| www日韩欧美| 国产欧美一区二区三区在线看蜜臂 | 欧美激情一区二区三区成人| 日韩人妻精品中文字幕| 国产一区二区三区四区五区美女 | 国内自拍一区| 国产精品在线看| 天堂中文在线官网| 亚洲视频免费在线观看| 亚洲午夜无码av毛片久久| 91精品麻豆| 在线播放日韩欧美| 99久在线精品99re8热| 精品在线免费视频| 色狠狠久久av五月综合| 激情图片在线观看高清国产| 欧美日韩国产影片| 天天躁日日躁aaaa视频| 亚洲一级网站| 97超级在线观看免费高清完整版电视剧| 秋霞av在线| 亚洲成av人**亚洲成av**| 97人人爽人人| 青青一区二区三区| 青青在线视频一区二区三区| 欧美性猛交 xxxx| 亚洲另类中文字| 天堂av8在线| 色中色综合网| 国产美女扒开尿口久久久| 男生女生差差差的视频在线观看| 性感美女久久精品| 精品人妻一区二区免费| 欧美区一区二| 999视频在线观看| 免费黄色网页在线观看| 欧美在线视频不卡| 欧美人与性囗牲恔配| 国产日韩一区二区三区在线| 国产精品入口免费| 欧美人与牲禽动交com| 91精品一区二区三区久久久久久| 天堂在线中文视频| 美女久久久精品| 亚洲国产精品一区二区第四页av| yw.尤物在线精品视频| 亚洲精品网站在线播放gif| 在线观看日韩中文字幕| www久久久久| 成熟老妇女视频| 精品国内自产拍在线观看视频| 欧美中在线观看| 男女污视频在线观看| 色88888久久久久久影院野外| 五级黄高潮片90分钟视频| 久久亚洲美女| 亚洲国产一区二区三区在线播| 日韩三区在线| 日韩性xxxx爱| 国产高清免费在线观看| 亚洲第一福利一区| 在哪里可以看毛片| 美美哒免费高清在线观看视频一区二区| 中文字幕在线中文字幕日亚韩一区| 亚洲高清国产拍精品26u| 欧美超级乱淫片喷水| 性中国xxx极品hd| 天天综合天天做天天综合| 久久丫精品国产亚洲av不卡| 日韩精品电影在线观看| 国产av第一区| 欧美性生活一级片| 国产成人在线一区二区| 黄色小网站在线观看| 欧美哺乳videos| 久久黄色精品视频| 中文字幕在线一区二区三区| 青娱乐国产精品视频| 中日韩男男gay无套| 色涩成人影视在线播放| 国产日韩在线观看视频| 91精品成人久久| 日本中文字幕在线2020| 日韩精品一区国产麻豆| japanese国产在线观看| 亚洲美腿欧美偷拍| 粉嫩av蜜桃av蜜臀av| 精品一区二区在线播放| 免费成人在线视频网站| 日韩在线观看一区 | 午夜在线视频免费| 欧美日韩精品一区视频| 日韩成人av毛片| 中文字幕一区二区5566日韩| 亚洲 欧美 日韩在线| 美女免费视频一区二区| 日韩av综合在线观看| 久久久9色精品国产一区二区三区| 精品视频一区二区三区四区| 日本肉肉一区| 97在线视频免费看| 国产激情在线| 伊人伊人伊人久久| 无码国产精品高潮久久99| 欧美三级电影一区| 久久黄色精品视频| 亚洲综合男人的天堂| 欧美激情 一区| 99精品视频在线播放观看| 999久久久精品视频| 日韩黄色免费电影| 青青草成人免费在线视频| 天天av综合| 香蕉久久夜色| 亚洲裸色大胆大尺寸艺术写真| 亚洲一区二区三| 丰满少妇一区| 日本精品视频网站| 激情黄产视频在线免费观看| 欧美精品少妇videofree| 99中文字幕一区| 亚洲视频欧洲视频| 日韩porn| 亚洲国产精品人人爽夜夜爽| 国产后入清纯学生妹| 欧美日韩国产综合视频在线观看| 免费av中文字幕| 欧美午夜精品伦理| 可以在线观看av的网站| 亚洲国产精品久久久久秋霞影院| www.毛片com| 亚洲欧美日韩一区二区 | 午夜电影久久久| 国产乱国产乱老熟300| 亚洲免费成人av| 国产女人被狂躁到高潮小说| 中文字幕一区二区三区在线播放| 女性裸体视频网站| 国产精品国产馆在线真实露脸 | 在线精品亚洲| 日韩日韩日韩日韩日韩| 亚洲第一毛片| 91视频 -- 69xx| 亚洲男女自偷自拍| 大陆极品少妇内射aaaaa| 一本久久综合| 国产精品宾馆在线精品酒店| 夜夜夜久久久| 国产肥臀一区二区福利视频| 一本色道久久综合亚洲精品不卡| 国产毛片视频网站| 国产精品一页| 日本男人操女人| 美女在线一区二区| 天天摸天天舔天天操| 国产一区二区导航在线播放| 日韩不卡的av| www.99精品| 少妇毛片一区二区三区| 欧美国产视频在线| 91制片厂在线| 亚洲一级二级三级| 青青草免费观看视频| 色呦呦国产精品| 亚洲无码精品在线播放| 日韩三级视频在线观看| 天天色综合久久| 国产一区二区免费| 老司机午夜在线| 久久久久亚洲精品| 欧美天堂视频| 成人免费视频网| 无码国模国产在线观看| 激情视频在线观看一区二区三区| 国产在视频线精品视频www666| 一级做a爰片久久| 激情久久婷婷| 无码少妇一区二区三区芒果| 精品中文字幕一区二区小辣椒| 四虎成人免费视频| 国产亚洲一区字幕| 国产suv精品一区二区68| 亚洲成人tv网| 影音先锋国产在线| 亚洲电影天堂av| 欧美一级二级三级区| 久久久久免费精品国产| 成人午夜在线| 国产日韩亚洲精品| 99精品视频在线| 日本a级片免费观看| 精品在线免费视频| 久久久亚洲av波多野结衣| 亚洲精品免费在线| 无码一区二区三区| 亚洲高清久久网| 日本视频在线| 日韩免费黄色av| 136福利精品导航| 亚洲精品一区二区毛豆| 亚洲免费高清| 国产不卡的av| 国产精品系列在线| 国产成人在线免费视频| 日韩午夜中文字幕| wwwww在线观看免费视频| 97色在线播放视频| 国产一区 二区| 四虎影院一区二区三区 | 99精品热6080yy久久| www.超碰97.com| 久久久久久99精品| 日产电影一区二区三区| 91麻豆精品国产无毒不卡在线观看| 青青免费在线视频| 亚州成人av在线| 免费精品一区| 亚洲视频电影| 日韩精品视频网站| 久久久亚洲av波多野结衣| 亚洲一区二区三区四区在线 | 精品亚洲va在线va天堂资源站| 在线观看wwwxxxx| 91丝袜美腿美女视频网站| 成人三级视频| 午夜dv内射一区二区| 97久久超碰国产精品| 日韩人妻无码一区二区三区99| 91精品国产91综合久久蜜臀| av一区在线观看| 国产91久久婷婷一区二区| 欧美天堂影院| 国产免费毛卡片| 久久网这里都是精品| 免费在线不卡视频| 亚洲精品www久久久久久广东| 欧美日韩经典丝袜| 国产精品久久久久久久免费大片| 亚洲色图网站| 午夜诱惑痒痒网| 亚洲精品日产精品乱码不卡| 国产熟女一区二区丰满| 久久久久www| 一级毛片精品毛片| www.亚洲视频.com| 成人精品一区二区三区中文字幕| 国产精品19乱码一区二区三区| 日韩精品一区二区在线观看| 18视频在线观看网站| 99久久综合狠狠综合久久止| 午夜久久影院| jlzzjizz在线播放观看| 狠狠躁夜夜躁人人爽超碰91| 男人的天堂在线| 国产精品亚洲精品| 天天射成人网| 免费看三级黄色片| 亚洲国产精品嫩草影院| 免费一级在线观看| 国产精品一区二区三区免费视频| 婷婷精品进入| www.四虎在线| 色悠悠久久综合| 日本三级视频在线观看| 91传媒视频免费| 亚洲欧美卡通另类91av| av黄色在线免费观看| 欧美日本一区二区| 国产丝袜在线播放| 麻豆亚洲一区| 老司机免费视频一区二区| 麻豆changesxxx国产| 日韩精品欧美国产精品忘忧草| 午夜欧美巨大性欧美巨大| 一区二区精品在线观看| 成人aa视频在线观看| 伊人久久久久久久久久久久 | 国产成人无码av| yw.139尤物在线精品视频| 亚洲视频精选| 日批视频在线免费看| 最新久久zyz资源站| 天天干天天操av| 91精品国产综合久久香蕉| 91久久久久| 成人做爰视频网站| 亚洲国产欧美精品| 久久日本片精品aaaaa国产| cao在线观看| 国产精品天天看| 欧美熟女一区二区| 国产日韩欧美影视| 韩国一区二区三区在线观看| av网站免费在线看| 日韩精品资源二区在线| 欧美日韩五码| 99热亚洲精品| 中文字幕亚洲精品在线观看| 日本免费网站在线观看| 国产日韩欧美影视| 久久久噜噜噜| 日韩 国产 在线| 久久国产精品电影| 色88久久久久高潮综合影院| 成人免费毛片日本片视频|