डिस्क पर संशोधित होने पर भी, मैं स्टैटिक फाइलों को कैशिंग स्टैटिक फाइलों से कैसे रोक सकता हूं?


10

मैं स्थिर फ़ाइलों की सेवा करने के लिए लाइटटैप का उपयोग कर रहा हूं। मेरे पास एक चित्र है जिसमें मैं नियमित रूप से अपडेट करता हूं। यह फ़ाइल सामग्री (और फ़ाइलों को बदल देगा) के साथ-साथ संशोधन तिथि को भी बदल देगा, लेकिन उनका फ़ाइल नाम नहीं।

जब मैं फ़ाइलों को http के माध्यम से एक्सेस करता हूं, तो अपडेट को ध्यान में नहीं रखा जाता है और हल्की पुरानी फाइल को परोसता है। मैं मैन्युअल रूप से फ़ाइल को कुछ अलग करने के लिए नाम बदल सकता हूं, फिर लाइटटीडी 404 त्रुटि लौटाएगा, और अगर मैं अपनी फ़ाइल का नाम वापस लेता हूं, तो मुझे सही अपडेटेड संस्करण मिलेगा। लगता है जैसे कि हल्की स्टैटिक फ़ाइलों को वापस करने के लिए अपने स्वयं के कैश सिस्टम का उपयोग कर रहा है (जो ठीक है)। दुर्भाग्य से, ऐसा लगता है कि फ़ाइलों को संशोधित करने पर यह तंत्र खुद को अपडेट नहीं करता है।

मैंने Wireshark के माध्यम से जांच की, और मेरा ब्राउज़र वास्तव में फ़ाइल के लिए अनुरोध कर रहा है, यह ब्राउज़र कैशिंग मुद्दा नहीं है। खाली कैश से अनुरोध करने पर यह 200 ओके देता है, और उम्मीद के मुताबिक 304 नॉट मॉडिफाइड अन्यथा। लेकिन फ़ाइल एक गलत अंतिम-संशोधित हेडर के साथ वापस आ जाती है जो वास्तविक अंतिम संशोधन तिथि को प्रतिबिंबित नहीं करती है।

हो सकता है कि कुछ कॉन्फिग डायरेक्टिव हो जिससे मैं वाकिफ नहीं हूं?

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

इस प्रश्न के बाद किसी के लिए अपडेट करें: मुझे एक अपराधी मिला। यदि मैं एक स्थिर फ़ाइल को अपडेट करता हूं, तो लाइटी नई सामग्री को वापस नहीं करता है, लेकिन इसके हेडर में नई सामग्री-लंबाई वापस करता है, जिसके परिणामस्वरूप कचरा प्रदर्शित होता है। यदि मैं mod_compress का उपयोग करके फ़ाइल को संपीड़ित करता हूं, तो समस्या दूर हो जाती है क्योंकि mod_compress अपने स्वयं के कैशिंग सिस्टम का उपयोग करता है। दुर्भाग्य से, मैं सभी फ़ाइलों (उदाहरण के लिए छवि फ़ाइलों) को संपीड़ित नहीं कर सकता। तो यह केवल एक आंशिक सुधार है, लेकिन मैं इसे बाद में वापस करूंगा और एक समाधान खोजूंगा।

जवाबों:


6

मैं अंत में मुद्दा मिल गया है। और यह VirtualBox से आता है।

होस्ट (जीत) में एक फ़ाइल को संपादित करते समय, अतिथि (लिनक्स) में लाइटटैप फ़ाइल सामग्री को सही ढंग से अपडेट नहीं करता है (लेकिन सही ढंग से फ़ाइल आकार को अपडेट करता है), इस प्रकार क्रॉप्ड या गार्बल्ड सामग्री को लौटाता है।

मेरे साझा किए गए ड्राइव को अनमाउंट करने और उन्हें पुन: माउंट करने या सीधे अतिथि में फ़ाइलों को संपादित करने से समस्या का समाधान हो गया।

यह पता लगाने में मुझे 6 महीने लग गए।


3

आपने उल्लेख नहीं किया है कि आपके पास mod_cache स्थापित है या नहीं? स्थापित होने पर यह मॉड्यूल 'सक्षम' में चूक जाता है।

मैं यह सुझाव देने के लिए घृणा कर रहा हूं, लेकिन Etags को चालू करने से मदद मिलती है?


mod_cache स्थापित नहीं है। ETags सक्षम हैं (लेकिन ETag उत्पन्न करने के लिए इनोड का उपयोग नहीं किया जाता है)। मैंने ईटैग को सक्रिय या निष्क्रिय करने की कोशिश की, लेकिन कोई फायदा नहीं हुआ।
Pixelastic

2

'अक्षम' करने के लिए स्टेट इंजन कैशिंग सेट करने का प्रयास करें:

server.stat-cache-engine = "disable'

धन्यवाद, लेकिन इसका कोई असर नहीं हुआ। हालाँकि, मैं उस निर्देश को नहीं जानता था, और यह बाद में काम आ सकता है।
Pixelastic

आपके और सर्वर के बीच एक मध्यम पुरुष प्रॉक्सी हो सकता है? अपने सर्वर को पुनरारंभ करने और उसी फ़ाइल तक पहुँचने का प्रयास करें। क्या आप mod_compress का उपयोग कर रहे हैं?
अलेक्सी कोरज़ुन

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

हम्म, मैं यहाँ कुछ हो सकता है। यदि मैं फ़ाइल को एक छोटे से बदल देता हूं (लेकिन उसी नाम को रखते हुए), तो मुझे अपनी फ़ाइल का केवल शीर्ष आधा हिस्सा मिला। पुरानी फ़ाइल की तरह लगता है वर्तमान की सामग्री-लंबाई के साथ प्रदर्शित किया जाता है। यदि मैं एक बड़ी फ़ाइल से प्रतिस्थापित करता हूं, तो पूरी (पुरानी) फ़ाइल प्रदर्शित होती है। फ़ाइलों के परिवर्तन जैसे बदलावों को ध्यान में रखा जाता है, लेकिन फ़ाइल सामग्री को नहीं।
पिक्सेल

स्पैमिंग टिप्पणियों के लिए क्षमा करें: mod_compress को अक्षम करने से कुछ भी नहीं बदलता है, और न ही पूरे वीएम को पुनरारंभ करना है।
Pixelastic

2

इस लाइटटैप विकल्प ने मेरे लिए काम किया

server.network-backend = "writev" 

मेरे लिए एक आकर्षण की तरह काम किया, डेबियन वीएम पर डेबियन डेस्कटॉप पर, धन्यवाद!
यवन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.