2011-11-18 16 views
7

यह देखते हुए कि हरोकू सीडर के पास वार्निश द्वारा प्रदान की गई http कैशिंग नहीं है, मैं Rack::Cache का उपयोग करना चाहता हूं। मुझे बताया गया है कि रेल 3.1.1 Rack::Cache सक्रिय है डिफ़ॉल्ट रूप से, मैं सिर्फ विन्यास में है करने के लिए सुनिश्चित करने की आवश्यकता:रेल 3.1 और एचटीपी पेज कैशिंग

config.action_controller.perform_caching = true 

और मैं इस प्रयोग मैं कर रहा हूँ के लिए, एक कैश की दुकान लेने के लिए की जरूरत है का उपयोग करते हुए:

response.header['Cache-Control'] = 'public, max-age=300' 
response.header['Expires'] = CGI.rfc1123_date(Time.now + 300) 

इस्तेमाल किया इस कोड Varni के साथ ठीक काम करने के लिए:

config.cache_store = :memory_store 

पेज की कार्रवाई में मैं कैश करने के लिए मैं निम्नलिखित लाइनों को जोड़ दिया है चाहता हूँ sh, पहला अनुरोध 200 लौटाएगा और बाद में (5 मिनट के लिए) 304 लौटाएगा।

यह रेल 3.1 और हेरोकू सीडर स्टैक के साथ नहीं होता है। मुझे प्रतिक्रिया में उन शीर्षलेख मिलते हैं लेकिन बाद के अनुरोध 304 के बजाय 200 लौटाते हैं।

मैं क्या गलत कर रहा हूं? धन्यवाद।

उत्तर

11

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

इस बात को ध्यान में रखते हुए, रैक :: कैश आपके शीर्षकों का सम्मान करेगा और कैश की गई सामग्री की सेवा करेगा।

हालांकि, चूंकि अनुरोध वास्तव में रेल ऐप में http परत से पहले जा रहा है, इसलिए प्रतिक्रिया हमेशा 200 होगी क्योंकि कैश http परत पर नहीं होता है। तब

<%= Time.now.to_i %>

, पेज में कई बार फिर से लोड करके आप ध्यान देंगे टाइमस्टैम्प नहीं बदलेगा:

यह सच है इस बात की पुष्टि के लिए, अपने कैश की गई क्रियाओं में से एक में इस डालें।

+0

आप सही हैं !!!! क्या थोड़ा उच्च स्तर पर कैश करने का कोई तरीका है? यह इसके लायक है? (उदाहरण के लिए यदि मैं रेल ऐप से पहले config.ru में एक रैक :: कैश सेट करता हूं?) – soulnafein

+0

वास्तव में नहीं ... रैक :: कैश आपकी सबसे अच्छी शर्त है। बस अपने पर्यावरण में जितना ऊंचा हो उतना ऊंचा हो और आपको वह प्रदर्शन देना चाहिए जो आपको चाहिए, यह पूरे रेल http स्टैक से बचाता है। – leonardoborges

+0

ओह और मैं सराहना करता हूं अगर आप मूल जवाब को वोट दे सकते हैं यदि यह आपकी मदद करता है :) – leonardoborges

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