2011-01-05 12 views
11

मैं रेल वेब स्टैक द्वारा प्रदान किए जाने वाले हमारे वेब एप्लिकेशन (हजारों पृष्ठों) पर पूर्ण पृष्ठ कैश करना चाहता हूं, लेकिन अक्सर नहीं बदलता। प्रत्येक रेंडर संसाधनों के मामले में काफी महंगा है।क्या वार्निशिश रेल के साथ उपयोग करने के लिए सही कैशिंग समाधान है?

कैसे Varnishd काम करता है की मेरी समझ है कि एक प्रारंभिक कॉल एक यूआरएल के लिए किया जाता है जब, Varnishd अपने कैश की दुकान की जाँच करेगा है, जो हो जाता है एक याद आती होगी और इतने अनुरोध रेल के माध्यम से पारित हो जाएगा और प्राप्त होने वाले पृष्ठ उत्पन्न फिर वार्निश कैश में जोड़ा जाता है।

उस यूआरएल में किए गए किसी भी बाद की कॉल और फिर वार्निश कैश से परोसा जाता है, रेल स्टैक शामिल नहीं है।

क्या यह सही है या मैं रास्ता बंद कर रहा हूं?

मेरा ऐप वर्निशड को कैसे बता सकता है जब एक विशिष्ट पृष्ठ को & अपडेट किया गया है ताकि उसके कैश स्टोर में किए गए किसी भी बदलाव को प्रतिबिंबित किया जा सके?

क्या वार्निश इस उद्देश्य के लिए एक अच्छा विकल्प है?

आपकी मदद के लिए धन्यवाद - मुझे पता है कि ये बहुत ही बुनियादी प्रश्न हैं, लेकिन दस्तावेज़ सिर्फ यह स्पष्ट नहीं करते हैं (कम से कम मेरे लिए)। http://www.mnot.net/cache_docs/

आदेश कैशिंग आप अपने http प्रतिक्रिया में समाप्ति के समय का उल्लेख करना होगा साथ एक रिवर्स प्रॉक्सी का उपयोग करने के लिए:

उत्तर

3

मैं मार्क नॉटिंघम द्वारा HTTPS संचय करने के लिए इस गाइड को पढ़ने की सलाह। जब नई सामग्री उपलब्ध होती है तो कैशिंग सर्वर को "बताना" आम तौर पर संभव नहीं है क्योंकि प्रोटोकॉल को इंटरनेट पर फ़ेडरेट किया जाना है और जब आप नए किटिन चित्र होते हैं तो आप दुनिया भर में सर्वर्स को बताना नहीं चाहते हैं: -)

रेल पेज कैशिंग बिल्कुल वही नहीं है। यह फ़ाइलों को स्थिर रूप से सेवा देने के लिए वेब सर्वर पर काम को ऑफ़लोड करता है लेकिन निर्णय में http प्रोटोकॉल को शामिल नहीं करता है।

चेतावनी: मुझे यह इंगित करना चाहिए कि मैंने व्यक्तिगत रूप से वार्निश की कोशिश नहीं की है। यह उत्तर (मुझे सही लगता है) धारणा पर आधारित है कि वार्निश एक http कैशिंग रिवर्स प्रॉक्सी है।

+1

सही है, वार्निश HTTPS संचय के साथ एक HTTP रिवर्स प्रॉक्सी है और HTTPS संचय के लिए अनुकूलित। यदि आपने हेरोकू की कोशिश की है, तो आपने वार्निश की कोशिश की है। – yfeldblum

+1

अधिकांश रिवर्स प्रॉक्सी वास्तव में एक तरह से करने के लिए कैश कि नई सामग्री उपलब्ध नहीं है "बता" है, हालांकि आप सही है कि आप कौन से सर्वर फ्लश करने के लिए पता है, और उन्हें संकेत करने के लिए एक तरह से विन्यस्त करने की जरूरत है। वार्निश एक प्रबंधन इंटरफ़ेस, एक नियंत्रण चैनल, जो आपने अपने आवेदन या मैन्युअल रूप से कनेक्ट कर सकते हैं नहीं है, इसलिए यदि आप जानते हैं कि कौन से सर्वर फ्लश करने के लिए, यह ऐसा करने के लिए काफी आसान है। –

1

जैसा कि नोडल के उत्तर में उल्लिखित है, यदि एक रिवर्स प्रॉक्सी का उपयोग करते हैं, तो आम तौर पर पृष्ठ को आपके नियंत्रण से कुछ समाप्त कर देता है। वैकल्पिक विकल्प यह है कि आपको रेलवे page caching (अनुभाग 1.1 देखें) का उपयोग करना समाप्त हो जाएगा, इससे रेल पहली बार डिस्क (सार्वजनिक निर्देशिका में) प्रतिक्रिया को प्रस्तुत करती है, और पहली बार एक क्रिया कहा जाता है, और आप अपने सामने का उपयोग कर सकते हैं सीधे उन HTML फ़ाइलों को सेवा करने के लिए अंत वेबसर्वर। मैं इसके लिए nginx का उपयोग करता हूं, और मौजूद किसी भी स्थैतिक फाइलों को प्रस्तुत करने का निर्देश है (आमतौर पर छवियां, लेकिन एचटीएमएल पृष्ठों के लिए भी सही रीराइट के साथ एचटीएमएल पेजों के लिए काम करता है)। रेलों द्वारा प्रबंधित कैश के साथ, आप अपने आप को समाप्त कर सकते हैं, जैसे मार्गदर्शिका पृष्ठ पर उदाहरण में एक नई वस्तु बनने पर एक इंडेक्स समाप्त हो जाती है।

मेरे समझ, कि रिवर्स http प्रॉक्सी के लिए हैं, और मदद प्रदर्शन आप बहुत ही उच्च प्रवाह क्षमता है जब के बाद से यह कैश अपने नियंत्रण से बाहर नेटवर्क के कुछ हिस्सों तक पहुंचने में, फिर भी अगर यह समय प्रस्तुत करना है कि आप का सुझाव के रूप में अनुमति देता है तो रेल पेज कैशिंग आपके लिए एक अच्छा विकल्प हो सकता है।

+0

असल में ... यह इन दिनों बहुत दुर्लभ है एक समर्पित रिवर्स प्रॉक्सी कि कैश अमान्यकरण का समर्थन नहीं करता टीटीएल मार से पहले लगता है। यह एक महत्वपूर्ण उपयोग-मामला है। यह आमतौर पर मानक HTTP कैशिंग हेडर का उपयोग नहीं किया जाता है। –

+0

आह, अच्छी तरह से जानना अच्छा है, मुझे लगता है कि एक नया जवाब है कि यह कैसे करना है इसका उल्लेख करते हुए। – Jeremy

5

गतिशील कैश अमान्यता करने के लिए, आप प्रबंधन चैनल पर अपने एप्लिकेशन सर्वर से purge.url {some regexp} भेज सकते हैं। उदाहरण के लिए, purge.url "^/some/page/$"। हालांकि, रेल से, PURGE HTTP विधि का उपयोग करना शायद सबसे आसान है।तो बजाय एक HTTP GET करने का, आप एक ही यूआरआई के खिलाफ एक PURGE करना चाहते हैं:

PURGE /some/page/ HTTP/1.0 
Host: example.com 

यह अनुरोध जब तक आप ओवरराइड कि विन्यास में localhost से में आ गया है।

कुछ लिंक:

1

पृष्ठ कैशिंग क्या आप शायद चाहते हैं। वार्निश की तुलना में सेटअप और रखरखाव करना आसान होगा। के बाद से आप एक ही स्थान में के बजाय प्रत्येक आवेदन सर्वर पर कैश को अमान्य कर सकते हैं एक रिवर्स प्रॉक्सी के साथ कैशिंग, कुछ फायदे हैं करता है जब आपके पास कई आवेदन सर्वरों के लिए पैमाने पर करने शुरू करते हैं।

आप एक HTTP शुद्ध अनुरोध जो रेल वार्निश बता जब एक पृष्ठ बदल गया है दूँगी पर प्रतिक्रिया के लिए वार्निश कॉन्फ़िगर कर सकते हैं। उन पंक्तियों के साथ यहां plugin और article है।

+1

यदि आपके पास सरल कैशिंग की ज़रूरत है, तो हाँ। यदि आपको अपने कैशिंग सिस्टम से दूरस्थ रूप से जटिल कुछ भी करने की ज़रूरत है, तो रेल पेज कैशिंग अपर्याप्त होने की संभावना है। वार्निश वास्तव में उस बिंदु पर चमकता है जहां अधिकांश लोग रेल पेज कैशिंग को बढ़ाते हैं। –

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