> Date: Sat, 29 Aug 1998 19:30:38 +0400
Hi!
Я хотел бы вернуться к вопросу об Expires который выставляет mod_charset.
Я специально стал присматриваться к этой проблеме, и вот к чему пришел:
Это самое вредное что получилось в обмен на автоматическое определение
кодировки. Но времена меняются, появились Netscape 4.x и IE4.x которые
без проблем работают в koi8-r и вроде им и не надо уже Useragent.
А mod_charset по умолчанию по прежнему ориентируется на старый софт.
И так как большинство администраторов оставляют конфиги по умолчанию,
то проблема Expires только разрастается. Последний пример -
www-koi8-r.rambler.ru - меня совсем доконал:
----------------------------------------------------------------
546% netcat www-koi8-r.rambler.ru 80
HEAD / HTTP/1.0
Host: www.rambler.ru
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
accept-charset: koi8-r
HTTP/1.1 200 OK
Date: Sat, 07 Nov 1998 14:54:26 GMT
Server: Apache/1.3.3 (Unix) Rambler/1.4 rus/PL26.5
Connection: close
Content-Type: text/html; charset=koi8-r
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Sat, 07 Nov 1998 14:54:31 GMT
Vary: accept-charset
----------------------------------------------------------------
Я думаю это это не правильные пчелы, то есть сервер не прав.
Потому как я прошу koi8-r у сервера www-koi8-r.
Кстати, если accept-charset не стоит, то Expires: не ставиться!!!
> > > Имеется в виду тот порт на котором работает определение by Useragent ?
> > > Там всегда будет Expires. Мы же это обсуждали - невыдача Expires все еще мешает
> > > кэшам
> > Нет, в Useragent в этой конфигурации стоит только для некоторых виндовых:
> > CharsetAgent windows-1251 "MSIE 3" "MSIE 2"
> > CharsetAgent windows-1251 (Win16; (Win95; (16-bit)
> Для кого бы оно не стояло, если charset - не URLencoded, а может быть
> выдан хоть кому-то по Useragent, то ответ не кэшируем. Смотрите сами -
> пришел Netscape/X11 через кэш. Ответ кэширован. Следующий клиент
> с MSIE3 получит ответ уже из кэша, что не совсем то, что хочется.
>
> > Может вся проблема в Accept-Charset? Алекс, ты проверял с ним?
> Accept-Charset обрабатывается хитро - если запрошенный charset
> не совпадает с тем, который был бы выдан без Accept, то ответ не кэшируется.
> Если совпадает - кэшируется. Если в определении Charset принимал участие
> User-agent, то не кэшируется никогда.
Смотри пример выше, что-то здесь не так.
> >
> > И вроде уже говорилось что если charset совпадает с Default, даже
> > если через CharsetAgent, то Expires не ставить.
> Я тогда возражал ровно теми же аргументами. Default - это всего-лишь
> Last resort и все. Представьте вышеописанную ситуацию - MS IE 3.0 и
> Netscape/X11 ходят по-очереди к одному URL через кэш.
Хорошо представил, пришел к выводу, что если один читает в Default charset,
то другой должен сам ручками переключиться на свой!!!! Если конечно
прокси не отличает 'Content-Type: text/html; charset=...'
Зачем же делать всем плохо, пусть уж только одному, даже более, как только он
хоть раз получит в не той кодировке, он сразу перейдет на свою!!!
С нашими линиями связи их всегда будет не хватать и лишний качь стоит
дороже любого авто определителя кодировки.
> Не хотите Expires - CharsetDisableForcedExpires On (или что-то в этом духе :)
Увы, я хочу, что бы мне как пользователю их не ставили :-(((((((((
Мои предложение следующие для будущих версий:
1. Убрать из Default конфига CharsetAgent (по крайне мере их
закомментировать) и поменять их влияние на Expires - только если
они меняют Charset (это может быть опция у CharsetDisableForcedExpires)
2. Отменить Expires у DefaultCharset.
3. Добавить в конфиг 'CharsetDisableForcedExpires On' для cgi-bin!!!!
Ведь с Expires вообще трудно работать через cgi-bin.
4. Более внимательно проверить работу Accept-Charset, а то может
оказаться, что он будет у всех клиентов. (По не проверенным данным
он будет и у IE5). Может имеет смысл сделать в основном
варианте раскидывание по URL на основе Accept-Charset и CharsetAgent?
Наверно меня можно обвинить в нарушении совместимости версий, но
так ли это важно, если это будет отражено в Doc? Ведь по идеи
Pentum II совместим с i8080 ;-)))))).
P.S. Алекс по моему у тебя тоже канал не Т3, посмотри сам к чему
приводит Expires!!!!
--
Best regards, Eugene Byrganov
mailto:E.B.Byrganov@inp.nsk.su
work - http://www.inp.nsk.su/
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.