2011-01-25 26 views
6

Có thể nào đó để buộc phản hồi 200 (bộ nhớ cache) thay vì 304 không được sửa đổi cho tệp tĩnh không? Nếu vậy bạn có khả năng có thể tiết kiệm rất nhiều yêu cầu máy chủ và tăng tốc độ cân nhắc thời gian tải cho khách truy cập quay lại.Nginx - "buộc" phản hồi bộ nhớ cache 200 thay vì 304

Trả lời

1

Đặt chỉ thị expires trong Nginx tại các vị trí bạn lưu trữ tệp tĩnh của mình. Trình duyệt sẽ không bận tâm kiểm tra lại với máy chủ cho đến khi hết hạn thời gian. Tại thời điểm đó, máy chủ vẫn có thể gửi trả lời 304 nếu tệp tĩnh không thay đổi và thời gian hết hạn sẽ phải đạt được trước khi trình duyệt kiểm tra lại.

Nhân tiện, mã phản hồi 200 chỉ có nghĩa là tài nguyên được yêu cầu đang được trả lại. Nó không có gì để làm với bất kỳ tiêu đề bộ nhớ đệm được gửi với phản ứng HTTP hay không.

+0

Tôi có hết hạn thiết lập để 2 tuần, nhưng các công cụ dev của Google Chrome vẫn cho thấy 304 yêu cầu thay vì 200 mã. Nó có đưa ra thông tin sai lệch không? – ustun

4

Tôi đã tìm thấy Thời gian hết hạn không đặt đúng hành vi. Dưới đây là một đám cháy chắc chắn:

# Set cache 
expires 1M; 
add_header Pragma public; 
add_header Cache-Control "public"; 

này đi vào khối vị trí mong muốn của bạn ..

Tôi cũng nghĩ rằng có rất nhiều thông tin sai lệch trên mạng về vấn đề này .. Đó là 200 là bằng cách nào đó giống như 200 (bộ nhớ cache).

Từ sự hiểu biết của tôi:

200 - yêu cầu máy chủ - Chuyển OK 200 (cache) - OK - không yêu cầu máy chủ (từ bộ nhớ cache) 304 - yêu cầu máy chủ - không chuyển giao (không thay đổi)

200 (cache) như tôi hiểu nó KHÔNG làm cho một yêu cầu máy chủ nào cả.

0

200 không phải là phản hồi bộ nhớ cache; nó cho thấy sự thành công và nó đòi hỏi đáp ứng để chứa kết quả. 304 cho biết một nguồn tài nguyên chưa sửa đổi; đó là để nói rằng bạn đã có nó, vì vậy không có gì được trả lại. Vì vậy, những gì bạn đang đề xuất nên gây ra tất cả các giả mạo của 304 là 200 thất bại. Ngay cả khi nó không phải của bạn sẽ không lưu bất kỳ yêu cầu hoặc tốc độ bất cứ điều gì lên với 200 phản ứng giả mạo.

EDIT: 200 trong một số trường hợp có nghĩa là tài nguyên đã được lấy từ bộ nhớ cache với thành công ...

Các vấn đề liên quan