Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 01:55 Itta888
 
 
Во Флориде и в Королевстве сейчас  01:56[Войти] | [Зарегистрироваться]
Ответ на вопрос № 54648

17-08-2007 07:01
Здравствуйте!

Толи я чего не понимаю, толи чудеса какие то :(
В общем написал программку которая раз в час опрашивает страницу статистики посещения.
Естественно каждый раз открывать ИЕ смысла нет - легче в трей ее подвесить.

Всё заработало... всё здорово! НО не у всех обновляется страница (примерно у 10% не обновляется).

Т.е. первый запуск - страничка загрузилась, повторный опрос - берется (видимо) из кеша (!?).

Прочитал массу всего, но понять все равно не могу, в код уже внес цать проверок - а всё тоже. Почему то на некоторых машинах не работает.

Но что совсем странно - если передать фокус окну WebBrowser1 и нажать F5 - она обновляется!

Что не так? На стороне клиента или всё таки можно как то программно решить проблему обновления?

procedure TForm1.Button1Click(Sender: TObject);
var
  URL,Flags,
  TargetFrameName,
  PostData, Headers: OleVariant;

begin
  //проверяем, что второй раз запускаем
  if (StrToInt(lL.Caption) <> 0) then
  begin
    //1 попытка заставить обновиться
    WebBrowser1.Offline:=True;
    Application.ProcessMessages;
    WebBrowser1.Offline:=False;
    Application.ProcessMessages;
    //1 end

    Flags := REFRESH_NORMAL;
    WebBrowser1.Refresh2(Flags);
    Application.ProcessMessages;
  end;

  //2 попытка заставить обновиться
  URL:='about:blank';
  Flags:=navNoReadFromCache;
  TargetFrameName:=EmptyParam;
  Headers:=EmptyParam;
  PostData:=EmptyParam;
  WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
  //2 end

  //ждем
  while not (WebBrowser1.ReadyState = READYSTATE_COMPLETE) do
  begin
    Application.ProcessMessages;
  end;

  //вводим то что нам нужно
  URL:='http://192.168.2.1/count.pl';
  Flags:=navNoReadFromCache;
  TargetFrameName:=EmptyParam;
  Headers:=EmptyParam;
  PostData:=EmptyParam;
  WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
  //так у некоторых не работало...
  //WebBrowser1.Navigate('http://192.168.2.1/count.pl');

  //ждем
  while not (WebBrowser1.ReadyState = READYSTATE_COMPLETE) do
  begin
    Application.ProcessMessages;
  end;

  //обработка....

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

20-08-2007 05:30
Что ж, проблема решилась добавлением Pragma: no-cache на страницу, но остался осадок - почему у остальных то работало???

20-08-2007 03:01 | Комментарий к предыдущим ответам
Не знаю,  как это делать на разных серверах,
А, дошло, это же не статический html, а скрипт на Perl, там заголовок добавляется просто, явным способом.
Посмотрел, действительно no-caсhe нет в тегах страницы :(.
А его и не должно быть. Заголовки в странице не отображаются, но браузер их получает. Другое дело, что есть еще метатеги в Html, аналогичные заголовкам, но это - не то же самое.

Но раз страница не ваша и изменить ее вы не можете, то это конечно не суть важно. :(

20-08-2007 02:54
Да прокси в сети есть, но он то тут причем?

Адрес локальный но не мой - сеть большая 500 компьютеров. Посмотрел, действительно no-caсhe нет в тегах страницы :(.

Странно то, что один раз, первый, страничка загружается.

И странно то, что на 8 компьютерах работает, а на двух нет :(.

И странно то, что если передать фокус окну Webrowser1 - и нажать F5 - обновление проходит (на тех 2х у которых не работает)!!!

20-08-2007 02:29
Не через PROXY работаете?

20-08-2007 02:24
А у вас страница из локальной сети или ваша собственная? (сужу по ее адресу http://192.168.2.1/count.pl)
Если да, то должно бы помочь добавление заголовков в ответ от сервера:
Cache-Control: no-cache
Pragma: no-cache  -- этот для совместимости с HTTP 1.0

Не знаю,  как это делать на разных серверах, должно быть в документации. На Apache может быть можно написать что-то в файле .htaccess в соответствующей папке (точно не знаю). У меня в одной задаче web-сервер был встроенный в программе на основе IdHTTPServer, там это просто делается.

20-08-2007 01:34
Ой, описался Delphi7.

20-08-2007 00:57
Пробовал :( всё что написано в Help'е.

Собственно потому и Refresh2, Navigate2 использовал - не помогает.

Пробовал между на другую страницу перейти - всё равно берет из кеша.

Может это настройки безопасности ИЕ?

Да, совсем забыл всё на Delphi5.

17-08-2007 17:01
Flags := REFRESH_NORMAL;
WebBrowser1.Refresh2(Flags);


попробуйте flags:=REFRESH_COMPLETELY;

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Кто съел Красную шапочку?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования