eTag и многие версии страницы - PullRequest
       12

eTag и многие версии страницы

2 голосов
/ 09 сентября 2010

У меня есть сайт ASP .NET с пользовательской системой кэширования на стороне сервера, которая является кошмаром.Я хочу использовать eTag для замены.

Многие ссылки на сайте возвращают разные версии страницы в зависимости от состояния сеанса для пользователя.Пример - mypage.aspx? P = a вернет разные версии mypage - одинаково действительные, в зависимости от состояния сеанса.Я хотел бы кэшировать все версии.

Без полной переделки навигационных ссылок, как я могу это сделать?Из того, что я прочитал, добавление к каждому отдельному тегу eTag по мере их генерации и обслуживания в первый раз приведет к тому, что последняя сгенерированная версия будет признана недействительной и удалена из кэша.

PS Могу ли я использовать Response.Cache.VaryByHeaders ["Content-Length"] = true и полагаться на то, что каждая версия отличается по длине?

PPS Глупая идея!Как насчет добавления пользовательского заголовка с ключом версии к ответу и использования VaryByHeaders для этого.

1 Ответ

0 голосов
/ 07 апреля 2011

Проблема, с которой вы сталкиваетесь с пользовательскими заголовками, заключается в том, что если вещь на другом конце не поймет их, они не ответят взаимностью.Поэтому отправка пользовательских заголовков в IE приведет к тому, что они будут игнорироваться.

Вы можете использовать кеширование вывода.Можно создать свой собственный outputcacheprovider.Это позволило бы вам возиться с кешем в зависимости от ваших требований.

Подробнее о кэшировании вывода см. http://msdn.microsoft.com/en-us/library/hdxfb6cy(VS.90).aspx.

Может показаться, что outputcacheprovider - это только .Net 4

...