實際動態在我的GAE應用程序我有app.yaml中的以下處理:緩存的(假的)靜態內容是關於GAE的Python
- url: /lang/strings.js
script: js_lang.py
所以要/lang/strings.js
通話將實際映射到js_lang .py請求處理程序將響應填充爲application/javascript
。我希望將此響應緩存在瀏覽器中,以便請求處理程序僅在一段時間內被調用一次(例如,當我部署應用程序的新版本時,通過導入/lang/strings.js?v=xxxx
使「緩存」無效)
For正常的靜態內容,有default_expiration
元素,這是非常方便的,並導致這樣的HTTP響應頭:
Expires: Fri, 01 Apr 2011 09:54:56 GMT
Cache-Control: public, max-age=600
好了,這樣的問題:是有我返回頭像這樣的一個簡單的方法,而不必明確地設置它們呢?或者,是否有代碼片段可以接受幾個基本參數,如「days」併產生期望的http-header?
編輯2011年4月12日
我非常地解決了這個通過簡單設置兩個頭Expires
和Cache-Control
這樣的:
import datetime
thirty_days_in_seconds = 4320000
expires_date = datetime.datetime.now() + datetime.timedelta(days=30)
HTTP_HEADER_FORMAT = "%a, %d %b %Y %H:%M:00 GMT"
self.response.headers["Expires"] = expires_date.strftime(HTTP_HEADER_FORMAT)
self.response.headers["Cache-Control"] = "public, max-age=%s" % thirty_days_in_seconds
相關:http://stackoverflow.com/questions/2426103/asking-browsers-to-cache-as-a ggressively儘可能 – balpha 2011-04-01 11:32:43
謝謝balpha - 我可能會最終明確設置激進的緩存標題。但發佈這個看看是否有人已經解決了這個問題,或者如果有一些yaml請求處理程序設置我忽略了。 – 2011-04-01 11:41:58