के लिए GAE पर गतिशील मेरी GAE ऐप्लिकेशन में है मैं app.yaml में निम्नलिखित हैंडलर है:कैशिंग जो वास्तव में अजगर
- url: /lang/strings.js
script: js_lang.py
तो /lang/strings.js
के लिए एक कॉल वास्तव में js_lang करने के लिए नक्शे होगा .py अनुरोध हैंडलर जो application/javascript
के रूप में प्रतिक्रिया को पॉप्युलेट करता है। मैं इस प्रतिक्रिया को ब्राउजर में कैश करना चाहता हूं ताकि अनुरोध हैंडलर को केवल थोड़ी देर में कॉल किया जा सके (उदाहरण के लिए जब मैं ऐप का नया संस्करण तैनात करता हूं तो /lang/strings.js?v=xxxx
आयात करके कैश को "अमान्य" कर देता है।
सामान्य स्थैतिक सामग्री, वहाँ default_expiration
तत्व है, जो बहुत आसान है और इस तरह http प्रतिक्रिया हेडर में परिणाम:।
Expires: Fri, 01 Apr 2011 09:54:56 GMT
Cache-Control: public, max-age=600
ठीक है, सवाल: वहाँ एक आसान तरीका मुझे इस जैसे हेडर वापस जाने के लिए के लिए है, उन्हें स्पष्ट रूप से सेट किए बिना? वैकल्पिक रूप से, क्या वहां एक कोड स्निपेट है जो कुछ बुनियादी मानकों को स्वीकार करता है जैसे कि "दिन" और अपेक्षित http-headers उत्पन्न करता है?
संपादित करें 12 अप्रैल 2011
मैं बस दो हेडर 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 आक्रामक रूप से संभव – balpha
धन्यवाद बाल्फा - मैं शायद स्पष्ट रूप से आक्रामक कैशिंग हेडर सेटिंग को समाप्त कर दूंगा। लेकिन यह देखने के लिए कि क्या किसी ने इसे हल कर लिया है या नहीं, या अगर कुछ यम अनुरोध हैंडलर सेटिंग मैंने अनदेखा किया है। –