powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не работает OutputCache в MVC 5?
14 сообщений из 14, страница 1 из 1
Почему не работает OutputCache в MVC 5?
    #39239530
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот контроллер:
Код: c#
1.
2.
3.
4.
5.
6.
7.
[OutputCache(Location = OutputCacheLocation.Any, VaryByParam = "none", Duration = 60)]
        public ActionResult Index(string country = null, string city = null, string companyName = null, int page = 1, int pageSize = 5, string sort = "ContactName", string sortdir = "DESC")
        {
            var allCustomers = service.GetCustomers(country,city,companyName);

            return View(allCustomers);
        }



Вот вьюха:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
@using (Html.BeginForm("index", null, FormMethod.Get))
 {
 <div style="margin-top:17px;">
 @{
 var grid = new WebGrid(
 canPage: true,
 rowsPerPage: Model.PageSize,
 canSort: true,
 ajaxUpdateContainerId: "grid");

 grid.Bind(Model.Content, rowCount: Model.TotalRecords, autoSortAndPage: false);
 grid.Pager(WebGridPagerModes.All);

 @grid.GetHtml(htmlAttributes: new { id = "grid" },
 fillEmptyRows: false,
 tableStyle: "table table-bordered table-hover",
 mode: WebGridPagerModes.All,
 columns: grid.Columns(
 grid.Column("CustomerID", "CustomerID"),
 grid.Column("CompanyName", "CompanyName"),
 grid.Column("ContactName", "ContactName"),
 grid.Column("City", "City", style: "col-lg-3"),
 grid.Column("Country", "Country", style: "col-lg-3")
 ));
 }

 </div>
 }



Почему метод контроллера зовется каждый раз, когда броузер идет на страницу, даже если при нажатии F5 ?
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240141
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,
http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs
а почему метод контроллера не должен "зваться" каждый раз ?
кеш для данных а не для метода
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240339
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так данные как раз этим методом и извлекаются. Или я неправильно понимаю, как работает этот самый атрибут, и выполнение кода всегда будет приходить внутрь этого метода?
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240387
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в статье как раз демонстрируется применение OutputCache в том виде, в к-ром я и ожидал его увидеть. Но не работает ни фига оно. Как можно понять, почему?
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240398
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,
One more - you are using VaryByParam = "none" but the method service.GetCustomers depends on the following params - country,city,companyName.
So you will be caching very first list of customers for the next 60 seconds, so second request will return the same list on customers ignoring the fact if request was with different parameters.
Sorry in English don't have keyboard (with screen keyboard very slow)
If you need I will answer in Russian from home

Vladimir
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240423
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том-то и проблема, что не кешируется совсем, даже когда я предъявляю те же самые параметры в 2,10й, 100й раз
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240436
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты ж понимаешь если кеш не работал бы то жопа кучи проектам ) проблема конкретно у тебя, сделай запрос тестовую вьюху с таким ж уровнем кеша но без формы и пусть там будет 1 параметр. все будет работать. просто надо анализировать что там у тебя засылается на сервак и почему эт меняет ключ по которому он ищет в кеше. вот и чисто визуально ощущение что параметры разные приходит
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240666
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот для такой вьюхи:
Код: plaintext
1.
2.
3.
4.
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<p> @ViewBag.DEMO </p>



вот такой метод того же контроллера
Код: c#
1.
2.
3.
4.
5.
6.
7.
[OutputCache(VaryByParam = "none", Duration = 60)]
        public ActionResult All()
        {
            _logger.Info("All");
            ViewBag.DEMO = DateTime.UtcNow.ToString();
            return View();
        }



вполне себе кешируется. Почему у меня первая вьюха + первый метод не кешируется?
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39240882
Перегонщик перекупки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LandwarriorНу вот для такой вьюхи:
Код: plaintext
1.
2.
3.
4.
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<p> @ViewBag.DEMO </p>



вот такой метод того же контроллера
Код: c#
1.
2.
3.
4.
5.
6.
7.
[OutputCache(VaryByParam = "none", Duration = 60)]
        public ActionResult All()
        {
            _logger.Info("All");
            ViewBag.DEMO = DateTime.UtcNow.ToString();
            return View();
        }



вполне себе кешируется. Почему у меня первая вьюха + первый метод не кешируется?

может так VaryByParam = "*"?
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39242953
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, VaryByParam = "*" не работает. Мне надо чтобы кешировалась каждая комбинация country,city,companyName,page,sort,sortdir , а все остальные параметры в урле для кеширования игнорировались бы.
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39243279
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,
(VaryByParam = "country;city;companyName").
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39244358
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал перечислять - не помогает, все равно каждый раз зовется при клике на линк с номером страницы в гриде
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39244960
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,
Open ms sql profiler (if the db source is ms sql) and have a look
...
Рейтинг: 0 / 0
Почему не работает OutputCache в MVC 5?
    #39244975
Blackmore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что наловил Fiddler:
авторGET http://localhost/tst/Home/Index?page=2&__swhg=1464285409192 HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: text/html, */*; q=0.01
Referer: http://localhost/tst/Home/Index
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
Connection: Keep-Alive
Host: localhost
Cookie: OFX_ClientUId=17504a3b-7f52-495b-885b-f109805defa4; __utmmobile=0x30B1E6E02081AEC7


ответ
авторHTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 9454
Content-Type: text/html; charset=utf-8
Expires: Thu, 26 May 2016 17:57:49 GMT
Last-Modified: Thu, 26 May 2016 17:56:49 GMT
Vary: *
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 5.2
X-Powered-By: ASP.NET
Date: Thu, 26 May 2016 17:56:49 GMT

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home Page - My ASP.NET Application</title>
<link href="/TST/Content/bootstrap.css" rel="stylesheet"/>
<link href="/TST/Content/site.css" rel="stylesheet"/>
...</html>


Запрос:
авторGET http://localhost/tst/Home/Index?page=3&__swhg=1464285409192&__swhg=1464285412939 HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: text/html, */*; q=0.01
Referer: http://localhost/tst/Home/Index
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
Connection: Keep-Alive
Host: localhost
Cookie: OFX_ClientUId=17504a3b-7f52-495b-885b-f109805defa4; __utmmobile=0x30B1E6E02081AEC7


ответ:
авторHTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 9766
Content-Type: text/html; charset=utf-8
Expires: Thu, 26 May 2016 17:57:52 GMT
Last-Modified: Thu, 26 May 2016 17:56:52 GMT
Vary: *
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 5.2
X-Powered-By: ASP.NET
Date: Thu, 26 May 2016 17:56:52 GMT

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home Page - My ASP.NET Application</title>
<link href="/TST/Content/bootstrap.css" rel="stylesheet"/>
......
</html>


Потом снова иду на 2ую страницу:
авторGET http://localhost/tst/Home/Index?page=2&__swhg=1464285409192,1464285412939&__swhg=1464285414801 HTTP/1.1
X-Requested-With: XMLHttpRequest
Accept: text/html, */*; q=0.01
Referer: http://localhost/tst/Home/Index
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
Connection: Keep-Alive
Host: localhost
Cookie: OFX_ClientUId=17504a3b-7f52-495b-885b-f109805defa4; __utmmobile=0x30B1E6E02081AEC7


Мне в ответ:
авторHTTP/1.1 200 OK
Cache-Control: public, max-age=54
Content-Length: 9454
Content-Type: text/html; charset=utf-8
Expires: Thu, 26 May 2016 17:57:49 GMT
Last-Modified: Thu, 26 May 2016 17:56:49 GMT
Vary: *
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 5.2
X-Powered-By: ASP.NET
Date: Thu, 26 May 2016 17:56:54 GMT

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home Page - My ASP.NET Application</title>
<link href="/TST/Content/bootstrap.css" rel="stylesheet"/>
...
</html>
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не работает OutputCache в MVC 5?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]