2011-04-01 13 views
10

के लिए 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 
+1

संबंधित: http://stackoverflow.com/questions/2426103/asking-browsers-to-cache-as-a आक्रामक रूप से संभव – balpha

+0

धन्यवाद बाल्फा - मैं शायद स्पष्ट रूप से आक्रामक कैशिंग हेडर सेटिंग को समाप्त कर दूंगा। लेकिन यह देखने के लिए कि क्या किसी ने इसे हल कर लिया है या नहीं, या अगर कुछ यम अनुरोध हैंडलर सेटिंग मैंने अनदेखा किया है। –

उत्तर

6

Nick द्वारा Static serving ब्लॉग पोस्ट पर एक नज़र डालें।

सब कुछ आप ठीक ढंग से हो और सही HTTP हेडर स्थापित करने के लिए Conditional request के बारे में और कैसे पता करने की जरूरत नहीं है:

  • HTTP अनुरोध हेडर (If-Modified-Since, If-None-Match)
  • HTTP प्रतिसाद निपटने हेडर से निपटने (Last-Modified , ETag)
+0

धन्यवाद। सबसे उपयोगी। –

संबंधित मुद्दे