Отключить кэширование веб-браузера

#vb.net #webbrowser-control #browser-cache #flash #navigateurl

#vb.net #веб-браузер-управление #браузер-кэш #flash #navigateurl

Вопрос:

Я новичок здесь и действительно хочу вашей помощи. Я пытался отключить кэш моего веб-браузера, но мне не удалось разрешить перегрузку, потому что нет доступной «навигации» без сужающего преобразования. Я застрял и больше не знаю, что делать, я искал все возможные решения, но не нашел ответа. Вот мой код:

 Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Const navNoReadFromCache As Long = 4
        Const navNoHistory As Long = 2
        Const navNoWriteToCache As Long = 8
        Dim navflags As Long
        navflags = navNoHistory   navNoWriteToCache
        WebBrowser1.Navigate("url", 4)
    End Sub
End Class
 

Исходное сообщение об ошибке:

Ошибка 2 Не удалось разрешить перегрузку, поскольку невозможно вызвать доступную «навигацию» без сужающего преобразования:

 'Public Sub Navigate(urlString As String, newWindow As Boolean)': Argument matching parameter 'newWindow' narrows from 'Integer' to 'Boolean'.

'Public Sub Navigate(urlString As String, targetFrameName As String)': Argument matching parameter 'targetFrameName' narrows from 'Integer' to 'String'.
 

Комментарии:

1. код написан на языке VB, но вопрос касается C . здесь чего-то не хватает.

2. что вы хотите, чтобы ваш 4 параметр делал? сообщение об ошибке сообщает, что все, что вы хотите сделать, 4 неверно.

3. Я хочу, чтобы мои четыре перестали читать кеш. Вся идея состоит в том, чтобы остановить мой браузер от чтения и записи кэша, потому что я получаю черный экран.

4. Я думаю, что вы используете неправильные справочные материалы. System.Windows.Forms.WebBrowser для метода навигации не требуется параметр Long или Int (нажмите F2 и выполните поиск в веб-браузере). Возможно, вы читали что-то для VB6 или MSHTML.

5. Возможно, вы правы, но вся цель состоит в том, чтобы заставить мой webbrowser1 прекратить чтение и сохранение кэша, как я могу это сделать?

Ответ №1:

.NET WebBrowserControl не перегружает то, что принимает аргумент int или long. Итак, вы не можете установить BrowserNavConstants (это для IWebBrowser2 нет.NET WebBrowserControl) значение для .NET WebBrowserControl.


Я нашел следующую страницу:

http://msdn.microsoft.com/en-us/library/40x214wa(v=vs.110).aspx

Элемент управления веб-браузером сохраняет веб-страницы с недавно посещенных сайтов в кэше на локальном жестком диске. Для каждой страницы можно указать дату истечения срока действия, указывающую, как долго она будет оставаться в кэше. Когда элемент управления переходит на страницу, он экономит время, отображая кэшированную версию, если она доступна, вместо повторной загрузки страницы.

Используйте метод обновления, чтобы заставить элемент управления WebBrowser перезагрузить текущую страницу, загрузив ее, гарантируя, что элемент управления отображает последнюю версию.


Обновлено. Я пробую следующий код, который, похоже, работает нормально :

     private void button1_Click(object sender, EventArgs e) {
        webBrowser1.Navigate("http://www.google.co.jp");
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
    }
 

При этом страница загружается два раза.

Комментарии:

1. Я использовал этот wb1.Refresh(WebBrowserRefreshOption. Полностью), когда я получаю черный экран, но он ничего не делает. Я зарегистрировал это на кнопке.

2. черный? Ммм… Я думаю, что цвет фона по умолчанию — белый. Вы видели wb1.DocumentText после обновления?

3. Точно, я узнал, что это было причиной временных файлов. Для этого я использовал ccleaner, и каждый раз, когда я очищал flash Player и IE, он снова начинал работать. Но это не решит мою проблему, я хочу, чтобы мой веб-браузер прекратил хранить такие данные.

4. Чтобы быть более точным, я хочу загрузить веб-сайт с расширением .html, а содержимое выполняется на java .swf. Черный экран, который я получаю, является экраном загрузки.

5. Я думаю, что это проблема кэша Flash Player, а не WebBrowserControl.

Ответ №2:

Итак, после некоторого времени поиска и тестирования различных методов я пришел к хорошему результату.

Оболочка («RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8», vbHide)

Это код, который я использовал для удаления кэша, который содержал мой веб-браузер на черном экране. Что он делает, так это ищет временные файлы Internet Explorer и удаляет их, vbHide должен храниться рядом с запятой, чтобы работать, что скрывает окно, в котором появляется сообщение о том, что оно удаляет временные файлы.