Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> If-Modified-Since с помощью VB.NET 
V
    Опции темы
alexburzak
Дата 1.4.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 12.3.2007
Где: Hadera

Репутация: нет
Всего: 1



Как можно средствами VB.NET выдать в ответ на If-Modified-Sinse что страница изменилась?
PM   Вверх
alexburzak
  Дата 1.4.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 12.3.2007
Где: Hadera

Репутация: нет
Всего: 1



Пока что нашел только как можно устанавить последнию изменненую дату: 
Response.Cache.SetLastModified(DateTime.Parse("04/08/2004 05:06:01AM"))
Меня же интересует - обрабатывать запрос If-Modified-Sinse, выдавая ответ 304 для неизменившихся страниц по этому запросу.
кто знает как это можно сделать?

PM   Вверх
alexburzak
  Дата 2.4.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 12.3.2007
Где: Hadera

Репутация: нет
Всего: 1



Еще нашел как можно установить: Response.Cache.SetETag("xxxx")
Объяснение этому здесь: http://xpoint.ru/know-how/VebAlgorit...alGet?comments 
Меня же интересует какой параметр("xxxx") я могу передаввать в этот таг?
То есть SetETag принимает string("xxxx") но я не знаю как мне сделать такой стринг, что бы при изменении страницы он менялся. А если содержание страницы не изменялось(и string старый), то ее загружать не нужно.
Кто знает как это сделать?

PM   Вверх
Exception
Дата 8.4.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Благодаря Google Code Search нашёл кое-что. Поковырявшись в чужом коде, вывел вот это:

Код
Dim lastModified As DateTime = DateTime.Now.ToUniversalTime()
Dim etag As String = String.Format("""{0:u}""", lastModified);
context.Response.Cache.SetLastModified(lastModified);
context.Response.Cache.SetETag(etag);

PM   Вверх
alexburzak
  Дата 8.4.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 12.3.2007
Где: Hadera

Репутация: нет
Всего: 1



Конечно спасибо за напряг, только мне кажется что использование в etag  даты лишнее, так как тогда оказывается не нужен SetLastModified.
Вот если бы можно было придумать алгоритм, что в зависимости от содержания страницы(то есть обновлялась страница или нет) передается разный etag  было бы класное решение!
Только  что сделал вот так:
Код

    Private Sub SetLastModified(ByVal CurrentCode As Integer)
        'Написал алгоритм который в зависимости от номера по каталогу, будет говорить когда изменялась эта страница.
        Dim Conn As New SqlConnection
        Dim ConnString As String = ConfigurationSettings.AppSettings("ConnectionLogicPC")
        Dim intMaxCode As Integer
        Conn.ConnectionString = ConnString
        Try
            Conn.Open()
        Catch ex As Exception
            With Label1
                .ForeColor = Color.Red
                .Text = ConfigurationSettings.AppSettings("ErrorDB_RU")
            End With
            Exit Sub
        End Try
        Dim strSQL As String
        strSQL = "SELECT MAX(CAST(Code AS integer)) AS MaximumCode " & _
                "FROM LGP_Items " & _
                "WHERE Code < 444444"
        Dim Cmd As New SqlCommand(strSQL, Conn)
        Try
            intMaxCode = Cmd.ExecuteScalar()
        Catch ex As Exception
            'Sorry . . .
        End Try
        Conn.Close()
        Dim CurrentDaysBack As Integer
        CurrentDaysBack = intMaxCode / 120 - CurrentCode / 120
        If CurrentDaysBack < 0 Then
            CurrentDaysBack = 0
        End If
        Dim SubFromDays As TimeSpan = New TimeSpan(CurrentDaysBack, 4, 0, 0)
        Response.Cache.SetLastModified(DateTime.Now.Subtract(SubFromDays))
    End Sub

Принимается критика на мое решение, а также еще предложения как можно использовать SetETag.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.