Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не работает OutputCache в MVC 5? / 14 сообщений из 14, страница 1 из 1
19.05.2016, 20:27
    #39239530
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Вот контроллер:
Код: 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
20.05.2016, 15:20
    #39240141
Vladimir A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Landwarrior,
http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs
а почему метод контроллера не должен "зваться" каждый раз ?
кеш для данных а не для метода
...
Рейтинг: 0 / 0
20.05.2016, 17:28
    #39240339
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Так данные как раз этим методом и извлекаются. Или я неправильно понимаю, как работает этот самый атрибут, и выполнение кода всегда будет приходить внутрь этого метода?
...
Рейтинг: 0 / 0
20.05.2016, 18:51
    #39240387
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Так в статье как раз демонстрируется применение OutputCache в том виде, в к-ром я и ожидал его увидеть. Но не работает ни фига оно. Как можно понять, почему?
...
Рейтинг: 0 / 0
20.05.2016, 19:13
    #39240398
Vladimir A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
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
20.05.2016, 20:24
    #39240423
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
В том-то и проблема, что не кешируется совсем, даже когда я предъявляю те же самые параметры в 2,10й, 100й раз
...
Рейтинг: 0 / 0
20.05.2016, 20:50
    #39240436
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
ну ты ж понимаешь если кеш не работал бы то жопа кучи проектам ) проблема конкретно у тебя, сделай запрос тестовую вьюху с таким ж уровнем кеша но без формы и пусть там будет 1 параметр. все будет работать. просто надо анализировать что там у тебя засылается на сервак и почему эт меняет ключ по которому он ищет в кеше. вот и чисто визуально ощущение что параметры разные приходит
...
Рейтинг: 0 / 0
21.05.2016, 14:03
    #39240666
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Ну вот для такой вьюхи:
Код: 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
22.05.2016, 13:32
    #39240882
Перегонщик перекупки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
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
25.05.2016, 10:43
    #39242953
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Не, VaryByParam = "*" не работает. Мне надо чтобы кешировалась каждая комбинация country,city,companyName,page,sort,sortdir , а все остальные параметры в урле для кеширования игнорировались бы.
...
Рейтинг: 0 / 0
25.05.2016, 15:03
    #39243279
Vladimir A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Landwarrior,
(VaryByParam = "country;city;companyName").
...
Рейтинг: 0 / 0
26.05.2016, 20:46
    #39244358
Landwarrior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Пробовал перечислять - не помогает, все равно каждый раз зовется при клике на линк с номером страницы в гриде
...
Рейтинг: 0 / 0
27.05.2016, 15:05
    #39244960
Vladimir A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Landwarrior,
Open ms sql profiler (if the db source is ms sql) and have a look
...
Рейтинг: 0 / 0
27.05.2016, 15:14
    #39244975
Blackmore
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает OutputCache в MVC 5?
Вот что наловил 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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не работает OutputCache в MVC 5? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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