> From apache-rus-dev-null@apache.lexa.ru Sat May 22 00:08:51 1999
> To: apache-rus@lists.lexa.ru
> From: Alex Tutubalin <lexa@lexa.ru>
> Subject: [apache-rus] Vary (кажись, в самое время :)
> Date: Fri, 21 May 1999 23:50:41 +0300
>
> Hi,
>
> AT>> Ничего не понял :). Директива никуда не выдается, r->pool у нас вроде
> AT>> общий на всех. Поясните простыми словами.
> alr> Выдаётся поле Vary. Если его кто-не не сформировал раньше.
> У кого-то из нас проблемы с русским языком. То-ли я переутомился на ниве
> перестановки мебели в квартире, то-ли Вы как-то не так пишете.
>
> Вашу фразу я (буквально) понял так: "Поле Vary:
> /,если его кто-то не сформировал раньше,/ выдается Russian Apache даже при
> CharsetDisableAcceptCharset On" А если его кто-то сформировал, то не
> выдается ?
hint: как сделать, чтобы и волки целы и овцы сыты.
о том как сделать руссккме тексты кэшируемыми, и они не залипали
в браузерах, и при этом сервер реагировал на accept-charset,
user-agent, девичью фамилию матери и т.д.
подразумевается, что все вышесказанное относится к полю
Vary, которое выдается mod_charset. Другие случаи (mod_nagotistion)
не рассматриваются, покольку не являются такой глобальной проблемой, как
некэшируемость. :)
задача: имеются документы, которые нужно представить вразличных кодировках
и кодировка зависит от accept-charset, user-agent и каких-либо других
косвенных признаков, позволяющих выяснить предпочтения клиента в кодировках.
следует сделать возможным кэширование этих документов, но исключить
возможность "залипания" страниц с одной кодировкой в кэше.
в качестве кэше имеется в виду squid.
решение:
[skipped charset tables and user-agents definitions]
CharsetSelectionOrder Portnumber UserAgent
CharsetVaryDiscard on
CharsetDisableForcedExpires on
# optional, что-бы с lynxом не было лишних заморочек
CharsetUseMultiViews on
Listen *:80
Listen *:8000
Listen *:8001
Listen *:8002
Listen *:8003
Listen *:8004
Listen *:8005
CharsetByPort koi8-r 8000
CharsetByPort windows-1251 8001
CharsetByPort ibm866 8002
CharsetByPort iso-8859-5 8003
CharsetByPort x-mac-cyrillic 8004
CharsetByPort koi7 8005
CharsetAutoRedirect koi8-r :8000
CharsetAutoRedirect windows-1251 :8001
CharsetAutoRedirect ibm866 :8002
CharsetAutoRedirect iso-8859-5 :8003
CharsetAutoRedirect x-mac-cyrillic :8004
CharsetAutoRedirect koi7 :8005
CharsetNormalizeTypes image/ application/ video/ audio/
CharsetNormalizeToURL :80 200
что в результате - документы с различными кодировками однозначно представлены
различными URL'ами и залипание страниц с одной кодировкой в кэшах исключается.
Moved temporary в кэше (squide) не залипают, по РФСям - нигде тоже не
должны.
Единственная проблема, которая у нас остается, это то, что все URL'ы с
текстом не унифицированы, а отличаются либо портами, либо hostname,
префиксы etc. Роботы, посещающие сайт либо не будут его смотреть (многие
не ходят по moved temporary) либо если его возьмут, то у них в URL
будет иметь не очень удобный вид. Тут, думаю, возможно такое решение -
если сервер принимая запрос на 80-том порту, исходя из запроса клиента
не может сделать вывод о требуемой кодировке, он отдает ему в default,
без перенаправлений на другой порт (URL), сопровождая его Vary (без
expire или с expire)
По моим прикидкам, все достаточно законно, RFC не нарушает, пользу имеет.
Sincerely your,
Cyril A. Vechera
email:cyril@piter.net --------- http://sply.piter.net
"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.