Cách Lưu Trữ Bộ Nhớ Đệm Cho OG Images
Lưu trữ bộ nhớ đệm cho OG images nghĩa là phục vụ một bản xem trước xã hội đã được tạo trước đó từ CDN thay vì kết xuất lại nó mỗi lần chia sẻ. FastOG lưu trữ các hình ảnh giống hệt nhau tại biên (edge) trong một năm — cùng một URL sẽ trả về PNG đã được lưu trữ mà không tính vào hạn mức của bạn và với độ trễ gần như bằng không, vì vậy hầu hết lưu lượng OG của một trang web không bao giờ chạm đến bộ kết xuất.
Vì sao bộ nhớ đệm (caching) lại quan trọng
Mỗi lần chia sẻ lên mạng xã hội sẽ kích hoạt một lượt tìm nạp (fetch) từ trình thu thập dữ liệu (crawler) của nền tảng. Nếu mỗi lượt chia sẻ đều phải kết xuất (render) lại, bạn sẽ tiêu tốn hạn mức (quota) và độ trễ (latency) cho những nội dung giống hệt nhau. Bộ nhớ đệm mạnh mẽ — khóa theo nội dung của hình ảnh — biến "mỗi lượt chia sẻ tính 1 lần kết xuất" thành "lượt chia sẻ đầu tiên tính 1 lần kết xuất, mọi lượt chia sẻ sau đều miễn phí."
Mô hình khóa theo nội dung giúp hệ thống hoạt động
FastOG sử dụng URL ký theo nội dung: URL là một hàm thuần túy của các tham số. Tiêu đề + mẫu giống nhau → URL giống nhau. Điều đó có nghĩa là:
- Edge của FastOG giữ hình ảnh dưới URL đó.
- Cùng một nội dung được chia sẻ 10.000 lần → một lần render, một lần tính quota, 9.999 lần truy cập bộ nhớ đệm.
- Thay đổi nội dung → URL khác → một lần render mới.
GET /api/v1/og?title=Hello&template=default&key=...&s=... → render (1 quota count), then
GET /api/v1/og?title=Hello&template=default&key=...&s=... → cached (0 counts, instant)
GET /api/v1/og?title=Changed&template=default&key=...&s=... → render (1 quota count)
Tiêu đề bộ nhớ đệm của FastOG
FastOG trả về Cache-Control: public, max-age=31536000, immutable (một năm) cho các hình ảnh đã được kết xuất. Một ảnh bìa
được phục vụ từ biên của FastOG theo hai tầng: bộ nhớ đệm kết xuất phía trước fastog.com, và một kho lưu trữ đối tượng bền vững phía sau nó. Các yêu cầu lặp lại được trả lời mà không cần kết xuất lại, và X-FastOG-Worker-Cache trong
phản hồi cho biết tầng nào đã trả lời (HIT, R2, MISS).
Vì bản sao bền vững không phụ thuộc vào bộ kết xuất, các ảnh bìa đã được tải ít nhất một lần vẫn tiếp tục được phục vụ trong khi dịch vụ kết xuất của FastOG tạm thời không khả dụng — một sự cố ngừng hoạt động không làm trống một bản xem trước đã được tạo ra trước đó. Một ảnh bìa chưa từng được kết xuất trước đây là trường hợp duy nhất cần đến bộ kết xuất, và trong trường hợp đó FastOG trả về một hình ảnh thay vì một lỗi:
| Tình huống | Trình thu thập dữ liệu nhận được gì |
|---|---|
| Ảnh bìa đã được kết xuất | ảnh bìa, từ biên hoặc từ kho lưu trữ bền vững |
| Chưa từng kết xuất, dịch vụ kết xuất hoạt động | ảnh bìa, được kết xuất theo yêu cầu |
| Chưa từng kết xuất, dịch vụ kết xuất tạm thời ngừng | hình ảnh của chính trang được mang trong URL (ảnh sản phẩm của bạn), hoặc một thẻ trung lập — không bao giờ là một trang lỗi |
Nếu bản thân yêu cầu không hợp lệ (chữ ký bị giả mạo, thiếu title), bạn vẫn nhận được mã 4xx tương ứng.
Thay đổi hình ảnh đã xuất bản
| Bạn đã thay đổi | Việc cần làm |
|---|---|
| Nội dung (tiêu đề, giá, ảnh) | không cần làm gì: nội dung nằm trong URL, nên nội dung mới sẽ tạo URL mới và hiển thị mới hoàn toàn |
| Template hoặc một giá trị mặc định khi render | tăng phiên bản cache-bust (FASTOG_CACHE_BUST) để mọi URL đều có tham số v mới |
| Bạn cần render lại cùng một URL | yêu cầu hỗ trợ xóa bộ nhớ đệm cho đúng URL đó — tính năng xóa theo URL chính xác không được công khai dưới dạng endpoint |
Các liên kết đã được chia sẻ vẫn hoạt động bình thường và vẫn hiển thị đúng hình ảnh đã cam kết, trừ khi bạn xóa bộ nhớ đệm của đúng URL đó.
Tự lưu bộ nhớ đệm cho og:image của bạn (tự lưu trữ)
Nếu bạn tự lưu trữ hình ảnh thay vì sử dụng bộ nhớ đệm của FastOG, hãy áp dụng các quy tắc tương tự:
| Bước | Chi tiết |
|---|---|
| Khóa bộ nhớ đệm = hàm băm nội dung | Lưu theo hàm băm của dữ liệu, không phải tên tệp có thể thay đổi |
| TTL dài | max-age=31536000, immutable cho nội dung ổn định |
| URL có phiên bản | Thêm hàm băm/phiên bản khi nội dung thay đổi |
| CDN phía trước | Để CDN hấp thụ các yêu cầu lặp lại |
Câu hỏi thường gặp
Chia sẻ lặp lại có thực sự tốn 0 lượt render không?
Có. Các URL giống hệt nhau sẽ được phục vụ từ bộ nhớ đệm biên (edge cache) và không bao giờ đến trình render — không tiêu tốn hạn mức (quota) nào.
FastOG lưu trữ ảnh trong bộ nhớ đệm bao lâu?
Một năm (immutable). Rất lâu sau lần render đầu tiên, thẻ chia sẻ sẽ được phục vụ từ bộ nhớ đệm.
Nếu tôi muốn ảnh cập nhật (ví dụ: giá trực tiếp) thì sao?
Thay đổi một tham số (giá) → URL mới → render mới. Nội dung ổn định vẫn được lưu trong bộ nhớ đệm; nội dung động sẽ cập nhật khi bạn muốn.