Как я могу кешировать как на клиенте, так и на сервере, когда VaryByParam! = "None"? - PullRequest
1 голос
/ 03 февраля 2010

Я ищу способ кэширования страницы как на клиенте , так и на сервере, при этом изменяя выходной кэш сервера параметром строки запроса "Версия".

С этим тегом:

<%@ OutputCache Duration="10" Location="Any" VaryByParam="none" %>

Я получаю эти заголовки:

HTTP/1.1 200 OK
Cache-Control: public
Content-Type: text/html; charset=utf-8
Expires: Wed, 03 Feb 2010 02:29:24 GMT
Last-Modified: Wed, 03 Feb 2010 02:29:14 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.21006
X-Powered-By: ASP.NET
Date: Wed, 03 Feb 2010 02:29:14 GMT
Content-Length: 2364

Это именно то, что я хочу на стороне клиента, но на стороне сервера это не зависит от "версии".

Тем временем с этим тегом:

<%@ OutputCache Duration="10" Location="Any" VaryByParam="Version" %>

Я получаю эти заголовки:

HTTP/1.1 200 OK
Cache-Control: public, max-age=4
Content-Type: text/html; charset=utf-8
Expires: Wed, 03 Feb 2010 02:28:29 GMT
Last-Modified: Wed, 03 Feb 2010 02:28:19 GMT
Vary: *
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.21006
X-Powered-By: ASP.NET
Date: Wed, 03 Feb 2010 02:28:25 GMT
Content-Length: 2352

Это именно то, что я хочу на стороне сервера, но заголовок "Vary: *" заставляет браузер перезагружать страницу при каждом запросе.

Есть ли способ получить кеширование как на стороне клиента, так и на стороне сервера, изменяя при этом параметр?

1 Ответ

2 голосов
/ 03 февраля 2010

Нашли:

protected void Page_Load(object sender, EventArgs e)
{
  Response.Cache.SetOmitVaryStar(true);
}

Подробнее здесь: http://support.microsoft.com/kb/836868

Предположительно, это было исправлено в ASP.NET 4 beta 2 (см. http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes/#_TOC10), но по-прежнему кажется, что он не работает в VS 2010 RC.

...