Trang chủTác giảLiên hệ

Static & Dynamic webpage in Cloudfront (AWS CDN)

By Trịnh Minh Hùng
Published in AWS
August 10, 2021
3 min read

Bài viết này mình thực hiện sưu tầm các nguồn liên quan đến giải pháp CDN, cụ thể là Cloudfront. Vì chưa có đủ thời gian để lược dịch cũng như nhận xét trên quan điểm cá nhân nên đã số mình để link tham khảo cho anh em đọc. Mình sẽ thực hiện cập nhật lại nội dung để truyền đạt quan điểm cá nhân nhiều hơn cũng như sưu tầm thêm những lesson learned về vấn đề này sau này vào đây.

Dynamic and Static content.

Chắc mình sẽ không nhắc lại phân biệt static content và dynamic content trên web application nữa. Mọi người có thể google search để clear lại nhé. Ngoài ra, mình thấy link này có giải thích cũng khá chi tiết. Hình ảnh trực quan, mình cũng tham khảo từ link trên nhé:

alt text

Thực tế trên một trang static website thì chỉ có static content, ví dụ: blog, … alt text

Các Modern Website bây giờ thì phù hợp với Dynamic Website. Ví dụ như CMS, social website hay các trang báo thế hệ mới chẳng hạn. Tức là có cả static và dynamic content nhé.

alt text

Vậy tại sao CDN cần caching Dynamic content và Static content?

https://www.cloudflare.com/learning/cdn/caching-static-and-dynamic-content/ Mình sẽ tham khảo từ nội dung này.

Chắc hẳn việc sử dụng CDN caching static content thì ai cũng dễ hiểu nếu mọi người clear được định nghĩa của nó. Vì nó là static file (image, video, js, html,…) không có tính chất thay đổi, tức là mọi client đều nhận kết quả giống nhau nên tốt nhất chúng ta nên caching nó lại bằng CDN. Sẽ tối ưu hơn về latency khi lấy dữ liệu này từ Edge location thay vì phải lấy từ Origin. Một Static Webpage sẽ chỉ có static content, vì vậy tốt nhất bạn hãy cache tất cả content của nó để đạt hiệu quả tối ưu nhé.

Trong khi đó Dynamic content thì được render ra bởi server của chúng ta. Ví dụ: html, script thì sẽ được generate bởi server và trả về cho end client. Hoặc dữ liệu (json, xml) thì sẽ được trả về qua API. Tất cả những cái đó đều gọi là Dynamic Content vì bản chất các dữ liệu đó nó thay đổi chứ không cố định 1 nội dung.

Trước đây, mặc định dynamic content thì không cân nhắc để cache. Nhưng theo thời gian, cải tiến của công nghệ cho phép website có thể serve dynamic content từ cache của CDN. Từ đó giảm được latency cho hệ thống, hiệu quả tương tác hơn.

Dynanic content bằng cách: với 1 url thì bạn sẽ được server generate ra 1 nội dung: file, html, js, json,… Khi enable ở CDN thì nó sẽ được caching ở Edge location. Khi chúng ta request thì dữ liệu sẽ được trả trực tiếp từ edge location sẽ ở gần vị trí địa lý của chúng ta hơn. Ngoài ra, phía server (origin) sẽ không phải tốn tài nguyên việc xử lý để trả kết quả. Từ đó sẽ giảm được latency và hiệu quả về optimize hệ thống, cũng giúp hỗ trợ việc chố DDos nữa. Nói chung mình cũng chỉ hiểu bản chất cơ bản là như thế, để chuyên sâu hơn về CDN thì mọi người tự nghiên cứu sâu hơn nhé.

Sự khác nhau về Cloudfront và cloudflare:

Mọi người có thể tham khảo các bài so sánh sau nhé: https://wp-rocket.me/blog/cloudflare-vs-cloudfront/#:~:text=Most%20WordPress%20users%20will%20be,setup%20process%20than%20Amazon%20CloudFront&text=Cloudflare%20has%20a%20slightly%20larger,beneficial%20security%20features%20as%20well

https://searchcloudcomputing.techtarget.com/answer/Cloudflare-vs-Amazon-CloudFront-Which-CDN-is-right-for-you

https://www.trustradius.com/compare-products/amazon-cloudfront-vs-cloudflare

Tăng tốc truy cập với Wordpress:

Thay vì đi sâu giải thích về việc cache ở CDN thì mình sẽ giới thiệu tới giải pháp CDN trên AWS là Cloudfront. Và 1 usecase quen thuộc là sử dụng trên wordpress. Phần này mình sẽ lấy trên blogs của aws mọi người có thể trực tiếp đọc nhé. Còn ở đây có thể sẽ là trình bày ngắn gọn theo ý hiểu của mình, vì bản chất bài viết này là note lại. https://aws.amazon.com/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/ alt text

Giải pháp đơn giản để invalidation cache:

Dĩ nhiên rồi, Với Static content thì đôi khi chúng ta muốn chủ động. Còn với Dynamic content thì việc có những yêu cầu về xoá cache (invalidation cache) ở các edge location là cần thiết để tránh sai sót về dữ liệu (consistency). http://coderdiaries.com/invalidate-the-cache-automatically-after-release-with-aws-s3-sns-lambda-and-cloudfront/ https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html


Tags

CloudFrontAWSStatic contentStatic webpage

Trịnh Minh Hùng

Related Posts

Batch Operations cho S3
August 09, 2021
5 min
© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media