Quay trở lại để trả lời câu hỏi của riêng tôi, vấn đề chính ở đây là làm thế nào để tránh mọi thứ luôn hết hạn cùng một lúc. Nếu điều đó được cho phép xảy ra, hệ thống sẽ hoạt động chậm lại và bị tắc nghẽn trong khi nó lại điền vào bộ đệm.
Hầu hết thời gian, đây thực sự không phải là một vấn đề trong thực tế. Theo thời gian, tất cả các thành phần có xu hướng trôi theo thời gian chúng sắp hết hạn. Nếu có nhiều thành phần được xây dựng lại cùng một lúc, đó là mùi mã bởi vì chúng có thể được lưu trữ cùng nhau dưới dạng một thành phần (ví dụ: nếu bạn có một tiêu đề, phần thân và chân trang duy nhất được lưu riêng biệt, có lẽ bạn có thể chỉ cần lưu trữ chính trang đó).
Chắc chắn sẽ có lúc nhiều thứ cần được lưu trữ cùng một lúc, ví dụ như sau khi khởi động một hệ thống, nếu chúng ta đã xóa toàn bộ bộ đệm hoặc xoay các phím bộ đệm. Trong trường hợp này, nó thường không tệ lắm vì các thành phần nhanh chóng lấp đầy và hết hạn sau đó sẽ bị tách ra.
Trong phạm vi đây là một vấn đề, có một vài giải pháp:
- Chỉ cần chọn thời lượng hết hạn bộ nhớ cache ngẫu nhiên trong phạm vi thay vì thời lượng cố định, ví dụ: số nguyên ngẫu nhiên trong khoảng từ 15 đến 90 phút thay vì 60 phút.
- Cho phép phản hồi cũ. Chỉ vì một mục bộ đệm đã hết hạn, không có nghĩa là bạn không thể sử dụng nó nếu nó vẫn còn đó. Tùy thuộc vào nhu cầu kinh doanh, có thể chấp nhận sử dụng nó nếu có vấn đề về hiệu suất lấy phiên bản gốc sau khi hết hạn. Trong HTTP, đây là mục đích của "phải xác nhận lại" (nếu đúng, điều đó có nghĩa là không sử dụng phiên bản được lưu trong bộ nhớ cache sau khi hết hạn).