WebBrowser и кэширование

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

WebBrowser и кэширование

Сообщение ndemidov » 26.12.2008 (Пт) 17:36

Появилась необходимость кэшировать ранее посещённые страницы (кот. загружались в экзэмпляре WebBrowser'а). Как это сделать?
(Есть подозрения :oops: , что WebBrowser как-то связан с Internet Explorer и страницы уже куда-то кэшируются)
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: WebBrowser и кэширование

Сообщение ndemidov » 19.01.2009 (Пн) 20:26

Описание: нужно загружать в WebBrowser web-страницы с интернета, максимально используя кэш. Для загрузки использую метод Navigate. Начинаются проблемы, когда отсутствует подключение к инет-ту: надо, чтобы работал в автономном режиме (грузил страницы из кэша)...

Всё до чего додумался:

Код: Выделить всё
Если есть выход в интернет
   грузим страницу с помощью метода Navigate
Иначе
   Программно переключить WebBrowser в оффлайн (т.е., чтобы IsOffline = True)
   также грузить страницу с помощью Navigate


:?: Как определить есть ли выход в интернет?
:?: Как Программно переключить WebBrowser в оффлайн?

Есть ли более простое решение, что посоветуете?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: WebBrowser и кэширование

Сообщение Williams » 19.01.2009 (Пн) 21:11

И вы думаете, что вас оставят в живых после прочтения этого поста?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: WebBrowser и кэширование

Сообщение Ramzes » 19.01.2009 (Пн) 21:12

На несколько секунд опередил :)

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: WebBrowser и кэширование

Сообщение ndemidov » 19.01.2009 (Пн) 22:07

Спасибо. Самый главный вопрос остаётся: как присвоить хацкому св-ву .IsOffline True

Если не получиться, то неужели придётся при "недоступности сайта/страницы" загружать напрямую из какого-нибудь /Local Settings/Temporary Internet Files ? :(
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: WebBrowser и кэширование

Сообщение Williams » 20.01.2009 (Вт) 3:10

Вот тут даже пример есть
И вы думаете, что вас оставят в живых после прочтения этого поста?

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: WebBrowser и кэширование

Сообщение ndemidov » 22.01.2009 (Чт) 13:14

Спасибо. При проверке доступности сайта методом от Williams:
Williams писал(а):
Код: Выделить всё
Dim headers As WebHeaderCollection = Nothing
Dim response As HttpWebResponse = Nothing
Dim request As HttpWebRequest = TryCast(WebRequest.Create(url), HttpWebRequest)
request.Method = "HEAD"
response = TryCast(request.GetResponse(), HttpWebResponse)
headers = response.Headers



Всегда получ., что сайт не доступен и "зависает" на нескл. секунд (руки у меня, конечно, кривые), что навело меня на мысль определять доступность сайта через WebBrowser. Придумал таокй алгоритм:
Код: Выделить всё
Try
            ' Пытаемся "грузить" с интернета
            ChangeOfflineMode.OffLineMode = False
            WebBr.Navigate(sURLFull)
Catch ex As Exception
            Exit Sub
End Try


Код: Выделить всё
Private Sub WebBr_Navigated(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs)
         With WebBr
 
            ' Следущая строка - проверка на успешную загрузку стараницы. Она вызывает у меня опасения
            ' на надёжность (но все  разы работала).
            If (.Url <> .Document.Url) And Not (ChangeOfflineMode.OffLineMode) Then

                ' Пытаемся "грузить" с кэша
                ChangeOfflineMode.OffLineMode = True
                .Navigate(.Url.ToString)
            End If
        End With
    End Sub


:?: Надёжен ли "мой" способ проверки на загрузку станицы с ин-та?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: WebBrowser и кэширование

Сообщение ndemidov » 01.02.2009 (Вс) 15:40

Строка кода
Код: Выделить всё
If (.Url <> .Document.Url) And Not (ChangeOfflineMode.OffLineMode) Then

в событии WebBrowser_Navigated для проверки загрузилась ли страница, пока ни разу не подводила. Можно предположить, что этот способ работоспособен.

:?: При работе в автономном режиме, если страницы нет в кэше, то появляется окно "Веб-страница не доступна в автономном режиме" с предложением переключиться в "он-лайновый". Можно ли программно отключить это окно.

-- ADDED --
Это окно можно отключить присвоив ScriptErrorsSuppressed = TRUE
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

    TopList