2012-01-25 29 views
7

Tôi hy vọng một người nào đó có thể tư vấn về phương pháp thích hợp để nhận véc-ni để gửi tiêu đề kiểm soát bộ nhớ cache. Hiện tại, cấu hình của tôi đang gửi "Cache-Control: no-cache" cho khách hàng.Làm thế nào để đặt tiêu đề kiểm soát bộ nhớ cache Varnish

Cảm ơn trước cho bất cứ ai có thể có thể giúp ...

+0

Nó có thể giúp đỡ nếu bạn giải thích những gì bạn muốn. Cấu hình nào (véc ni hoặc mặt sau của bạn) đang gửi tiêu đề không có bộ nhớ cache? Bạn có thể ghi đè lên các tiêu đề này trong Varnish, nhưng cho dù điều này là 'chính xác' phụ thuộc vào ngữ nghĩa của câu trả lời của bạn (chúng có thể tái sử dụng, trên các máy khách, trong bao lâu, vv). – ivy

+0

@ivy, Cảm ơn bạn đã trả lời. Những gì tôi đang cố gắng để đạt được là có ** Varnish ** gửi tiêu đề kiểm soát bộ nhớ cache mà tôi tự xác định, bất kể những gì back-end gửi đến Varnish. –

Trả lời

11

bạn back-end đang gửi "Cache-Control: no-cache" để Varnish trong đó hàm ý hai điều:

  • Véc ni sẽ không lưu trữ phản hồi trong bộ nhớ cache (vì vậy tra cứu tiếp theo sẽ không thành công)
  • Khách hàng của bạn (trình duyệt và proxy trung gian) sẽ không lưu lại bộ nhớ cache (và yêu cầu nhiều lần).

Giải pháp rất đơn giản: xóa tiêu đề kiểm soát bộ nhớ cache sau khi tìm nạp phản hồi từ phía sau (và trước khi lưu chúng trong bộ đệm).

Trong file vcl bạn làm:

sub vcl_fetch { 
    remove beresp.http.Cache-Control; 
    set beresp.http.Cache-Control = "public"; 
} 

Bạn có thể chọn để chỉ làm điều này cho các url nhất định (bọc nó trong (if req.url ~ "") logic) và làm công cụ cách nâng cao hơn.

+1

Khi Varnish 4.0 'vcl_fetch' được thay thế bằng' vcl_backend_response' –

3

Varnish bỏ qua Cache-Control: nocache theo tài liệu. Đây là bằng chứng xác nhận rằng:

http://drupal.org/node/1418908

Để có được kết quả đó, bạn nên phát hiện tiêu đề Cache-Control. nocache. từ chương trình phụ trợ của bạn và sau đó làm mất hiệu lực bộ nhớ cache, đặt phản hồi phụ trợ thành không thể lưu vào bộ nhớ cache hoặc phát hành độ tuổi tối đa: 0 trong tiêu đề khác (tôi quên tên ngay bây giờ).

+0

Vấn đề này hiện đã bị đóng. Tôi nghĩ rằng tấm áp phích nhận ra anh ta đã phạm sai lầm. –

0

[ivy] có lời khuyên tốt và/nhưng nó hơi phức tạp một chút khi bạn cố tuân theo ý định của máy chủ cho bộ nhớ đệm của người dùng cuối (trình duyệt). Tôi thấy this resource là hữu ích trong việc tìm hiểu một cách để cấu hình Varnish để giữ được một bộ nhớ cache dài hơn một trình duyệt được hướng dẫn để ...

https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching

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