-
кэширование на клиенте: asp.net и Http
Возвращаясь к вопросу кэширования… Мы уже решили проблему “не возвращения одного и того же результата”, проставив headerы ETag, LastModified и сравнив их с headerами requesta If-none-Match и If-Modified-Since. Это, безусловно, немного увеличило нашу производительность, уменьшив объем информации, отправляемой пользователю. Но время на запросы все равно тратится.
В контексте того, что я делала ранее постановка задачи следующая: сделать так, чтобы запросы на сервер вообще не шли. Как ни парадоксально, именно эта задача оказалась довольно проблематичной.
Во-первых, на данный момент всякий запрос возвращал в ответ следующий набор заголовков:
HTTP/1.1 304 Not Modified
Cache-Control: public
Expires: Fri, 23 Sep 2011 06:02:48 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Fri, 23 Sep 2011 06:02:48 GMT
Совпадение (или Expires < Date) заголовков Date и Expires, часто оценивается как аналог записи в директиве Cache-Control: no-cache. Что, конечно, совершенно нас не устраивает. Но как я ни билась, не удалось мне убрать чертов заголовок Expires из Responsа. Не могу сказать точно, в чем же дело, но не удалось даже переставить заголовок Expires. Еще, конечно, повожусь, но пока никак от него не избавиться. На форумах мне никто помочь не смог, поэтому пришлось импровизировать.
Есть другой параметр заголовке Cache-Control: max-age=<время в секундах>, который указывает количество секунд, сколько валиден запрос. Этот параметр, предполагает public политику кэширования, если не указано другой. Прелесть этого заголовка в том, что он переписывает, уже ставший ненавистный мне заголовок Expires.
Источники:
-
panaryna posted this
-