2011-07-09 22 views
5

chúng tôi đang làm việc để giảm bớt một số lưu lượng truy cập 'vô nghĩa'.gửi bộ nhớ cache-kiểm soát/hết hạn/pragma với phản hồi 404 - hợp lệ/hiểu bởi các trình duyệt hiện đại?

nếu chúng tôi gửi tiêu đề kiểm soát bộ nhớ cache hợp lệ (a-la "do cache") với phản hồi 404, trình duyệt hiện đại có lưu vào bộ nhớ cache mà tài nguyên được yêu cầu không tồn tại không?

chúng tôi sử dụng trình xử lý 404 tùy chỉnh dựa trên php đã gửi không có tiêu đề bộ nhớ cache do tạo phiên, vì vậy chúng tôi đã xóa chúng. nhưng bây giờ đang tự hỏi liệu tài nguyên của chúng tôi có phải là CERTAIN không hợp lệ, chúng tôi có nên gửi tiêu đề bộ nhớ cache thích hợp không?

đây là những tài nguyên công khai được truy cập bởi cùng một uri bởi tất cả người dùng.

cảm ơn!

+1

Vui lòng đặt tên cho tiêu đề bộ nhớ cache mà bạn đã đặt và cách thực hiện. – hakre

Trả lời

10

Trình duyệt hiện đại có triển khai thực hiện HTTP Protocol lý tưởng gần với tiêu chuẩn, tương tự cho máy chủ proxy mà bạn nên tính đến nếu bạn muốn có ảnh hưởng đến lưu lượng truy cập người dùng và không cố ý. Dòng điện version is 1.1, một số trích đoạn:

10,4 Khách hàng Lỗi 4xx

Lớp 4xx của mã trạng thái được thiết kế đối với trường hợp trong đó các khách hàng dường như đã sai lầm. Ngoại trừ khi trả lời yêu cầu HEAD, máy chủ NÊN bao gồm một thực thể có chứa một lời giải thích về tình trạng lỗi, và cho dù đó là một tình trạng tạm thời hoặc vĩnh viễn. Các mã trạng thái này được áp dụng cho bất kỳ phương thức yêu cầu nào. Tác nhân người dùng NÊN hiển thị bất kỳ thực thể được bao gồm nào cho người dùng.

Nếu khách hàng đang gửi dữ liệu, việc triển khai máy chủ bằng TCP NÊN cẩn thận để đảm bảo rằng khách hàng xác nhận đã nhận (các) gói chứa phản hồi trước khi máy chủ đóng kết nối đầu vào. Nếu máy khách tiếp tục gửi dữ liệu đến máy chủ sau khi đóng, ngăn xếp TCP của máy chủ sẽ gửi gói đặt lại cho máy khách, có thể xóa bộ đệm đầu vào chưa được nhận trước của khách hàng trước khi ứng dụng HTTP có thể đọc và giải thích.

Cụ thể hơn cho 404:

10.4.5 404 Not Found

Các máy chủ đã không tìm thấy bất cứ điều gì phù hợp với các yêu cầu-URI. Không có dấu hiệu nào được đưa ra cho dù tình trạng này là tạm thời hay vĩnh viễn. Mã trạng thái 410 (Gone) NÊN được sử dụng nếu máy chủ biết, thông qua một số cơ cấu cấu hình nội bộ, rằng một tài nguyên cũ là vĩnh viễn không có sẵn và không có địa chỉ chuyển tiếp. Mã trạng thái này thường được sử dụng khi máy chủ không muốn tiết lộ chính xác lý do yêu cầu bị từ chối hoặc khi không có phản hồi nào khác được áp dụng.

Rất nhiều cho mã phản hồi 404.

Bạn hỏi:

bây giờ [chúng tôi] đang tự hỏi nếu cho nguồn lực Chúng tôi chắc chắn là không hợp lệ, chúng ta nên gửi tiêu đề bộ nhớ cache thích hợp?

Bạn chưa đưa ra bất kỳ tiêu đề bộ nhớ cache cụ thể nào mà bạn muốn sử dụng, do đó, hơi khó để trả lời câu hỏi của bạn. Lưu vào bộ nhớ cache là một phần của riêng nó trong đặc tả giao thức: 13 Caching in HTTP.

Nói chung sau đây nên được những gì bạn đang tìm kiếm, trích đoạn từ 13.1.1 Cache Correctness:

Một bộ nhớ cache đúng PHẢI đáp ứng một yêu cầu với các phản hồi nhiều nhất được cập nhật lên tổ chức bởi bộ nhớ cache đó là thích hợp để yêu cầu (xem phần 13.2.5, 13.2.6, và 13.12), đáp ứng một trong các điều kiện sau:

...

3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), 
    or error (4xx or 5xx) response message. 

Vì vậy, bạn có thể cache các thông điệp phản hồi 404 và báo hiệu chúng vào bộ đệm. Proxy và Máy khách nên xử lý nó.

+0

yea điều này thực sự làm cho rất nhiều ý nghĩa ... những gì chúng tôi sẽ kết thúc làm là a) nếu không có nếu-sửa đổi-kể từ tiêu đề, gửi tiêu đề bộ nhớ cache + trang 404 tùy chỉnh, b) nếu có nếu-sửa đổi-kể từ tiêu đề, gửi 304 không sửa đổi mã trạng thái w/o body. cảm ơn. –

+2

@ anonymous-one: Vâng, điều đó sẽ cung cấp cho bạn HEAD roundtrips cho tập lệnh php 404 mà không thực hiện bất kỳ sence vì nó vẫn sẽ được gọi. Nếu bạn thực sự chắc chắn rằng tài nguyên không hợp lệ, hãy cho phép lưu vào bộ nhớ cache trong nhiều ngày và không làm bất cứ điều gì như "nếu được sửa đổi kể từ". Chỉ cần để cho nó được lưu trữ đi. Nếu bạn có thể xác định người dùng tài nguyên đang thực sự tìm kiếm, hãy sử dụng 410 Gone hoặc 302 di chuyển với tiêu đề vị trí và vị trí mới trong nội dung để bạn có thể giữ liên kết trong công cụ tìm kiếm và tài nguyên bên ngoài. Hãy để bộ nhớ cache phản ứng đó trong nhiều ngày. – hakre

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