• Nils Goroll's avatar
    Support ESI with clustering · c8464fe4
    Nils Goroll authored
    Previously, we failed to support ESI correctly: The fetch node would
    run ESI on the client side, such that the delivery node would receive
    an already ESI processed object.
    
    The concept of this change is:
    
    Custom code on the fetch node decides on beresp.do_esi. vcl_deliver on
    the fetch node sets the "E" bit of a new flags header if obj.can_esi
    is true, which reflects beresp.do_esi and disables ESI processing.
    
    When the delivery node receives an object from the fetch nodes, it
    sets beresp.do_esi based on the flags header.
    
    Ultimately, beresp.do_esi == obj.can_esi is identical on the fetch and
    delivery nodes.
    c8464fe4
self_shard_tmpl.go 10.1 KB