2012-12-30 18 views
5

मैं यह समझ के रूप में, एक आइटम वेब ब्राउज़र द्वारा कैश किया गया है कि क्या से निर्धारित होता है:ब्राउज़र कैशिंग जब फ़ाइलें नेटवर्क फ़ाइल शेयर से सेवा कर रहे हैं

  1. क्या प्रतिक्रिया हेडर ब्राउज़र बता करने के लिए (जैसे , Cache-Control और Expires)।
  2. एक वैधकर्ता की उपस्थिति (उदा।, ईटाग या अंतिम-संशोधित शीर्षलेख)।

यह नेटवर्क फ़ाइल-शेयर से दी गई फ़ाइलों के लिए अलग कैसे है? विभिन्न ब्राउज़रों में? इस पर विचार करें जावास्क्रिप्ट में शामिल हैं:

<script type="text/javascript" src="\\SOMECOMPUTER\folder\file.js"></script> 

ब्राउज़रों इसी प्रकार के एक meta टैग का पालन करना होगा, जब नेटवर्क फ़ाइलें शामिल कर रहे हैं?

<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 31 Dec 2011 11:12:01 GMT"> 

मैं इस विषय पर बहुत कम प्रलेखन ढूँढने रहा हूँ।

+2

यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन यह मैं था कि मैं इस तरह से जोड़ने से बचने की कोशिश करता हूं और इसके बजाय यह सुनिश्चित करता हूं कि वेब सर्वर के पास सर्वर पर पथ के माध्यम से शेयर तक पहुंच है उदाहरण के लिए 'http: // इंट्रानेट/फाइलें' वास्तव में 'z: \ SomeShare' हो सकता है जो' \\ कुछ कंप्यूटर \ फ़ाइलें ' – prodigitalson

+0

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

+0

HTTP कैश को नियंत्रित करता है - एक वेब सर्वर का उपयोग न करके HTTP आपके लिए विंडो करता है। –

उत्तर

1

HTTP शीर्षलेख केवल तभी माना जाता है जब फ़ाइल HTTP प्रोटोकॉल के माध्यम से भेजी जाती है। फ़ाइल एक्सेस (स्थानीय और नेटवर्क दोनों शेयर) HTTP के माध्यम से नहीं जा रहे हैं, इसलिए आप इसके साथ कैश को नियंत्रित नहीं कर सकते हैं।

एचटीएमएल फाइलों में मेटा टैग के साथ <head> अनुभाग में कैश नियंत्रण है। इसलिए, यदि आप .html फ़ाइल के लिए कैश को नियंत्रित करना चाहते हैं, तो आप इसे कर सकते हैं। उपरोक्त दुर्भाग्य से .js फ़ाइलों के लिए सच नहीं है, आप इस तरह से जेएस फ़ाइल कैशिंग को नियंत्रित नहीं कर सकते हैं।

मैं 2 विकल्प की सिफारिश करेंगे:

  • एक छोटे HTTP सर्वर सेट करें, और वहाँ से .js फ़ाइलें लाने - इस तरह से आप वैन को नियंत्रित HTTP हेडर से कैश टाइमआउट
  • इनलाइन एक HTML पृष्ठ (<script>...</script> टैग में) में अपना जावास्क्रिप्ट कोड, और कैशिंग को <meta> टैग द्वारा नियंत्रित करें। इस तरह आप इस फ़ाइल को <div src="\\server\cachedfile.html" \> में लोड कर सकते हैं - लोड लोड होने के बाद भी छिपाया जा सकता है।

मुझे लगता है कि दूसरा विकल्प बेहतर है, क्योंकि <meta> कैश नियंत्रण अधिक विश्वसनीय और यहां तक ​​कि अधिक नियंत्रित है।

4

संपादित करें: वास्तव में कुछ और परीक्षण करने के बाद, आप IE8, फ़ायरफ़ॉक्स और Google के साथ फ़ाइल को इस तरह से एक्सेस कर सकते हैं, मानते हैं कि उचित अनुमतियां सेट हैं, पूर्व भ्रम के लिए खेद है।

अब यह सिर्फ इस बात की बात है कि यह जावा-स्क्रिप्ट फ़ाइलों (या वास्तव में) कैश करेगा, जो हां है। तो यहाँ आपको लगता है कि कैसे ठीक कर सकते हैं:

Using <meta> tags to turn off caching in all browsers? (यह मेरे लिए ठीक काम करने के लिए लग रहा था तो ऐसा लगता है कि ब्राउज़रों इस तरह नेटवर्क फ़ाइलों के लिए मेटा टैग को सुनेगा)

How to force IE to reload javascript? (यह सिर्फ तरह कैसे काम करता है आप एक अप्रयुक्त चर के रूप में समय को जोड़कर AJAX कॉल को कैशिंग से बचने से बचेंगे)