Serve cached object without assembling ESI?
Danila Vershinin
ciapnz at gmail.com
Mon Sep 16 07:36:32 UTC 2019
Thank you very much.
Sent from my iPhone
> On 15 Sep 2019, at 09:28, Guillaume Quintard <guillaume at varnish-software.com> wrote:
>
> Hi Danila,
>
> Check "man vcl", specifically beresp.do_esi and resp.do_esi.
>
> From what I understand, you want to always enable the former, and only enable the latter conditionally. For example, the edges could add a header "varnish-edge-token" to their request to the primary varnish, and you could have that VCL there:
>
> sub vcl_deliver {
> if (req.http.varnish-edge-token == "MYTOKEN") {
> set resp.do_esi = false;
> }
> }
>
> Should be fairly straightforward.
>
> Cheers,
>
> --
> Guillaume Quintard
>
>
>> On Sun, Sep 15, 2019 at 12:19 AM Danila Vershinin <ciapnz at gmail.com> wrote:
>> Hi,
>>
>> I'm trying to understand whether it's feasible to build a CDN of Varnish instances, whose primary origin(backend) is a Varnish instance which processes an ESI-capable app.
>>
>> So basically:
>>
>> USA visitor -> Varnish USA -> Varnish primary -> THE APP with ESI blocks
>> RUS visitor -> Varnish RUS -> Varnish primary -> THE APP with ESI blocks
>> CAN -> Varnish primary -> THE APP with ESI blocks
>>
>> The APP emits HTML with ESI tags for different blocks, and sure enough, those have different cache policies.
>> If a request arrives to an edge Varnish, I want it to talk to the primary Varnish (so as to cache on the edge against a primary cache), but this "Varnish primary" serves the content with ESI already assembled. Thus there is no telling, how long we should cache that full page HTML on the edges.
>>
>> Q: Is there a magic way to instruct the primary Varnish to not do ESI processing on the content that was already cached ??
>> Meaning keep things as usual if request arrives directly to primary Varnish (ESI on), but receive non-assembled HTML (with esi tags inside) otherwise, so that edges can do assembling themselves, and thus cache things on the edge with proper TTLs for blocks.
>>
>> Or I just have to resort to completely disabling do_esi on the primary server? Which I could do, but that must mean that the primary Varnish cannot serve visitors directly (= loosing the edge location with lowest latency to nearby users).
>>
>> _______________________________________________
>> varnish-misc mailing list
>> varnish-misc at varnish-cache.org
>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20190916/2d4d4af3/attachment.html>
More information about the varnish-misc
mailing list