Проблема с кэшем вывода MVC 3 - PullRequest
       2

Проблема с кэшем вывода MVC 3

2 голосов
/ 17 февраля 2011

ASP.Net MVC 3 RTM. Я пытаюсь использовать атрибут OutputCache в действии, но, похоже, не работает. Вот запрос Http и ответ.

Request URL:http://localhost/MyApp/Employee.mvc/GetImage?userId=myUserId
Request Method:GET
Status Code:200 OK
Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:ASP.NET_SessionId=sessionIdStuff
Host:localhost
Pragma:no-cache
Referer:http://localhost/MyApp/Employee/Review/1/Index
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)

AppleWebKit / 534.13 (KHTML, как Gecko) Chrome / 9.0.597.98 Safari / 534.13 Параметры строки запроса идентификатор пользователя: MyUser Заголовки ответа Cache-Control: частный, без магазина, максимальный возраст = 3484

Content-Length:1428
Content-Type:image/jpeg
Date:Wed, 16 Feb 2011 22:59:14 GMT
Expires:Wed, 16 Feb 2011 23:57:19 GMT

Last-Modified:Wed, 16 Feb 2011 22:57:19 GMT
Server:Microsoft-IIS/5.1
Vary:*
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
X-Powered-By:ASP.NET

Вот контроллер:

        [HttpGet, OutputCache(Location= OutputCacheLocation.Client, VaryByParam="userId", Duration=3600, NoStore=true)]
        public FileContentResult GetImage(string userId)
        {
            byte[] result;

            using (var client = new WebClient())
            {
                client.Credentials = CredentialCache.DefaultCredentials;
                result = client.DownloadData(string.Format(IntranetUrl, userId));
            }

            return File(result, "image/jpeg");
        }

и мой вид:

<img alt="Employee Picture" src='@Url.Action("GetImage", "Employee", new { userId = Model.UserId, area=""})' width="75px" height="100px" />

Я попытался сравнить с другими статическими изображениями, которые кэшируются, и единственные различия, где эти строки:

Cache-Control: частный, без магазина, макс возраста = 3484

Это включено в мои действия, но не в статические изображения. Кроме того, у статических изображений был ETag, но мой ответ действия не сделал.

Может кто-нибудь помочь, почему это не может быть кэшировано в браузере?

Спасибо за любую помощь ..

1 Ответ

2 голосов
/ 06 апреля 2011

Попробуйте удалить: NoStore = true (или установите NoStore = false), и это будет работать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...