Discussion:
squid как "эмулятоp интеpнета"
(слишком старое сообщение для ответа)
Michael Rulov
2003-07-18 15:53:36 UTC
Permalink
Пpиветствую , Eugene!
пятница 18 июля 2003 г., Eugene B. Berdnikov писал:

JM>>> 100-120 мегов всякого. пpи попытке залезть на 100% находящийся в кэше
JM>>> целиком сайт сквид пытается честно залезть в инет и пpовеpить не
JM>>> изменились ли стpаницы, в pезультате, если линка нет, юзеp видит
JM>>> многообещающий error по таймауту.
EBB> Hет. RTFM на пpедмет алгоpитма пpовеpки документов, статуса
EBB> fresh/stale, etc.

ок.
заставить сквид делать непpавильно можно?
по моему, именно в этом заключался вопpос.

Интенсивно pасшаpкиваюсь, Michael Rulov. =B-{Q}
Time:
20:52:05 18.07.03
...WinAmp: Marilyn Manson - Para-noir
Ramazan Jah-Far
2003-07-19 12:46:54 UTC
Permalink
Hi!
In fido7.ru.linux, Eugene B. Berdnikov wrote:
JM>>>>> изменились ли стpаницы, в pезультате, если линка нет, юзеp видит
JM>>>>> многообещающий error по таймауту.
EBB>>> Hет. RTFM на пpедмет алгоpитма пpовеpки документов, статуса
EBB>>> fresh/stale, etc.
MR>> ок.
MR>> заставить сквид делать непpавильно можно?
MR>> по моему, именно в этом заключался вопpос.
EBB> refresh_pattern [...]

Интересно, а про offline моде молчим как партизаны или это
"типа очевидно"?
А про глюк с "LM: -1, EX: -1"+offline mode в версиях до
2.5.STABLE2 знаем?
А про некэширование страниц с "VARY: " в версиях до 2.5 знаем?
А про принципиальное некэширование ответов с
"Pragma: no-cache"
"Cache-Control: no-cache"
"Cache-Control: private"
что скажешь?

Проблема, в общем виде, состоит из двух частей:
1) заставить squid кэшировать всё подряд (полностью не
решается, хотя, имея наглость не соблюдать RFC, можно
исходники и подправить...)
2) заставить squid отдавать накэшированное без лишних
раздумий и revalidations.

1-я часть решается обновлением squid (плюс опционально
правкой исходников) и конфигурированием refresh_pattern
как-нибудь навроде
"refresh_pattern . 300 100% 4320 override-expire override-lastmod"
- здесь важно иметь не очень маленький min age.

2-я часть решается переводом squid в offline. У меня
переключение offline/online производится посредством
ip-up/ip-down.

P.S. Поскольку многие сайты злоупотребляют
"Cache-Control: no-cache" и "Cache-Control: private",
полноценный offline browsing не получится.
--
Bye!
Ramazan
Jahor Miadzviedziew
2003-07-23 19:41:30 UTC
Permalink
* on Wed, 23 Jul 2003 02:52:14 +0300 Ramazan Jah-Far
<***@svitonline.com> in ftn.ru.linux wrote:
RJF>>> А про глюк с "LM: -1, EX: -1"+offline mode в версиях до
RJF>>> 2.5.STABLE2 знаем?
JM>> ..ет! (c). рассказывай.
RJF> Был там один глюк, когда страница, не имея ни Last-Modified, ни
[skip]
RJF> изменённый патч включили в 2.5.stable2
замечательно. и часто разработчики так шутят?

RJF>>> что скажешь?
JM>> ну здесь мне большей частью пофигу, т.к. я сначала тоже на pragma:
JM>> no-cache и прочие грешил, а потом проверил -- фигушки.
RJF> Посмотри http://www.membrana.ru/, приколись:
RJF> Pragma: no-cache
RJF> Cache-Control: private, no-transform, must-revalidate, no-cache,
RJF> no-store
RJF> Таких сайтов сейчас всё больше и больше. Они бы ещё "top-secret,
RJF> no-read, no-look, no-use, no-load" дописали для пущего эффекта :-/
а еще лучше на единственную копию на дискету, дискету -- в шреддер,
обрывки -- в мусоросжигатель. пепел потоптать ногами, развести водой и
выпить. впрочем, сайты, которые не хотят чтобы их кэшировали могут и не
кэшироваться -- это уже проблемы не мои, а теток.

RJF> До кучи - `/usr/sbin/client -m HEAD http://www.izvestia.ru/`:
[skip]
RJF> And so on...
ну и фиг на них. в конечном итоге, это у них читателей будет меньше.

JM>> эту тему и лежит оно в кэше в самом лучшем виде. только вот
JM>> зачем-то не отдает юзеру при отсутствии линка.
RJF> Попробуй сначала переключать offline_mode при установлении и
RJF> разрыве соединения с интернетом.
пробовал. все хорошо, кроме одного: упорно пытается резолвить. а
резолвить-то нечем. после того, как локальный же кэширующий bind пошлет
сквида куда подальше (минут через пять где-то), сквид обиженно отдает
то, что лежит в кэше. все было бы хорошо, но машину на ночь выключают
(тетя-директор истеричка, боится как бы не полыхнуло), поэтому bind
кэширует запросы исключительно за день, и кэшированное биндом может
совершенно не пересекаться с кэшированным сквидом. где ему еще надо
сказать что-нибудь типа "не резолви, а отдавай, все равно в оффлайне"?

JM>> сквид 2.5 stable.
RJF> STABLE2!!! Как минимум. А вообще, чем новее, тем больше squid
RJF> сможет кэшировать.
чтобы stable 2 сделать, это надо по дохлому модемному линку, где и так
человек 11 висит, скачать немало мегов =) придется пока что stable 1
обойтись и надеяться, что alt'овцы его привели в чувства.

RJF>>> ip-up/ip-down.
JM>> а это куда? точнее man где? а в прочем, что тут думать -- читать
JM>> надо =)
RJF> man pppd. В RedHat _лучше_ править не ip-up/ip-down, а ip-up.local
RJF> и ip-down.local (см. в /etc/ppp/). В Debian есть каталоги
RJF> /etc/ppp/ip-up.d/ и /etc/ppp/ip-down.d/ Там создаёшь скрипты с
RJF> именем, к примеру, 5squid (для загадочности :)), и вписываешь код
RJF> правки конфигурации и сигнализации squid.
блин, ступил я =) у меня из этих каталогов синхронизация времени и
обновление ip на freedns.afraid.org делается.

RJF> Или чем ты "соединение интернет" :) поднимаешь?
честно? кнопкой "соединение с интернет", у которой виндовая иконка.
кнопка живет в браузере у преподавателя, который дает ей свой пароль и
логин. кнопка все это кушает и просит скрипт, чтобы тот pppd call inet
запустил. все это было сделано в истерике, когда тетка-преподаватель
наотрез отказалась "каждый раз вводить какой-то логин и пароль, а потом
еще что-то нажимать! раньше все было проще". раньше -- это из-под
win98se...
--
corvus corax @home
GPG Fingerprint = 7954 5713 19D0 2713 A3B0 9B79 6F8E 4C25 E279 A165
Ramazan Jah-Far
2003-07-24 01:17:38 UTC
Permalink
Hi!
RJF>> изменённый патч включили в 2.5.stable2
JM> замечательно. и часто разработчики так шутят?

Да по-моему, повсеместно. Рас..здяи они.

RJF>> Попробуй сначала переключать offline_mode при установлении и
RJF>> разрыве соединения с интернетом.
JM> пробовал. все хорошо, кроме одного: упорно пытается резолвить. а
JM> резолвить-то нечем. после того, как локальный же кэширующий bind пошлет
JM> сквида куда подальше (минут через пять где-то), сквид обиженно отдает
JM> то, что лежит в кэше.

Попробуй pdnsd. У него есть концепция доступности верхних
DNS серверов, и накэшированные DNS ответы он при остановке
дампит в файл, а при старте читает. /*Кстати, в моём RedHat
он иногда прибивается раньше, чем успевает записать файл!*/

Когда соединения отсутствуют, он не ждёт ответов основных
DNS серверов, а посылает сразу нафиг.
Правда, это зависит от настройки. Можно проверять доступность
(uptest) вышестоящих DNS ping-ом, и тогда, вероятно, будут
тормоза (я ping не пробовал).
По опыту, для interval=onquery самый быстрый метод -
uptest=none и uptest=if.
К примеру:
server {
label="UkrNet";
ip="212.42.64.7";
interval=onquery;
uptest=if;
interface="ppp7";
purge_cache=off;
}
Проще всего, когда провайдер один. Если их несколько, имеем
процессуальный :) геморрой. В примере ppp поднимается с
"unit 7" и pdnsd отличает провайдера по этому признаку.
Раньше я распознавание провайдера делал скритом (uptest=exec),
и это работало _заметно_ медленнее.
IMHO, самый быстрый метод - uptest=none, preset=off и смена
статуса сервера в ip-up/ip-down при помощи pdnsd-ctl.

Идеологическая проблема pdnsd в том, что сервера нужно
определять заранее. Это маразм. Поднимая ppp соединение, мы
в 99% случаев получаем пару [теоретически заранее
неизвестных] DNS серверов автоматом. Логично было бы в
ip-up/ip-down просто добавлять/убивать эту пару серверов
при помощи pdnsd-ctl.

BTW, RFE на это дело ушёл года полтора назад. Может, надо
было искать рассылку pdnsd и там возбухать? Мне просто
лень было это делать...

JM> чтобы stable 2 сделать, это надо по дохлому модемному линку, где и так
JM> человек 11 висит, скачать немало мегов =) придется пока что stable 1
JM> обойтись и надеяться, что alt'овцы его привели в чувства.

Может, по CVS, -z3? Хотя я не пробовал. А ещё на сайте
может быть diff между 2.5.STABLE1 и 2.5.STABLE2.
--
Bye!
Ramazan
Loading...