2013-05-29 31 views
9

Tôi không thể tìm ra, cho cuộc sống của tôi, làm thế nào để có được véc ni để bỏ qua bộ nhớ đệm của 500 lỗi máy chủ nội bộ. Về cơ bản, nếu ai đó truy cập véc ni và được trả về một lỗi máy chủ nội bộ 500, tôi muốn véc ni để không cache trang đó (thiết lập thời gian ttl/ân hạn 0s?). Tôi đang sử dụng véc ni 3.0.3 và đây là VCL của tôi. Theo mặc định, tôi muốn lưu các trang trong 30 ngày.Làm thế nào để không bộ nhớ cache 500 lỗi máy chủ nội bộ trong véc ni

sub vcl_fetch { 
    # Set 30-day TTL 
    set beresp.ttl = 2592000 s; 
    set beresp.grace = 15d; /* The max amount of time to keep object in cache */ 

    if (beresp.status == 301 || beresp.status == 302) { 
      return (hit_for_pass); 
    } 

    # Serve pages from the cache should we get a sudden error and re-check in one minute 
    if (beresp.status >= 500) { 
     set beresp.grace = 1s; 
     set beresp.ttl = 1s; 
     return (hit_for_pass); 
    } 

    # Unset the "etag" header (suggested) 
    unset beresp.http.etag; 

    return(deliver); 
} 

Vì vậy, bằng tiếng Anh: nếu 500 máy chủ nội bộ được trả về ... X-CACHE sẽ hiển thị MISS. Khi tôi làm mới trang, nếu nó vẫn còn 500 máy chủ nội bộ, sau đó nó một lần nữa sẽ hiển thị một MISS. Nếu trang được phân phối thành công, trang sẽ hiển thị HIT.

Trả lời

14

Theo mặc định Varnish sẽ chỉ bộ nhớ cache các mã trạng thái như sau [1]:

  • 200: OK
  • 203: Non-Authoritative Information
  • 300: Có nhiều lựa chọn
  • 301: Moved Permanently
  • 302: Đã di chuyển tạm thời
  • 307: Chuyển hướng tạm thời
  • 410: Cuốn
  • 404: Not Found

Lưu ý rằng lần đầu tiên trang được gửi thành công bạn vẫn sẽ nhận được một Miss

[1] http://book.varnish-software.com/3.0/VCL_Basics.html#the-initial-value-of-beresp-ttl

+1

Hm ... Tôi làm không hiểu tại sao Varnish sẽ cache lỗi 404. Chúng tôi đã bị đốt cháy bởi điều này - tài nguyên được sao lưu nhưng người dùng không nhìn thấy nó. – Leonid

+2

@Leonid, 404 thường được lưu trữ bởi proxy ngược vì nó không chỉ ra một máy chủ ngược tuyến bị hỏng: thay vì yêu cầu được nhận và xử lý đúng, nhưng tài nguyên được yêu cầu không tồn tại. – mickeybob

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