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):
211211 ),
212212 }
213213
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+
214241 def test_multiple_calls_to_cache_dont_overwrite_surrogate_keys (self ):
215242 request = pretend .stub ()
216243 response = pretend .stub (headers = {})
Original file line number Diff line number Diff line change @@ -78,6 +78,7 @@ def simple_index(request):
7878 # to return the correct content types.
7979 request .response .content_type = _select_content_type (request )
8080 if request .response .content_type == MIME_PYPI_SIMPLE_V1_JSON :
81+ request .response .override_ttl = 30 * 60 # 30 minutes
8182 request .override_renderer = "json"
8283
8384 # Apply CORS headers.
Original file line number Diff line number Diff line change @@ -77,14 +77,21 @@ def cache(
7777 stale_while_revalidate = None ,
7878 stale_if_error = None ,
7979 ):
80+ override_ttl = None
81+ if hasattr (response , "override_ttl" ):
82+ override_ttl = response .override_ttl
83+
8084 existing_keys = set (response .headers .get ("Surrogate-Key" , "" ).split ())
8185
8286 response .headers ["Surrogate-Key" ] = " " .join (sorted (set (keys ) | existing_keys ))
8387
8488 values = []
8589
8690 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 } " )
8895
8996 if stale_while_revalidate is not None :
9097 values .append (f"stale-while-revalidate={ stale_while_revalidate } " )
You can’t perform that action at this time.
0 commit comments