Показать полную графическую версию : [решено] Кеширующий прокси. Предотвратить кеширование.
Стоит такая задача:
необходимо что бы юзер через прокси-сервер всегда получал ликвидную ниформацию с удаленного сервера ( на нем лента новостей), а не кэшированую с прокси.
какой хтмл код для этого надо вставить на ленте?
вариант <META HTTP-EQUIV="Expires" Content="0"> не подходит. нужен еще один способ.
Prisoner
18-01-2007, 17:23
Если честно, то на вскидку как Отче Наш не скажу HTML аналогов нижеприведенному php-коду (мне это просто не нужно), но если Вам в самом деле нужен ответ, то не составит труда преобразовать.
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header ('Cache-Control: no-store, no-cache, must-revalidate');
header ('Cache-Control: post-check=0, pre-check=0', false);
header ('Pragma: no-cache');
Это все те же метаданные, которые помещаются в заголовок HTTP. А есть ли еще способ?
Прокси сохраняет страницу по ее URL, а если ввести URL, но измененный и ссылающийся на эту же страницу (добавить в конец ?=...) то прокси заново загрузит страницу. Можно ли такую возможность как-то использовать в своем коде?
если при добавлении параметров в урл, страница заново тянется, то почему бы чтобы каждый раз она у нас обновлялась, а не доставалсь хэшированная, не передавать в урл допустим текущее время.. оно будет разным - урлы разные - страница будет тянуцца с новой инфой.
Можно ли это сделать на хтмл?
Prisoner
19-01-2007, 15:51
На HTML - только руками :). Можно попробовать на JavaScript. Что-то вроде на событии onload документа:
var links = document.getElementByTagName('A');
var dt = new Date();
for (i in links) {
if (!links.hasOwnProperty(i)) continue;
links[i].href += (links[i].href.indexOf('?') == -1 ? '?rnd=' : '&rnd=') + + dt.getTime();
}
Vlad Drakula
19-01-2007, 16:23
Prisoner
document.getElementByTagName - не сработает
document.getElementsByTagName
for (i in links) -> for (var i = 0; i < links.length; i++)
Какой алгоритм этого кода? Причем тут getElementsByTagName('A'). Для Ява скриптов нужен IIS? на Апаче он будет работает? мне просто это надо засунуть в cgi и скомпилить на сях.
Prisoner
20-01-2007, 02:33
Vlad Drakula, спасибо, очепятался. Но а на счет цикла можно поспорить, правда, чую, что зря :).
mask, Вы запутались. JS выполняется клиентом - броузером в большинстве случаев. Это всего лишь кусок текста оформленный как того требует JS. Я все сказал постом ранее. Учитывая поправки Vlad Drakula можете пробовать. Почитайте что такое JS, с чем его едят, как внедряют в код страницы. А алгоритм простой, реализующий вашу же мысль на счет переменного URL: после загрузки страницы JS код пробегает по всем ссылкам и добавляет к ним переменный параметр. Что-то не так понимаю?
Prisoner Спасибо. Попробовал этот код на своей странице (<SCRIPT LANGUAGE> и событие onLoad - все вроде по правилам) - того, что хотел не получается.
Т.е. при повторном вводе строки урл моей страницы, выводится кэшированная страница, а не грузиться заново.
Как я понял, реализовать это на чистом html не представляется возможным, необходимо использовать скриптовые языки.
Prisoner
20-01-2007, 09:36
Vlad Drakula, каюсь, Вы были правы. Мне остается только посыпать голову пеплом и ссылаться на утомленность :) в тщетных попытках обойти массив с численными индексами как хеш %(.
mask, это попробуйте:
var links = document.getElementsByTagName('A');
var dt = new Date();
for (var i=0; i < links.length; i++)
links[i].href += (links[i].href.indexOf('?') == -1 ? '?rnd=' : '&rnd=') + + dt.getTime();
Болшое спасибо. Все заработало.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.