Varnish.4.x没有缓存范围请求

问题描述 投票:0回答:2

我们正在努力让Varnish缓存范围请求。我们正在使用Varnish 4.0。

我们有以下配置

或4.0;

import std;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "194.142.x.x";
    .port = "8008";
}

sub vcl_recv {

if (req.url ~ "(?i)\.(png|avi|mkv|mp4)(\?[a-z0-9]+)?$") {
    unset req.http.Cookie;
  }
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.

  set req.http.host = regsub(req.http.host, "v\.","\rms\.");

  std.log("REWRITED TO"+req.http.host+"  "+req.url);



}

sub vcl_backend_response {
    # Happens after we have read the response headers from the backend.
    #
    # Here you clean the response headers, removing silly Set-Cookie headers
    # and other mistakes your backend does.
}

sub vcl_deliver {
    # Happens when we have all the pieces we need, and are about to send the
    # response to the client.
    #
                                                               vcl 4.0;

import std;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "194.142.x.x";
    .port = "8008";
}

sub vcl_recv {

if (req.url ~ "(?i)\.(png|avi|mkv|mp4)(\?[a-z0-9]+)?$") {
    unset req.http.Cookie;
  }
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.

  set req.http.host = regsub(req.http.host, "v\.","\rms\.");

  std.log("REWRITED TO"+req.http.host+"  "+req.url);



}

sub vcl_backend_response {
    # Happens after we have read the response headers from the backend.
    #
    # Here you clean the response headers, removing silly Set-Cookie headers
    # and other mistakes your backend does.
}

sub vcl_deliver {
    # Happens when we have all the pieces we need, and are about to send the
    # response to the client.
    #

范围请求如何花费太长时间才能提供服务,因此我们觉得它没有被缓存,因为原始服务器被命中。

caching cloud reverse-proxy varnish
2个回答
1
投票

你能解决这个问题吗?

我很确定块配置:

if (req.url ~ "(?i)\.(png|avi|mkv|mp4)(\?[a-z0-9]+)?$") {
    unset req.http.Cookie;
  }
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.

  set req.http.host = regsub(req.http.host, "v\.","\rms\.");
  std.log("REWRITED TO"+req.http.host+"  "+req.url);

处于错误的位置,需要在vcl_backend_response中而不是在vcl_recv中


0
投票

Caching partial objects with varnish 4.0

sub vcl_recv {
    if (req.http.Range ~ "bytes=") {
        set req.http.x-range = req.http.Range;
    }
}

sub vcl_hash {
    if (req.http.x-range ~ "bytes=") {
            hash_data(req.http.x-range);
            unset req.http.Range;
    }
}

sub vcl_backend_fetch {
    if (bereq.http.x-range) {
        set bereq.http.Range = bereq.http.x-range;
    }
}

sub vcl_backend_response {
    if (bereq.http.x-range ~ "bytes=" && beresp.status == 206) {
        set beresp.ttl = 10m;
        set beresp.http.CR = beresp.http.content-range;
    }
}

sub vcl_deliver {
    if (resp.http.CR) {
        set resp.http.Content-Range = resp.http.CR;
        unset resp.http.CR;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.