2015-01-06 9 views
5

मैं अपाचे कॉमन्स वीएफएस 2 का उपयोग करने के तरीके सीखने की कोशिश कर रहा हूं।कॉमन्स वीएफएस कैश कैसे काम करता है?

मैंने उन सभी डॉकू को पढ़ा है जो मुझे मिल सकता है और मैं पहले से ही एपीआई से परिचित हूं लेकिन अभी भी एक चीज है जो मुझे पूरी तरह स्पष्ट नहीं है।

कैश तंत्र कैसे काम करता है? विशेष रूप से:

  • मुझे कैश रणनीति और फ़ाइलें कैश इंटरफ़ेस के बीच अंतर नहीं मिलता है। किसका उपयोग किया जाता है?

  • यह यहां डॉकू में कहा गया है: http://wiki.apache.org/commons/VfsCacheStrategy ... कि 3 संभावित कैश रणनीतियों हैं और प्रत्येक विवरण में समझाया गया है। मुझे on_call रणनीति "सरल" मिलती है लेकिन अन्य दो मैं नहीं करता हूं। उदाहरण के लिए - यदि हम एक मैन्युअल रणनीति चुनते हैं तो यह कहा जाता है कि "आपको फाइल ऑब्जेक्ट" के साथ अपनी ऑब्जेक्ट रीफ्रेश करने के लिए fileObject.refresh() का उपयोग करना होगा। लेकिन यह वास्तव में क्या मतलब है? क्या इसका मतलब यह है कि अगर मैं इस फ़ाइल ऑब्जेक्ट के फाइलकंट्स पर बाइट्स लिखता हूं तो वे वास्तव में तब तक लिखे नहीं जाएंगे जब तक कि मैं फ़ाइल ऑब्जेक्ट बंद नहीं करता या रीफ्रेश नहीं करता? क्या होगा यदि मेरे पास 2 फाइलऑब्जेक्ट्स हैं जो एक ही यूआरआई से हल किए गए हैं और मैं पहले() को हटा देता हूं? क्या दूसरी वस्तु मौजूद है() विधि अभी भी सही हो जाती है क्योंकि फाइल ऑब्जेक्ट कैश किए जाते हैं?

जब मैं अपनी मशीन पर स्थानीय रूप से विभिन्न कैश रणनीतियों के साथ खेलने का प्रयास करता हूं तो मुझे वास्तव में व्यवहार में कोई अंतर नहीं मिलता है। वे सभी एक ही व्यवहार करते हैं और फाइल हमेशा एफएस के साथ समन्वयित होती हैं (या कम से कम यह उल्लेखनीय नहीं है कि वे नहीं हैं)।

उत्तर

4

CacheStrategy मूल रूप से एकाधिक कॉल के बीच FileObject के अंदर मेटा डेटा के पुन: सिंक्रनाइज़ेशन को नियंत्रित करता है। FileObject निर्णय लेता है कि दुनिया के अपने दृश्य को रीफ्रेश कब करें।

यह refresh() हर बार जब आप resolve यह फोन करेगा, या यह (OnCallRefreshFileObject डेकोरेटर के माध्यम से) कभी नहीं स्वचालित रूप से प्रत्येक FileObject विधि कॉल से पहले refresh() कॉल करेंगे या।

refresh() अधिकांश समय FileObject राज्य को अलग करने के लिए सेट करता है, इसलिए अगली कार्रवाई attach() के साथ जांचती है तो यह ताजा पढ़ा जाता है।

यह ज्यादातर मेटाडाटा से संबंधित गुणों और बच्चों से संबंधित है, मुझे नहीं लगता कि कोई भी फाइल सिस्टम प्रदाता है जो वास्तव में सामग्री को कैश करता है।

FilesCache के resolveFile() कॉल के बीच कैशिंग उदाहरणों के लिए वास्तव में ज़िम्मेदार है। तो यदि आप एक ही फ़ाइल को हल या नेविगेट करते हैं, तो आपको एक ही जावा ऑब्जेक्ट इंस्टेंस भी मिलेगा (जब तक आप NullFilesCache या LRUFilesCache कैश का उपयोग कुछ प्रविष्टियों की अवधि समाप्त नहीं करते)।

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