Keys_zone = myCache: 8m có nghĩa là gì?
Như tài liệu đã nói , nginx sẽ giữ tất cả các khóa hoạt động và thông tin về dữ liệu được lưu trữ trong một vùng bộ nhớ dùng chung, có cấu hình name
và size
được cấu hình bởi tham số Keys_zone. Như một vấn đề đầy đủ, hãy chia nhỏ từng phần
/var/cache/nginx
là nơi lưu trữ bộ đệm thực tế. Trong thư mục, tệp bộ đệm là tệp nhị phân nhưng bạn có thể dễ dàng phát hiện thẻ html bên trong nó.
levels=1:2
là tham số cấp độ đặt số lượng cấp độ thư mục con trong bộ đệm.
keys_zone=myCache:8m
đã xác định vùng bộ nhớ dùng chung có tên myCache với kích thước tối đa 8 MB. Nó chứa tất cả các khóa hoạt động và siêu dữ liệu của bộ đệm. Vì vậy, bất cứ khi nào nginx kiểm tra xem một trang có được lưu trong bộ nhớ cache hay không, nó sẽ hỏi vùng nhớ được chia sẻ trước, sau đó tìm vị trí của bộ đệm thực tế trong /var/cache/nginx
nếu bộ đệm tồn tại.
max_size
là kích thước tối đa của bộ đệm, ví dụ như kích thước tập tin trên /var/cache/nginx
.
inactive=1h
chỉ định bộ nhớ cache thời gian không hoạt động tối đa có thể được lưu trữ. Dữ liệu được lưu trong bộ nhớ cache không được truy cập trong thời gian được chỉ định bởi inactive
tham số sẽ bị xóa khỏi bộ đệm bất kể độ tươi của chúng.
Cách xác thực và xóa bộ đệm hoạt động
Lấy từ danh sách gửi thư nginx
Chỉ thị proxy_cache_valid chỉ định thời gian phản hồi sẽ được coi là hợp lệ (và sẽ được trả lại mà không có bất kỳ yêu cầu nào để phụ trợ). Sau thời gian này, phản hồi sẽ được coi là "cũ" và sẽ không được trả lại hoặc sẽ phụ thuộc vào cài đặt proxy_cache_use_stale .
Đối số không hoạt động của proxy_cache_path chỉ định thời gian phản hồi sẽ được lưu trong bộ đệm sau lần sử dụng cuối cùng. Lưu ý rằng ngay cả các phản hồi cũ sẽ được xem xét sử dụng gần đây nếu có yêu cầu đối với chúng.
Theo tôi hiểu, ở đây mã giả hoạt động như thế nào nginx
Khi có yêu cầu
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
Trong quá trình khác, trình quản lý bộ đệm thực hiện logic này
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
Điều gì xảy ra nếu proxy_cache_valid (12h) cao hơn giá trị không hoạt động được chỉ định (1h) trong proxy_cache_path?
Miễn là yêu cầu và truy cập vào bộ đệm cụ thể, đối tượng bộ đệm đó sẽ vẫn có hiệu lực cho đến 12h sau khi đối tượng đặt vào bộ đệm. Sau đó, bộ đệm được coi là không hợp lệ, vì vậy nginx sẽ tìm nạp từ phụ trợ và đặt lại bộ hẹn giờ hợp lệ. Nhưng nếu đối tượng không hoạt động (không được truy cập) hơn một giờ - ngay cả trong 12 giờ thời gian lưu trữ hợp lệ -, nginx sẽ xóa đối tượng đó vì inactive
tham số.
365d
và hợp lệ1d
thì nginx sẽ tìm nạp các yêu cầu trong bộ đệm mỗi ngày trong một năm ngay cả khi không ai thực hiện yêu cầu đó?