很久很久很久以前,
【跨國語系基礎架構】上線了.
又過了很久很久 我們評估要上 CDN
講那麼多,還不是壞掉了。
多語系 CDN 的 Response Header Access-Control-Allow-Origin Protocol 與主頁面不符;
測試環境 | 測試結果 |
---|---|
QA8 | OK |
QA | OK |
PP | OK |
鎖Host測試 | OK |
半數機器上線 | OK |
全數機器上線 |
為什麼全數機器上線才發生異常。
使用 Partial View 與 OutputCache
小心 Borwser Cache
站台上會有跨Domain的存取行為
CDN & Access-Control-Allow-Origin
稍微提一下 CorsModule
TranslationCDN : 用來防止瞬間量對 Server 的 Impact
FingerprintTag : 一份Cache的時戳, 用以取得新版多語系 Json 檔
site : BrowserCache 遇到跨 Domain 存取時, 會發生 CORS Error
1. Partial View 會有 OutputCache
→ 保得了一時,保不了一世
2. 為了 Borwser Cache ,F2E 在 QueryString 作了加工。
3. 網站跨Domain的存取行為,歷史共業。
4. CDN & Access-Control-Allow-Origin
5. CorsModule,有必要區分protocol嗎 ?
CorsModule
//// Step3. 檢查呼叫webapi是否需要https if (httpContext.Request.Url.Scheme == Uri.UriSchemeHttps && (sourceUri == null || sourceUri.Scheme == Uri.UriSchemeHttps)) { allowOrigin = allowOrigin.Replace("http:", "https:"); }
關閉QA8 OutputCache
測試步驟如下:
- Case1. http 強制更新後,連線 https
- http://8.qa.demo/index?r=t
- ts = 2387
- ao = http://8.qa.demo/index
- http://8.qa.demo/index
- ts = 2387
- ao = http://8.qa.demo/index
- https://8.qa.demo/index => **Error**
- ts = 2387
- ao = http://8.qa.demo/index
- Case2. https 強制更新後,連線 http
- https://8.qa.demo/index?r=t
- ts = 8458
- ao = https://8.qa.demo/index
- http://8.qa.demo/index
- ts = 8458
- ao = https://8.qa.demo/index
- https://8.qa.demo/index => **Error**
- ts = 8458
- ao = https://8.qa.demo/index
Miss from cloudfront
,1. 團隊評估欠缺數據 →
2. 客戶反應異常。→
3. 藍綠部署異常回覆速度,耗時 93 分鐘 → `已有RD著手改善`
4. 無法完整重現錯誤 → 見6、7、9
5. RD 沒有 CDN 權限 → `已申請`
6. QAn 沒有設定 CDN → `沒有CDN的Issue沒必要特別設定(因為需要對外)`
7. 頁面 OutputCache 會影響測試。→ 必要之惡 ?
8. PP / G3 與 Prod CDN設定不一致 → `webapi/transalte/* 已調整一致`
9. Release 三步驟 , 最後一步才會開啟 CDN → ?
Q. 下次我們怎麼作 ?
什麼是 CDN ?
Server跟CDN就像工廠與便利店的關係, 你要買東西不用跑到工廠
只要在離自已最近的便利店買就好了, 過期的商品(資料)會被丟掉
重新跟工廠進貨(拉新資料)。
(fin)