File tree Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -211,6 +211,33 @@ def test_adds_surrogate_control(self):
211
211
),
212
212
}
213
213
214
+ def test_override_ttl_on_response (self ):
215
+ request = pretend .stub ()
216
+ response = pretend .stub (headers = {}, override_ttl = 6969 )
217
+
218
+ cacher = fastly .FastlyCache (
219
+ api_endpoint = None ,
220
+ api_connect_via = None ,
221
+ api_key = None ,
222
+ service_id = None ,
223
+ purger = None ,
224
+ )
225
+ cacher .cache (
226
+ ["abc" , "defg" ],
227
+ request ,
228
+ response ,
229
+ seconds = 9123 ,
230
+ stale_while_revalidate = 4567 ,
231
+ stale_if_error = 2276 ,
232
+ )
233
+
234
+ assert response .headers == {
235
+ "Surrogate-Key" : "abc defg" ,
236
+ "Surrogate-Control" : (
237
+ "max-age=6969, stale-while-revalidate=4567, stale-if-error=2276"
238
+ ),
239
+ }
240
+
214
241
def test_multiple_calls_to_cache_dont_overwrite_surrogate_keys (self ):
215
242
request = pretend .stub ()
216
243
response = pretend .stub (headers = {})
Original file line number Diff line number Diff line change @@ -78,6 +78,7 @@ def simple_index(request):
78
78
# to return the correct content types.
79
79
request .response .content_type = _select_content_type (request )
80
80
if request .response .content_type == MIME_PYPI_SIMPLE_V1_JSON :
81
+ request .response .override_ttl = 30 * 60 # 30 minutes
81
82
request .override_renderer = "json"
82
83
83
84
# Apply CORS headers.
Original file line number Diff line number Diff line change @@ -77,14 +77,21 @@ def cache(
77
77
stale_while_revalidate = None ,
78
78
stale_if_error = None ,
79
79
):
80
+ override_ttl = None
81
+ if hasattr (response , "override_ttl" ):
82
+ override_ttl = response .override_ttl
83
+
80
84
existing_keys = set (response .headers .get ("Surrogate-Key" , "" ).split ())
81
85
82
86
response .headers ["Surrogate-Key" ] = " " .join (sorted (set (keys ) | existing_keys ))
83
87
84
88
values = []
85
89
86
90
if seconds is not None :
87
- values .append (f"max-age={ seconds } " )
91
+ if override_ttl is not None :
92
+ values .append (f"max-age={ override_ttl } " )
93
+ else :
94
+ values .append (f"max-age={ seconds } " )
88
95
89
96
if stale_while_revalidate is not None :
90
97
values .append (f"stale-while-revalidate={ stale_while_revalidate } " )
You can’t perform that action at this time.
0 commit comments