Caching nội dung tĩnh đã quá quen thuộc với chúng ta rồi. Nhưng ngày nay công nghệ cho phép bạn thiết lập cả caching nội dung động, website của bạn sẽ có tốc độ cao nhất với tùy chọn này!

Không giống như nội dung tĩnh, nội dung động khác nhau giữa từng người dùng, điều đó có nghĩa là nó sẽ khó cache hơn và không thể đem nội dung đó phục vụ cho tất cả người dùng được.

Tuy nhiên, ngày nay caching nội dung động (dynamic content) là có thể thực hiện được với các kỹ thuật phù hợp.


Sự khác biệt giữa nội dung động & nội dung tĩnh là gì?

Nội dung tĩnh (static content) là bất kỳ file nào được lưu trên server (máy chủ) và được phân phối giống nhau vào mọi lúc tới mọi người dùng. Các file HTML và ảnh là ví dụ về kiểu nội dung này. Nội dung tĩnh giống như báo giấy: một khi một số báo được xuất bản rồi, bất cứ ai cầm nó lên vào bất cứ lúc nào đều thấy cùng nội dung, ảnh, cho dù có bất cứ sự kiện gì khác diễn ra trong ngày hôm đó.


Nội dung động là nội dung thay đổi dựa trên một số yếu tố cụ thể với người dùng, chẳng hạn như là thời gian ghé thăm, vị trí và thiết bị. Trang web động sẽ không giống nhau với tất cả mọi người, và nó có thể thay đổi khi người dùng tương tác với nó – giống như một tờ báo điện tử trong tương lai có thể viết lại (thay đổi) nội dung của nó dựa trên người đọc. Điều đó làm cho trang web có tính cá nhân hóa cao hơn và có tính tương tác nhiều hơn.

trang tĩnh
Trang tĩnh. Nội dung giống nhau, bất kể người dùng là ai, truy cập vào lúc nào, ở đâu
trang động
Trang động. Nội dung tùy biến thay đổi theo từng người dùng, thời gian & vị trí, v.v…

Các trang web hiện đại là ví dụ tốt về nội dung động: không giống báo giấy, các bài viết trên website thường được cập nhật, và trang chủ có thể có các tiêu đề khác nhau dựa trên vị trí của người truy cập hoặc đăng nhập.

Các trang mạng xã hội là một ví dụ khác: trang news feed trông hoàn toàn khác với mỗi người dùng, và người dùng có thể tương tác với nội dung để thay đổi điều đó (bằng cách nhấn like, chia sẻ, hoặc bình luận trên các post).


Trang web động không lưu trữ giống như các file HTML tĩnh. Thay vì thế, các đoạn mã phía máy chủ tạo ra file HTML để đáp ứng lại các sự kiện, chẳng hạn như các tương tác của người dùng hoặc người dùng đăng nhập, và gửi file HTML đến trình duyệt web. Vì nội dung động được tạo ra từ phía máy chủ (server-side), nó thường được phục vụ từ máy chủ gốc, chứ không phải từ cache.

Trong một khoảng thời gian dài trước đây, nội dung động được xem là không thể tạo cache (uncacheable). Nhưng các công nghệ mới cho phép các website phục vụ nội dung động từ cache, giúp giảm thiểu đáng kể độ trễ (latency) trong khi vẫn giữ được tương tác của trải nghiệm người dùng.


Cách cache nội dung tĩnh?

Thông thường, quá trình caching web là lưu bản sao các file tĩnh – ví dụ, ảnh, khi nội dung được phục vụ, vì nó ở gần người dùng hơn và sẽ được phân phối nhanh hơn vào lần tới.

Trình duyệt và CDN có thể cache nội dung tĩnh trong một khoảng thời gian nhất định và phục vụ nó cho người dùng miễn là nội dung tiếp tục được yêu cầu. Điều này là có thể vì nội dung tĩnh không thay đổi qua thời gian; cùng một file có thể phục vụ cho người dùng hết lần này đến lần khác.


Cách caching nội dung động hoạt động?

Nội dung động được tạo ra bởi các đoạn scripts để thay đổi nội dung trên trang. Bằng cách chạy các scripts trên cache CDN thay vì khoảng cách xa tới máy chủ gốc, nội dung động có thể được tạo ra và phân phối ngay từ cache. Nội dung động về cơ bản là “đã được cache” và không phải phục vụ từ máy chủ gốc, giảm thời gian phản hồi cho yêu cầu của máy khách và tăng tốc các trang web động.

Ví dụ, Cloudflare Worker có các hàm JavaScript serverless chạy được trên CDN của Cloudflare. Chúng có thể phản hồi với nhiều sự kiện và thông tin nhập vào, bao gồm kiểu thiết bị, thời gian trong ngày, vị trí người dùng, hoặc data từ các API bên thứ ba. Dựa trên các thông số này, nội dung động có thể được tạo ra và phục vụ tới các thiết bị máy khách, hoặc nội dung tĩnh có thể được thay đổi, tạo cache, hoặc xóa đi từ cache.

Vì Cloudflare Workers là các đoạn mã JavaScript, nên ngoài việc caching nội dung động, các nhà lập trình có thể sử dụng chúng để xây dựng lên một loạt các tính năng hoặc một ứng dụng hoàn chỉnh. Thêm vào đó, Cloudflare Worker có thể được triển khai và lan truyền ra các vị trí CDN trên toàn cầu trong vài giây.

Cloudflare Workers chạy trên môi trường thực thi nhẹ, vì thế mã có thể chạy nhanh và thực thi trong vòng vài mili giây. Chúng cho phép các nhà phát triển có thể chạy mã mà không cần lo lắng về cấu hình backend (máy chủ gốc của bạn).


Sự khác biệt giữa caching nội dung động & nén nội dung động là gì?

Một cách tiếp cận khác để tăng tốc các trang nội dung động là nén nội dung động được tạo ra bởi máy chủ gốc và phân phối nó nhanh và hiệu quả nhất có thể.

Với nén nội dung động, nội dung sẽ vẫn lấy từ máy chủ gốc thay vì cache, nhưng các file HTML được tạo ra và giảm thiểu đáng kể kích cỡ vì thế chúng có thể đến được thiết bị của khách hàng nhanh hơn.

Railgun là ví dụ về sản phẩm có thể nén nội dung động, và cải thiện hiệu suất.

Cách sử dụng Edge Site Includes (ESI) để tăng tốc các trang web động?

Thường thì phần lớn nội dung trên các trang web động vẫn nhất quán cho phần lớn người dùng, chỉ một vài thành phần trên trang là động. Điều này có nghĩa là phần lớn các đoạn mã HTML là trùng lặp trong các bản sao động của trang. Để giải quyết vấn đề không hiệu quả này, một số công ty làm việc cùng nhau để phát triển Edge Side Includes (ESI), một ngôn ngữ đánh dấu chỉ rõ đâu là nội dung động trên trang (ESI được sử dụng trên một số CDN, nhưng nó hiện vẫn chưa được chấp thuận từ W3C, tổ chức chịu trách nhiệm đưa ra các tiêu chuẩn về web).

Nội dung với các thẻ ESI sẽ được tìm nạp từ đâu đó (ví dụ máy chủ gốc), trong khi phần nội dung còn lại của trang có thể được cache. Nếu chỉ một số trang được tạo động và phần còn lại đã được cache, trang web sẽ tải nhanh hơn nhiều nếu toàn bộ trang phải tạo lại cho từng người dùng. ESI có thể kết hợp với Cloudflare Worker để làm cho quá trình này thậm chí còn hiệu quả hơn nữa.

(Dịch từ bài viết Caching Static and Dynamic Content | How Does It Work? của Cloudflare)

Viết một bình luận