@@ -54,31 +54,62 @@ Then, optimize Varnish so that it only parses the Response contents when there
54
54
is at least one ESI tag by checking the ``Surrogate-Control `` header that
55
55
Symfony adds automatically:
56
56
57
- .. code -block :: text
57
+ .. configuration -block ::
58
58
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
66
60
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
+ }
71
77
}
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
+ }
79
95
}
80
- }
81
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
+ }
112
+ }
82
113
.. caution ::
83
114
84
115
Compression with ESI was not supported in Varnish until version 3.0
0 commit comments