СКБ Контур
Сайт Контура
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Загрузка картинок с форума
Уфаныч Offline
#1 Оставлено : 18 июля 2008 г. 12:31:09(UTC)
Уфаныч

Ранг: Участник

Группы: Участник, Представитель СЦ
Зарегистрирован: 28.01.2007(UTC)
Сообщений: 86
Откуда: Арти

Приветствую.

А почему загрузка присоединённых к сообщению картинок картинок сделана через параметр? то есть, например, вот ссылка на скриншот об ошибке. http://forum.kontur-exte...ru/resource.ashx?a=3589

В заголовке установлено Cache-Control: private, что мягко говоря, непонятно. Промежуточный кэширующий прокси такое не кеширует. Неприятно как то - заходишь в тему с кучей таких скриншотов, и ждёшь... Или вам исходящий трафик очень нужен?

Cache-Control: proxy-revalidate было бы лучше. или даже must-revalidate
//Как аукнется, так и откликнется...

Алексей Коваленко
Дмитрий Кармазин Offline
#2 Оставлено : 22 июля 2008 г. 21:17:57(UTC)
Demonix

Ранг: Эксперт

Группы: Администратор форума, Сотрудник СКБ Контур
Зарегистрирован: 28.06.2005(UTC)
Сообщений: 7 876
Откуда: Екатеринбург

Сказал «Спасибо»: 12 раз
Поблагодарили: 257 раз в 246 постах
Через такой параметр осуществляется загрузка не картинок, а всех вложений.
Контент генерится автоматически, а не берется с диска напрямую. Прокси-сервер не сможет определить, изменилась ли информация. Это может сделать только клиент, увидев, что данные по такой ссылке он уже загружал.
Возможно это сделано по какой-то другой причине.

Если вы знаете, как надо сформировать заголовки, или у вас есть какое-то готовое решение - можете придложить его на http://www.yetanotherforum.net - там его быстрее реализуют и это распространится на всех - не придется каждый раз править код при обновлении форума..

Цитата:
Неприятно как то - заходишь в тему с кучей таких скриншотов, и ждёшь...

Юзайте оперу )
Кармазин Дмитрий
Служба поддержки ЗАО "ПФ "СКБ Контур"
Уфаныч Offline
#3 Оставлено : 23 июля 2008 г. 1:40:42(UTC)
Уфаныч

Ранг: Участник

Группы: Участник, Представитель СЦ
Зарегистрирован: 28.01.2007(UTC)
Сообщений: 86
Откуда: Арти

Спасибо, Demonix. Похоже, что без чего то вроде mod_rewrite такое не сделать.
Цитата:
Юзайте оперу )
Очень надо... я так могу поставить настройку кэша "Сравнивать страницу в кэше со страницей в сети" в "никогда", и получу тот же эффект. Или опера в принципе игнорирует параметры кэша?
//Как аукнется, так и откликнется...

Алексей Коваленко
Дмитрий Кармазин Offline
#4 Оставлено : 23 июля 2008 г. 2:10:33(UTC)
Demonix

Ранг: Эксперт

Группы: Администратор форума, Сотрудник СКБ Контур
Зарегистрирован: 28.06.2005(UTC)
Сообщений: 7 876
Откуда: Екатеринбург

Сказал «Спасибо»: 12 раз
Поблагодарили: 257 раз в 246 постах
Уфаныч написал:
Спасибо, Demonix. Похоже, что без чего то вроде mod_rewrite такое не сделать.
Цитата:
Юзайте оперу )
Очень надо... я так могу поставить настройку кэша "Сравнивать страницу в кэше со страницей в сети" в "никогда", и получу тот же эффект. Или опера в принципе игнорирует параметры кэша?

Опера делает так, как ей сказано. Сказано - никогда - она никогда сама (при переходе на страницу по ссылке) не полезет за документом (в т.ч. и страницей) на сервер (ну, если только из ее кеша не вытеснится этот документ). Сказано - только через 5 минут - значит через 5 минут проверит. Только принудительное обновление страницы заставит ее скачать нужные файлы вне плана. Но и это отключается включением режима показа только кешированных изображений.
Вот тут и пример со страницами, и скрин окна настроек.

Вообще, Опера, имхо, чемпион по сохранению траффика Smile
Кармазин Дмитрий
Служба поддержки ЗАО "ПФ "СКБ Контур"
Уфаныч Offline
#5 Оставлено : 23 июля 2008 г. 4:16:05(UTC)
Уфаныч

Ранг: Участник

Группы: Участник, Представитель СЦ
Зарегистрирован: 28.01.2007(UTC)
Сообщений: 86
Откуда: Арти

Что то мне имхуется, что настройка "5 минут" не входит в стандартные параметры кеширования страниц согласно rfc 2616. Однако, с другой стороны, такое поведение можно притянуть под weak validators.

А чемпионом предлагаю выбрать squid.

Кстати, я нашёл параметры для заголовка, определяющие кешироdание динамических страниц.

Cache-Control: public, must-revalidate
Vary: Content-ID
Content-ID: {MD5(contetnt)}
Content-type: {...}

Однако, .NET как то не даёт своими параметрами определить такое, требуется явное указание в заголовке. cache-control:private специально не задаётся .... и более того, в исходниках форума есть одна настройка кеша, случайная, в интервале от 5 до 15 минут (URLBuilderRewrite.cs, строка 213)

Хм.
Цитата:
As it turns out ASP.NET is using the Cache-Control: private header only if the project is set into Debug mode. When you switch into non-debug mode changes to Cache-Control: public which indeed tries to cache the resource requests. If set Debug to false in Web.config I only see the first hit to the resource unless I'm doing an explicit Browser Refresh on the page, which is the behavior you'd expect.


Demonix, а как у форума с Debug in Web.config ?

// это не мой профиль, но оказалось интересно покопаться немного
//Как аукнется, так и откликнется...

Алексей Коваленко
Дмитрий Кармазин Offline
#6 Оставлено : 23 июля 2008 г. 5:35:59(UTC)
Demonix

Ранг: Эксперт

Группы: Администратор форума, Сотрудник СКБ Контур
Зарегистрирован: 28.06.2005(UTC)
Сообщений: 7 876
Откуда: Екатеринбург

Сказал «Спасибо»: 12 раз
Поблагодарили: 257 раз в 246 постах
Не стаить же сквид на домашний компьютер или ноутбук разди сохранения траффика Smile

Кстати, я нашёл параметры для заголовка, определяющие кешироdание динамических страниц.

Цитата:
Cache-Control: public, must-revalidate
Vary: Content-ID
Content-ID: {MD5(contetnt)}
Content-type: {...}

Понятно, воможно, это вариант... Но я нашел информацию о том, что ИЕ, вплоть до шестого имеют баг в обработке этого заголовка. Но все равно не понятно. Понятно только, что можно определить срок жизни по времени. Возможно, поможет ручная генерация ETag'а.

В URLBuilderRewrite.cs, строка 213 - настраивается кеширование на сервере данных из БД, к кешированию контента не относится.
Явно задать тип кеширования тоже можно: Response.Cache.SetCacheability, если интересно, но явно это делается только в RSS ленте форума.

Форум, возможно, и скомпилирован в Debug (не помню точно), но это не имеет значения, т.к. private - это значение по умолчанию в любом случае.
Кармазин Дмитрий
Служба поддержки ЗАО "ПФ "СКБ Контур"
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Гость
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.

Форум YAF | YAF © 2003-2011, Yet Another Forum.NET
Страница сгенерирована за 0,226 секунды.