@@ -54,30 +54,62 @@ Then, optimize Varnish so that it only parses the Response contents when there
5454is at least one ESI tag by checking the ``Surrogate-Control `` header that
5555Symfony adds automatically:
5656
57- .. code -block ::  text 
57+ .. configuration -block ::
5858
59-     sub vcl_fetch { 
60-         /* 
61-         Check for ESI acknowledgement 
62-         and remove Surrogate-Control header 
63-         */ 
64-         if (beresp.http.Surrogate-Control ~ "ESI/1.0") { 
65-             unset beresp.http.Surrogate-Control; 
59+     .. code-block :: varnish4 
6660
67-             // For Varnish >= 3.0 
68-             set beresp.do_esi = true; 
69-             // For Varnish < 3.0 
70-             // esi; 
61+          /* (https://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html#req-not-available-in-vcl-backend-response) */ 
62+         sub vcl_backend_response { 
63+             // Check for ESI acknowledgement and remove Surrogate-Control header 
64+             if (beresp.http.Surrogate-Control ~ "ESI/1.0") { 
65+                 unset beresp.http.Surrogate-Control; 
66+                 set beresp.do_esi = true; 
67+             } 
68+             /* By default Varnish ignores Pragma: nocache 
69+             (https://www.varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html#cache-control) 
70+             so in order avoid caching it has to be done explicitly */ 
71+             if (beresp.http.Pragma ~ "no-cache") { 
72+                 // https://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html#hit-for-pass-objects-are-created-using-beresp-uncacheable 
73+                 set beresp.uncacheable = true; 
74+                 set beresp.ttl = 120s; 
75+                 return (deliver); 
76+             } 
7177        } 
72-         /* By default Varnish ignores Cache-Control: nocache 
73-         (https://www.varnish-cache.org/docs/3.0/tutorial/increasing_your_hitrate.html#cache-control), 
74-         so in order avoid caching it has to be done explicitly */ 
75-         if (beresp.http.Pragma ~ "no-cache" || 
76-              beresp.http.Cache-Control ~ "no-cache" || 
77-              beresp.http.Cache-Control ~ "private") { 
78-             return (hit_for_pass); 
78+ 
79+      .. code-block :: varnish3 
80+ 
81+         sub vcl_fetch { 
82+             // Check for ESI acknowledgement and remove Surrogate-Control header 
83+             if (beresp.http.Surrogate-Control ~ "ESI/1.0") { 
84+                 unset beresp.http.Surrogate-Control; 
85+                 set beresp.do_esi = true; 
86+             } 
87+             /* By default Varnish ignores Cache-Control: nocache 
88+             (https://www.varnish-cache.org/docs/3.0/tutorial/increasing_your_hitrate.html#cache-control), 
89+             so in order avoid caching it has to be done explicitly */ 
90+             if (beresp.http.Pragma ~ "no-cache" || 
91+                 beresp.http.Cache-Control ~ "no-cache" || 
92+                 beresp.http.Cache-Control ~ "private") { 
93+                 return (hit_for_pass); 
94+             } 
95+         } 
96+ 
97+      .. code-block :: varnish2 
98+ 
99+         sub vcl_fetch { 
100+             // Check for ESI acknowledgement and remove Surrogate-Control header 
101+             if (beresp.http.Surrogate-Control ~ "ESI/1.0") { 
102+                 unset beresp.http.Surrogate-Control; 
103+                 esi; 
104+             } 
105+             /* By default Varnish ignores Cache-Control: nocache 
106+             so in order avoid caching it has to be done explicitly */ 
107+             if (beresp.http.Pragma ~ "no-cache" || 
108+                 beresp.http.Cache-Control ~ "no-cache" || 
109+                 beresp.http.Cache-Control ~ "private") { 
110+                 return (hit_for_pass); 
111+             } 
79112        } 
80-     } 
81113
82114 .. caution ::
83115
0 commit comments