2010-08-06 10 views
9

मैं घंटों तक गुगल रहा हूं और इसे समझने की कोशिश कर रहा हूं, और मैं बस नहीं कर सकता। मेरे पास एक फॉर्म, webbrowser1 पर 1 वेबब्रोसर नियंत्रण है।.NET WebBrowser नियंत्रण में कैशिंग को अक्षम कैसे करें?

एक बार जब मैं एक पृष्ठ लोड करता हूं, तो google.com कहें, अगर मैं webbrowser1.refresh() या webbrowser1.navigate("google.com") का उपयोग करता हूं, तो यह पृष्ठ को पुनः लोड नहीं कर रहा है, यह कैश किया गया है, इसलिए यह केवल कैश को पुनः लोड कर रहा है। यह विशेष रूप से मंचों या craigslist जैसे पृष्ठों पर स्पष्ट रूप से स्पष्ट है।

मुझे प्रत्येक रीफ्रेश (आदर्श नहीं) के बीच कैश को साफ़ करने या किसी भी विचार को कैशिंग को अक्षम करने की आवश्यकता है? केवल एक ही चीजें जो मैंने पाई हैं वे पुराने हैं (vb6 या निचले)।

+0

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

उत्तर

5

आप webbrowser1.Refresh(WebBrowserRefreshOption.Completely) पर कॉल करने का प्रयास कर सकते हैं। इसे पृष्ठ को रीफ्रेश करना चाहिए और नवीनतम संस्करण दिखाएं, आईई में ctrl + F5 जैसे कुछ। here और here अधिक जानकारी देखें।

1

This page shows कुछ अस्थायी फ़ाइल साफ़ करने का तरीका, इसे पढ़ा। मेरे पास यह समस्या भी है, लेकिन जब .refresh() मेरे लिए उपयोगी नहीं है क्योंकि यह Documentcomplete ईवेंट को ट्रिगर नहीं करता है। तो जब मैं फिर से लोड करना चाहते हैं, मैं बस .navigate() का उपयोग करें और नेविगेशन इससे पहले कि मैं आदेश कैश को साफ़ करने के लिए

System.Diagnostics.Process.Start("rundll32.exe","InetCpl.cpl,ClearMyTracksByProcess 8") 

कहते हैं।

0

आप पैरामीटर के रूप में यूआरएल में एक यादृच्छिक संख्या या guid जोड़ने का प्रयास कर सकते हैं। जैसे:

var url = "http://google.com"; 
webBrowser.Navigate(url + "?refreshToken=" + Guid.NewGuid().ToString()); 

यह सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है। आशा करता हूँ की ये काम करेगा।

1

.navigate विधि में, आप नंबर 2 (कोई इतिहास ध्वज) पास नहीं करते हैं, लेकिन यह केवल उस नेविगेशन के इतिहास को मार देगा, जब आप लिंक का पालन करेंगे तो इतिहास को नहीं मारेंगे। यदि आप क्लिक किए गए लिंक के इतिहास को मारना चाहते हैं, तो आप ईवेंट को पहले सेविगेट करने के दौरान नेविगेशन को रोक सकते हैं, रद्द = सत्य सेट करके नेविगेशन को रद्द कर सकते हैं और फिर ईवेंट द्वारा प्रदान किए गए यूआरएल का उपयोग करके, नेविगेशन कर रहे हैं। फ्लैग के साथ नेविगेट करें दो बार फिर से सेट करें (कोई इतिहास झंडा नहीं)।

जहां तक ​​अन्य कैश आइटम कुकीज़ की तरह हैं, झंडे काम नहीं करते हैं (हालांकि वे इसे वर्तमान संस्करणों में कार्यान्वित कर सकते हैं) ... सोटो उन सभी कैश आइटम्स को मार डालता है जिन्हें आपको वास्तव में वेब ब्राउज़र के बाहर प्रोग्रामेट करने की आवश्यकता होती है अन्य एपिस का उपयोग करके उपयोगकर्ता कैश से पूछताछ करके और इसे हटाने, शायद दस्तावेज़ पूर्ण घटना के दौरान या ब्राउज़िंग के दौरान।

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

अगर आपको और सहायता चाहिए तो मुझे बताएं। अपने पृष्ठों

<meta http-equiv="cache-control" content="no-cache"> 
1

उपयोग navigate(url,4) 0x4=noCache ध्वज में मेटा टैग निम्नलिखित

0

आप इसे निष्क्रिय नहीं कर सकते। आप या तो पृष्ठ को रीफ्रेश कर सकते हैं, प्रत्येक अनुरोध से पहले कैश साफ़ कर सकते हैं, या वेब ब्राउज़र नियंत्रण के अलावा कुछ और उपयोग कर सकते हैं। यदि आप प्रत्येक अनुरोध से पहले कैश को साफ़ करना चाहते हैं, तो ऑनलाइन बहुत सारी बुरी जानकारी है।मैं आपको यहां अपने उत्तर के लिए अनुशंसा करता हूं: https://stackoverflow.com/a/22074463/1607218। सावधान रहें, उस पृष्ठ पर अन्य उत्तरों में पोस्ट किया गया कोड विश्वसनीय नहीं है, और बड़े पैमाने पर छोटी है, लेकिन उम्मीद है कि मेरा जवाब आपको सही दिशा में ले जाएगा:)