精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成人一区二区三区四区| 无码国产精品久久一区免费| www.视频在线.com| 精久久久久久久久久久| 欧美第一淫aaasss性| 少妇一级淫片免费放播放| 三上悠亚激情av一区二区三区 | 国产精自产拍久久久久久| 三级黄色片在线观看| 欧美一区一区| 日韩欧美国产中文字幕| www亚洲国产| 亚洲AV成人无码一二三区在线| 在线亚洲一区| 久久艹在线视频| aaaaa级少妇高潮大片免费看| 日日夜夜亚洲| 欧美日韩国产中字| 国产精品jizz在线观看老狼| 三级在线观看| 国产精品亚洲专一区二区三区| 日韩美女视频免费在线观看| 九九视频免费观看| 日韩成人精品一区| 日韩经典第一页| 一卡二卡三卡四卡五卡| 国精产品一区一区三区四川| www.av在线| 青椒成人免费视频| 97国产一区二区精品久久呦 | 国产做受高潮69| 国产精品久久国产精麻豆96堂| 爱高潮www亚洲精品| 欧美日韩国产首页| 欧美污视频网站| 深夜国产在线播放| 亚洲欧美怡红院| 青青成人在线| 青青草免费在线| 成人av一区二区三区| 亚洲一区国产精品| 又骚又黄的视频| 久久久噜噜噜久久狠狠50岁| 欧美华人在线视频| 在线观看成人毛片| 亚洲国产一区二区在线观看| 色爱av美腿丝袜综合粉嫩av | 日本亚洲欧美在线| 99热国内精品| 最新国产成人av网站网址麻豆| 亚洲成人日韩在线| 欧美综合精品| 亚洲国产天堂久久综合网| 亚洲综合在线一区二区| 日日夜夜亚洲| 欧美一级片在线观看| 交换做爰国语对白| 中文字幕综合| 欧美一级生活片| 一卡二卡三卡四卡五卡| 欧美激情三级| 精品国产乱码久久久久久久| 在线播放av网址| 成人在线超碰| 精品视频久久久久久| 一二三不卡视频| 国产videos久久| 中文在线不卡视频| 日本爱爱小视频| 亚洲老妇激情| 久久久久免费视频| 97免费在线观看视频| 国产日韩一区| 国产xxx69麻豆国语对白| 中日韩在线观看视频| 秋霞av亚洲一区二区三| 国产精品专区一| 国产精品国产一区二区三区四区 | 久草福利在线观看| 草草视频在线一区二区| 亚洲精品久久在线| 91成人在线免费视频| 日本电影一区二区| 久久亚洲电影天堂| 在线观看 中文字幕| 欧美一级网站| 国产日韩欧美黄色| 精品国产伦一区二区三区| 成人av网站大全| 老司机精品福利在线观看| 97在线观看免费观看高清| 亚洲欧洲av色图| 人人妻人人做人人爽| 免费成人直播| 3d动漫精品啪啪1区2区免费| 亚洲一区二区在线免费| 精品国产精品国产偷麻豆| 久久久av免费| 亚洲GV成人无码久久精品| 美女诱惑一区二区| 国产精品推荐精品| 成人性爱视频在线观看| 亚洲国产wwwccc36天堂| 亚欧在线免费观看| 成人高潮视频| 日韩在线中文视频| 二区视频在线观看| 国产精品一品二品| 日韩欧美99| 91福利在线尤物| 国产精品一区在线看| 99久久夜色精品国产网站| 一本一道久久a久久综合精品| 日本大胆在线观看| 在线区一区二视频| 性色av一区二区三区免费| 亚洲黄色免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 大桥未久一区二区| 亚洲精品日产| 精品久久国产字幕高潮| 国产精品免费在线视频| 久久免费国产| 国内一区二区三区在线视频| 国产视频一区二区| 在线观看日韩电影| 97人妻精品一区二区三区免| 欧美激情1区| 91久久在线观看| a中文在线播放| 一本色道久久综合精品竹菊| 中文字幕无码毛片免费看| 日韩黄色大片| 国产精品h在线观看| 色猫av在线| 精品国产精品自拍| 男人的天堂免费| 欧美影院一区| 成人国产精品久久久| a√在线中文网新版址在线| 色天天综合色天天久久| 国产精品一区二区久久久| 国产日韩在线观看一区| 国产精品色在线观看| 成人精品小视频| 国产99久久| 日韩免费高清在线观看| 日本免费不卡| 色又黄又爽网站www久久| 久久久久久久久久久国产精品| 99精品热6080yy久久| 国内外成人免费视频| 爱啪啪综合导航| 亚洲精品一区二区三区影院| 日韩av男人天堂| 99久久久无码国产精品| 欧美极品欧美精品欧美| 色综合久久中文| 热99久久精品| 成年网站在线| 欧美日韩mp4| 天天操天天操天天操天天操天天操| 六月丁香婷婷久久| 国产高潮呻吟久久久| 色悠久久久久综合先锋影音下载| 欧美激情精品久久久久久| 成人久久久精品国产乱码一区二区| 一区二区在线观看免费视频播放| 91精品人妻一区二区三区四区| 激情综合视频| 日本一区二区三区视频在线播放| 深夜视频一区二区| 久久综合电影一区| 亚洲国产精彩视频| 欧美日韩国产影院| 久久精品在线观看视频| 国产成人免费视频网站 | 欧洲在线视频| 日韩av影视在线| 黄色污污视频软件| 亚洲视频一区二区在线| 国产成人精品一区二区三区在线观看 | 欧美日本三级| 2025国产精品视频| 日本在线天堂| 欧美精品一区二区在线播放| 国产成人精品网| 中文字幕在线一区二区三区| 国产吃瓜黑料一区二区| 丝袜美腿一区二区三区| 激情五月五月婷婷| 久久精品国产亚洲5555| 国产精品中文字幕在线观看| caoporn视频在线观看| 一区二区成人av| 成人黄色免费视频| 色综合久久久久久久久久久| 波多野结衣爱爱视频| 2024国产精品| 视频区 图片区 小说区| 免费日韩视频| 人人妻人人澡人人爽欧美一区| 九热爱视频精品视频| 亚洲www在线观看| 黄色精品视频| 91国产视频在线| 久操免费在线| 伊人伊成久久人综合网站| 四季av日韩精品一区| 欧美卡1卡2卡| 亚洲图片在线视频| 亚洲午夜成aⅴ人片| 正在播放国产对白害羞| av爱爱亚洲一区| 成人在线短视频| 免费人成黄页网站在线一区二区| 国产原创中文在线观看| 午夜影院欧美| 亚洲免费不卡| 九一精品国产| 久久99久久精品国产| 亚洲欧美日本国产| 成人黄色在线免费| 91p九色成人| 欧美有码在线观看| 1区2区在线| 北条麻妃在线一区二区| 成人免费在线电影| 亚洲欧美日韩成人| 色鬼7777久久| 亚洲精品自拍偷拍| 视频三区在线观看| 亚洲国产一区自拍| 亚洲欧美另类视频| 日韩欧美的一区二区| 国产叼嘿视频在线观看| 337p亚洲精品色噜噜噜| 91精品在线视频观看| 欧美视频在线一区| 欧美 亚洲 另类 激情 另类| 欧美在线一二三四区| 蜜臀尤物一区二区三区直播| 一本色道亚洲精品aⅴ| 午夜婷婷在线观看| 日韩欧美在线播放| 狠狠人妻久久久久久| 黑人巨大精品欧美一区二区免费 | 欧美日韩精品一区二区三区蜜桃 | 亚洲欧美日韩精品在线| 欧美精品尤物在线观看| 日韩成人av电影在线| 成人激情电影在线| 亚洲一区三区| 亚洲国产日韩欧美在线| 成人在线观看毛片| 亚洲午夜精品久久久久久app| av女优在线播放| 国产精品乱看| 91蝌蚪视频在线观看| 奇米影视一区二区三区小说| 91女神在线观看| 国产一区二区三区久久久| 国产资源中文字幕| av福利精品导航| a级片在线观看| 国产精品久久夜| 久久精品www人人爽人人| 亚州成人在线电影| 亚洲黄色免费观看| 欧美日韩一区二区三区高清 | 亚洲区成人777777精品| 海角社区69精品视频| 国产精品无码av在线播放| 久久五月激情| 一二三av在线| jlzzjlzz亚洲日本少妇| 国产黄片一区二区三区| 亚洲欧洲成人av每日更新| 国产福利久久久| 一本色道久久综合亚洲精品按摩| 97成人在线观看| 精品999久久久| 第三区美女视频在线| 久久这里只有精品视频首页| 一个人www视频在线免费观看| 国产精品亚洲精品| 成人影院中文字幕| 亚洲欧美在线网| 影音先锋亚洲精品| 成人中文字幕av| 国产传媒久久文化传媒| 人人妻人人澡人人爽人人精品| 国产精品国产自产拍在线| 国产精品99re| 欧美日韩中文字幕一区二区| 亚洲精品字幕在线| 在线观看精品自拍私拍| 黄页网站在线| 国产精品一二三在线| 国产精品美女在线观看直播| 五月天色一区| 亚洲伦伦在线| 婷婷中文字幕在线观看| 久久综合久久久久88| 欧美成人免费看| 欧美特级限制片免费在线观看| 蜜桃91麻豆精品一二三区| 中文字幕亚洲图片| 色综合亚洲图丝熟| 91传媒在线免费观看| 欧美日韩在线二区| 亚欧无线一线二线三线区别| 精品无码三级在线观看视频| 国产真实乱人偷精品人妻| 五月激情综合色| 精品人妻一区二区三区三区四区 | 黄色小说在线播放| 国产欧美精品日韩精品| 久久91麻豆精品一区| 国产一线二线三线女| 国内精品久久久久影院薰衣草 | 99久久精品网| 三年中国国语在线播放免费| 99精品国产视频| 免费一级a毛片夜夜看| 666欧美在线视频| 黄色片免费在线| 日本国产高清不卡| 日韩母乳在线| 日日碰狠狠添天天爽超碰97| 成人免费高清视频| 久久精品99国产精| 精品伦理精品一区| 免费在线观看av电影| 亚洲一区二区中文字幕| 亚洲自拍偷拍网| 亚洲天堂一区二区在线观看| 综合分类小说区另类春色亚洲小说欧美| 亚洲 欧美 日韩 在线| 精品一区精品二区| 性xxxxfreexxxxx欧美丶| 久久天堂国产精品| 国产亚洲欧洲| 成人影视免费观看| 色哟哟欧美精品| 国产98在线| 国产精品永久免费在线| 色综合久久网| 99久久99精品| 亚洲精品水蜜桃| 亚洲欧美激情在线观看| 97福利一区二区| 亚洲婷婷影院| 男人搞女人网站| 国产精品大尺度| av手机免费看| 欧美激情视频一区| 欧美激情15p| 亚洲人成无码www久久久| 国产嫩草影院久久久久| 这里只有精品6| 欧美精品在线免费观看| 风间由美一区二区av101| 91好吊色国产欧美日韩在线| 久久青草国产手机看片福利盒子| 亚洲精品毛片一区二区三区| 色小说视频一区| 日本一区二区三区电影免费观看| 欧美一级视频在线播放| 久久这里都是精品| 一区二区视频网| 色在人av网站天堂精品| 日韩极品在线| 欧美日韩中文不卡| 亚洲在线免费播放| 蜜桃视频在线观看网站| 国产美女被下药99| 国自产拍偷拍福利精品免费一 | 国产一区二区三区电影在线观看| 国产wwwxx| 一个色妞综合视频在线观看| 天堂а在线中文在线无限看推荐| 国产成人精品日本亚洲专区61| 99久久夜色精品国产亚洲96| 97人妻精品一区二区三区免费| 色综合久久久久综合99| 久草中文在线观看| 久久精品五月婷婷| 精彩视频一区二区| 国语对白永久免费| 色婷婷久久av| 偷拍一区二区| 污污视频在线免费| 91官网在线观看| 天天色天天射天天综合网| 欧美一区二区三区成人久久片| 国产伦精品一区二区三区视频青涩| 在线观看亚洲天堂| 久久中文字幕国产| av在线不卡免费观看|