Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 23 Июля 2003, 13:04:18
-
дали мне новое место для хостинга, так вот на том месте, если повторно залить скрипт с уже с изменениями, то в браузере все равно показывается старт старого скрипта.
на другом сервере таких проблем нет...
например:
запустил я первый раз скрипт форум, добавил топик, обновляю главную - сообщений новых нет, по фтп вижу что есть...
переименовую файл скрипта - запускаю все сообщения видно (с новыми), добавляю еще - нету новых и так по кругу.
как с этим бороться?
-
А это беда называется кэш...И как его родимого убить на Perl я не знаю, но!
обычно хостеры, где нить в FAQ или еще где, пишут: "Для того, чтобы скрипт не подвергался замучиванию (замачиванию) со строны серверного кэша надо........"
Так что читай.....А вот как на перле период устаревания установить...хз :(
-
как с этим бороться?
Самый простой способ добавить в query_string что-то вроде "http://.../?...&nocache=текущее время в секндах или случайный набор символов". Т.е. чтобы адрес страницы при новом вызове оличался от старого.
-
Можно еще в заголовках html прописать:
-
Phoinix:
некатит, еще раз:
стартую скриптом, добавляю запись, открываю скрипт в новом окне (что б посмотреть что там я внес) итог - новые записи не показаны
Wyclef:
Самый простой способ добавить в query_string что-то вроде "http://.../?...&nocache=текущее время в секндах или случайный набор символов". Т.е. чтобы адрес страницы при новом вызове оличался от старого.
думаю то же самое будет, так как я же буду в браузере набирать http://домен/forum.cgi (без всяких там ?????)
-
WildWizard:
обычно хостеры, где нить в FAQ или еще где, пишут: "Для того, чтобы скрипт не подвергался замучиванию (замачиванию) со строны серверного кэша надо........"
нету у них фага((((( я через РА хостинг взял а они скрываю у кого я конкретно хостюсь для администрирования далли ссылку мне http://домен/cpanel и все...
-
думаю то же самое будет, так как я же буду в браузере набирать http://домен/forum.cgi (без всяких там ?????)
В общем случае (запусти в браузере http://your_host/cgi-bin/env.pl):
env.pl
----------
#!/usr/bin/perl
unless ($ENV{QUERY_STRING} =~ /nocache\\=/i) {
print "Location:[url]http://[/url]$ENV{HTTP_HOST}",
($ENV{REQUEST_URI}.($ENV{REQUEST_URI} =~ /\\?/ ? \'&\' : \'?\').\'nocache=\'.time), "\\n\\n";
exit;
}
print "Content-type:text/html\\n\\n";
while (($key, $val) = each %ENV) {
print "$key = $val
\\n";
}
-
Wyclef:
Самый простой способ добавить в query_string что-то вроде "http://.../?...&nocache=текущее время в секндах или случайный набор символов". Т.е. чтобы адрес страницы при новом вызове оличался от старого.
я тут поразмыслил, а ведь действительно на данный момент это самый удобный вариант, только я просто ко всем ссылкам на скрипт добавил время.
сам запускаю уже его так http://домен/forum.cgi?время
а вот как сделать для пользователей пока непонятно (не будут же они дописывать в браузере "?ххх") ну это я вечером потестирую еще.
Wyclef:
В общем случае (запусти в браузере http://your_host/cgi-bin/env.pl):
что это за программа такая и что она дает?
-
Yaroslav:
что это за программа такая и что она дает?
Элементарная программа - просто печатает "переменные окружения".
Блок unless при ее вызове проверяет есть ли в строке адреса параметр nocache, если его нет, то происходит редирект по тому же адресу только уже с этим параметром (time при каждом вызове будет разный).
-
Спасибо всем!
вообщем пока кое-как оно заработало и я уже дальше эксперементировать не стал.
еще раз спасибо
-
Wyclef:
Элементарная программа - просто печатает "переменные окружения".
еще раз (а то я до такого уровня еще не дорос:))
у меня есть програма и вызываю я ее так http://domen/test.cgi
print "Content-type:text/html\\n\\n";
print "hi";
если я вставлю твой блок, то у меня получится код
unless ($ENV{QUERY_STRING} =~ /nocache\\=/i) {
print "Location:http://$ENV{HTTP_HOST}",
($ENV{REQUEST_URI}.($ENV{REQUEST_URI} =~ /\\?/ ? \'&\' : \'?\').\'nocache=\'.time), "\\n\\n";
exit;
}
print "Content-type:text/html\\n\\n";
while (($key, $val) = each %ENV) {
print "$key = $val
\\n";
}
print "Content-type:text/html\\n\\n";
print "hi";
и вызывать я ее должен так же - http://domen/test.cgi
правильно ли я все понял?
-
ух, попробовал, сам испугался что я тут наделал.
-
правильно ли я все понял?
Правильно. Только второй раз content-type (перед hi) выводить не надо, выше же уже есть.
еще раз
переменные (http://www.webcode.ru/cgi/envlist/)
-
что то не то, посмотри сам результат:
http://www.urp.kiev.ua/vote/test.cgi
-
Что не так? Все правильно. Сначала список переменных, потом "hi". В адрес добавилось "?nocache=..."
-
Wyclef:
Что не так? Все правильно. Сначала список переменных, потом "hi". В адрес добавилось "?nocache=..."
все, понял!!!!!!!!
1. прикерепляем к файлу время.
2. меня просто сбило с толку печать переменных и я так и не мог понять зачем они. (оказалось просто для примера)