1

多くのお客様のフロントエンドとして Varnish Cache を使用しており、バックエンドが故障している間は古いコンテンツを適切にサーバーします。

現在、バックエンドに障害が発生しており、猶予期間を延長したいと考えています (問題が発生している間)。それは可能なシナリオですか? ドキュメントを掘り下げてみましたが、何も見つかりませんでした。

ワニス 4

4

1 に答える 1

1

病気のバックエンドが一般的に使用されるキャッシュである場合、Varnish Cache 4.x で古いコンテンツを提供します。vcl_hit独自のサブルーチンを実装するだけです。アイデアは、高い猶予値 (たとえば 24 時間) を使用してコンテンツをキャッシュすることですが、バックエンドが正常な場合は猶予を短い時間枠 (たとえば 10 秒) に制限します。

sub vcl_hit {
    if (obj.ttl >= 0s) {
        # Normal hit.
        return (deliver);
    }

    # We have no fresh fish. Lets look at the stale ones.
    if (std.healthy(req.backend_hint)) {
        # Backend is healthy. Limit age to 10s.
        if (obj.ttl + 10s > 0s) {
            return (deliver);
        } else {
            # No candidate for grace. Fetch a fresh object.
            return(fetch);
        }
    } else {
        # Backend is sick. Use full grace.
        if (obj.ttl + obj.grace > 0s) {
            return (deliver);
        } else {
            # No graced object.
            return (fetch);
        }
    }
}

詳細については、次を確認してください。

于 2016-07-28T06:45:50.107 に答える