星期二, 10月 22, 2019

AWS Cloud Front 與 Cloudflare 排除特定 URL 快取小記

AWS Cloud Front 與 Cloudflare 排除特定 URL 快取小記

在雲端服務使用上, 有些公司會使用 CDN
  • 內容傳遞網路(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過網際網路互相連接的電腦網路系統,利用最靠近每位使用者的伺服器,更快、更可靠地將音樂、圖片、影片、應用程式及其他檔案傳送給使用者,來提供高效能、可擴展性及低成本的網路內容傳遞給使用者。 [1]

借用 Azure 上面的圖片介紹


藉由 CDN 的 POP 來達成不用回到原始伺服器, 就提供相關物件給使用者
  • 如果 POP 沒有該物件, 會向原點抓取物件, 然後視 CDN 設定上面的 TTL 或是其他的設定(例如 Cache-Control ) 來決定是否快取, 或是快取多久
  • 如果 POP 已經快取, 針對條件範圍內的設定, 直接提供物件給使用者
    • 加速使用者取得物件
    • 減少原站的頻寬


但是有些時候會有排除某些物件被快取的需求
  • 原站有檔案不希望被快取
  • 檔案的內容有改變, 需要同時處理原站與POP物件, 但是希望使用者能在較短時間可以存取到新的檔案
    • 可以使用 Purge Cache 方式, 但是需要先處理完原站的物件, 才能再去處理 CDN Purge Cache

所以這邊就針對 AWS CloudFront 與 Cloudflare 兩個服務排除特定檔案紀錄該如何處理

假設想要排除的物件是 http://YOUR_DOMAIN/error.html 

==== AWS Cloudfront ====

參考官方文件

登入 AWS Management Console

點選 Service -- > CloudFront

點選要處理的分佈 ID ( Distribution ID ) -- > 點選 Behaviors

點選 Create Behavior

Path Pattern 輸入要排除的物件: 例如 /error.html
Object Caching: 選擇 Customize
Minimum TTL: 設定為 0
Maximum TTL: 設定為 0

點選 Create 建立


套用需要一點時間
可以在 Distributions 的 Status 觀察是否佈署完成

接下來就可以觀察是否有被快取

==== Cloudflare ====

Cloudflare 的部分比較可惜, 因為他官方的文件沒有仔細提到, 還是開 ticket 之後才得到回答, 然後也有跟原廠建議要完備文件

官方文件如下

文件上面, 後來主要是針對 Wildcard and Advanced Pattern Matching 的部分, 卻忘記提到如何 exclude URL

做法如下

登入 Cloudflare -- > 選取要設定的單位 ( domain )
點選 Page Rule -- > Create Page Rule

輸入 URL, 例如 *.YOURDOMAIN/error.html
點選 Add a Setting
在下拉式選單選取 Cache Level , 另外一個選取 Bypass
點選 Save and Deploy 完成設定


接下來就可以觀察是否有被快取


先記下來

~ Enjoy it

Reference

沒有留言: