# CDN Purge Cache

## Tổng quan

**CDN Purge Cache** được sử dụng trong các trường hợp cần làm mới hoặc xóa bỏ các nội dung đã được cache trên hệ thống CDN.

Sau đây là mô tả chi tiết các bước thực hiện Purge Cache trên CDN:

* **Bước 1:** Đầu tiên, bạn đã khởi tạo một **Object Download** trên hệ thống vCDN. Chi tiết các bước vui lòng tham khảo tại [đây](https://docs.vngcloud.vn/vng-cloud-document/vn/vcdn/loai-hinh-dich-vu/object-download). Giả sử, bên dưới tôi đã khởi tạo 1 Object Download *tuongtk3-download* ( vCDN Domain: *tuleemu0l7obj.vcdn. cloud*) và liên kết với S3 Origin. Trên S3 Origin, tôi đã tạo các file demo1.txt ... demo5.txt, text1.txt ... text5.txt.
* **Bước 2:** Thực hiện test Purge Cache By (ALL, BEGIN, END, CONTAIN, URI(s) ). Trong đó:
  * **ALL**: Xóa toàn bộ cache.
  * **BEGIN**: Xóa cache cho các URL bắt đầu bằng một chuỗi nhất định.
  * **END**: Xóa cache cho các URL kết thúc bằng một chuỗi nhất định.
  * **CONTAIN**: Xóa cache cho các URL chứa một chuỗi cụ thể.
  * **URI(s)**: Xóa cache cho một hoặc nhiều URI cụ thể.
* **Bước 3:** Gọi đến các link để CDN lưu cache
  * Với vCDN Domain: *tuleemu0l7obj.vcdn. cloud*, bạn có thể thực hiện gọi đến các link để CDN lưu cache như sau:
    * <https://tuleemu0l7obj.vcdn.cloud/purge_lab/text1.txt>
    * [https://tuleemu0l7obj.vcdn.cloud/purge\_lab/demo1.txt<br>](https://tuleemu0l7obj.vcdn.cloud/purge_lab/demo1.txt)
    * ....

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-e97b486b0fc937b444ae5bb6ea155dd0e37ac312%2F1.png?alt=media" alt=""><figcaption></figcaption></figure>

* Khi CDN đã lưu cache ta sẽ thấy header `X-Cache: HIT` và `X-Cache-Version: $Thời_gian_timestamp_lưu_cache` ở CDN

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-76f24a92f86e9a3a255f287d5a9f25eb01db274b%2F2.png?alt=media" alt=""><figcaption></figcaption></figure>

* Đối với những file chưa được lưu cache ở CDN header sẽ có dạng `X-Cache: MISS` và `X-Cache-Version: $Thời_gian_ timestamp_lưu_cache` ở CDN

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-4a1933861fce095b6475e6ef0cf95398a50f9e1d%2F3.png?alt=media" alt=""><figcaption></figcaption></figure>

Chi tiết mỗi loại bạn vui lòng tham khảo hướng dẫn bên dưới:

## Chi tiết

### 1. Purge Cache By ALL.

Purge by ALL: sẽ xóa hết tất cả link (tất cả Cache của resources trên CDN).

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-9cd601e215ce20304973aa8844bfebc56adb4b2c%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Trước khi Purge Cache các file đã được Cache ở CDN

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-9683cbc8fafa750f65a71c0c9c6318d22d9620d2%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Thay đổi nội dung của các file, sau đó refresh trình duyệt. Do các file đã được Cache ở CDN nên khi thay đổi ở Origin các file ở CDN chưa được thay đổi theo.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-ea92a2baccb629b946cedfbf490661c1aee80403%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Tiến hành Purge Cache: Chọn **Service** và **CDN** tương ứng và **Purge by ALL**

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-ff42c2941bf9e360d18c5f73040e7b9a327f7c43%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sau khi Purge cache CDN đã gọi về Origin để lấy nội dung mới nhất.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-02c9d589b7d9e1cc58c1e763cef81ffc1aeecf0a%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### 2. Purge Cache By BEGIN

Purge by BEGIN: Sẽ xóa hết các resource đang được Cache ở CDN bắt đầu bằng ký tự nhập vào.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-5def5cc43fc0e7cd2aa87c30d3e96359712c8b99%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Tương tự như Purge by ALL, trước khi Purge Cache các file đã được Cache ở CDN. Tiến hành Purge Cache: Chọn **Service** và **CDN** tương ứng và **Purge by BEGIN**. Tại URI nhập: `/purge_lab/text*` (xóa cache tất cả các file text\* ở vCDN).

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-41fbd4f5145a3ba4da5a64bf2d3c8ea4e961ecaa%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sau khi Purge kiểm tra file `/purge_lab/text*` đã được gọi về Origin để lấy nội dung mới nhất.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-f1e5077148000ab9eda092e1562505a24bf20299%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Do các file `/purge_lab/demo*` không được Purge nên nội dung vẫn được lấy từ Cache ở CDN.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-32272fe6df1337457eb9194058405e571e844cbb%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### 3. Purge Cache By CONTAIN

Purge by CONTAIN: Sẽ xóa hết các resource đang được Cache ở CDN có chuỗi ký tự nhập vào.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-c032c5658cf39ccffeefe2c947277304fafb1407%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Tương tự như Purge by ALL, trước khi Purge Cache các file đã được Cache ở CDN. Tiến hành Purge Cache: Chọn **Service** và **CDN** tương ứng và **Purge by CONTAIN**. Tại URI nhập: `/*demo*` (xóa cache tất cả các file \*demo\* đang được cache ở vCDN).

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-de76732280b027266b46ff23cf6d22d77b5e09f8%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sau khi Purge Cache các file `/purge_lab/demo1.txt` ... Đã được gọi về Origin để lấy nội dung mới.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-c5edbeb04b7dda54cb092a93cbc2ac2e54892a9b%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Các file `/purge_lab/text1.txt` ... Vẫn lấy nội dung từ Cache ở CDN

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-09dbb1a833f3b18d2fd123d70a984ee0e3dde693%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### 4. Purge Cache By END.

Purge by END: Sẽ xóa hết các resource đang được Cache ở vCDN kết thúc chuỗi ký tự nhập vào.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-735b04a8ce2ac16eb40d9d98cd7312e0b8233530%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Tương tự như Purge by ALL, trước khi Purge Cache các file đã được Cache ở CDN. Tiến hành Purge Cache: Chọn **Service** và **CDN** tương ứng và **Purge by END**. Tại URI nhập: `/*1.txt` (xóa cache tất cả các file \*1.txt đang được cache ở CDN).

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-261e81460fb271cd95a2e75dda5cce6628b22fd9%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sau khi Purge Cache các file `/*1.txt` ... Đã được gọi về Origin để lấy nội dung mới.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-816504d10f7cff16ad9f3a08afe814162fcbaf0a%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Các file `/purge_lab/text1.txt` ... Vẫn lấy nội dung từ Cache ở CDN.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-e68e68808700f1cee1e98267b2521052a9fbe630%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### 5. Purge Cache By URI(s).

Purge by URI(s): Sẽ xóa đúng với link được chỉ định.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-069ec772ff8bab1778d597502f8ebb2ce9aae5a8%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Tương tự như Purge by ALL, trước khi Purge Cache các file đã được Cache ở CDN. Tiến hành Purge Cache: Chọn **Service** và **CDN** tương ứng và **Purge by URI(s)**. Tại URI nhập: `/purge_lab/demo1.txt` , `/purge_lab/demo2.txt` ... (xóa cache các link chỉ định đang được cache ở vCDN).

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-e4ad35dedade3be4b24f6f8af3737122ca8c66c0%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sau khi Purge Cache các file `/purge_lab/demo1.txt` ... Đã được gọi về Origin để lấy nội dung mới.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-ec34c157726ffe6a6fdc1e63889d687168737d61%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* Các file khác không được chỉ định Purge Cache ... Vẫn lấy nội dung từ Cache ở CDN.

<figure><img src="https://3672463924-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0NrrrdJdpYOYzRkbWp5%2Fuploads%2Fgit-blob-c6c91e38dc2cb3b1846ce0fafbe90b76d47d77fb%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
