powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кеширование и сжатие (gzip) в ASP MVC 5
18 сообщений из 18, страница 1 из 1
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758386
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Ребят есть необходимость сделать это (кешир и сжатие) для новостного сайта, вот что сделал:

создал классы фильтров:
CacheFilterAttribute.cs
Код: c#
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
namespace WEB.Filters
{

    //КЕШЬ  use [CacheFilter(Duration = 60)]
    public class CacheFilterAttribute : ActionFilterAttribute
    {
        /// <summary>
        /// Gets or sets the cache duration in seconds. The default is 10 seconds.
        /// </summary>
        /// <value>The cache duration in seconds.</value>
        public int Duration
        {
            get;
            set;
        }

        public CacheFilterAttribute()
        {
            Duration = 10;
        }

        public  void OnActionExecuted(ActionExecutingContext filterContext)  // public override void OnActionExecuted(ActionExecutingContext filterContext).  тут правда ругалось на  override, поэтому убрал.
        {
            if (Duration <= 0) return;

            HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
            TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);

            cache.SetCacheability(HttpCacheability.Public);
            cache.SetExpires(DateTime.Now.Add(cacheDuration));
            cache.SetMaxAge(cacheDuration);
            cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
        }
    }
     


}
 



CompressFilter.cs
Код: c#
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.
29.
30.
31.
32.
namespace WEB.Filters
{
   

        public class CompressFilter : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                HttpRequestBase request = filterContext.HttpContext.Request;

                string acceptEncoding = request.Headers["Accept-Encoding"];

                if (string.IsNullOrEmpty(acceptEncoding)) return;

                acceptEncoding = acceptEncoding.ToUpperInvariant();

                HttpResponseBase response = filterContext.HttpContext.Response;

                if (acceptEncoding.Contains("GZIP"))
                {
                    response.AppendHeader("Content-encoding", "gzip");
                    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                }
                else if (acceptEncoding.Contains("DEFLATE"))
                {
                    response.AppendHeader("Content-encoding", "deflate");
                    response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                }
            }
        }

    }



зарегистрировал в глоб фильтрах:
FilterConfig.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
namespace WEB
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new InitializeSimpleMembershipAttribute());
            //1filters.Add(new EnableCompressionAttribute());
            filters.Add(new CacheFilterAttribute());
            filters.Add(new CompressFilter());
        }
    }
}



в глобаласаксе фильтры:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
   protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
...



и при попытке использовать сжатие, у меня возникает такой эксепшн - http://take.ms/IhHRu сайт - http://take.ms/KT1zM
какой параметр ему нужен? Может лучше выставить параметр сжатия в вебконфиге, пусть себе отдает весь сжатый сайт?

Код: xml
1.
2.
<system.webserver><urlcompression dodynamiccompression=”true” dostaticcompression=”true” dynamiccompressionbeforecache=”true”></urlcompression>
</system.webserver>
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758432
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего писать не нужно http://codearticles.ru/articles/2273
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758453
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruНичего писать не нужно http://codearticles.ru/articles/2273

то есть по умолчанию сжатие включено, спасиб, я уточню у хостера, включено ли.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758514
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят а подскажите еще пж как работает механизм кеширования:

этот кеш у пользователя в браузере на заданное время TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration); сохраняется, получается что самый первый раз, когда пользователь заходит в новую новость, он берет ее не из кеша, далее она помещается в кеш браузера и последующие разы, когда он заходит на эту же новость она ему выдается из кеша браузера (если период кеша не истек).... это если кеширование на стороне клиента.... а в приведенном мною коде какое кеширование?
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758567
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sputnickcodearticles.ruНичего писать не нужно http://codearticles.ru/articles/2273
то есть по умолчанию сжатие включено, спасиб, я уточню у хостера, включено ли.
Если у тебя вдс или дедик, сам включи через cmd set config. Иначе тебя хостер пошлет в лес.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758589
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruSputnickпропущено...

то есть по умолчанию сжатие включено, спасиб, я уточню у хостера, включено ли.
Если у тебя вдс или дедик, сам включи через cmd set config. Иначе тебя хостер пошлет в лес.

до впс еще не доросли, потому и танцы с бубном - хоть как то вытянуть производительность и иногда выскакивающую 503 ошибку
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758618
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sputnickдо впс еще не доросли
Лучше дорасти. Иначе всё это от лукавого, всё-таки не статичная сайт-визитка.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758622
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnickcodearticles.ruпропущено...

Если у тебя вдс или дедик, сам включи через cmd set config. Иначе тебя хостер пошлет в лес.

до впс еще не доросли, потому и танцы с бубном - хоть как то вытянуть производительность и иногда выскакивающую 503 ошибкуИногда - это как часто? Смените хостера.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758648
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASputnickпропущено...


до впс еще не доросли, потому и танцы с бубном - хоть как то вытянуть производительность и иногда выскакивающую 503 ошибкуИногда - это как часто? Смените хостера.

уже сменили и перекристились )

раз 5 в день, но это нормально, ресурсов не хватает когда с новостного агрегатора на нас "идет" большой поток людей в один момент. Хостер нам добавил пулов и посоветовал кеширование.
Хостер отличный uh.ua. Прежний был hostpro.ua у них через день валилась нафик база и еще десяток моих сайтов на аккаунте падал. Месяц мучились, админы все искали причину падения)
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758655
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickskyANAпропущено...
Иногда - это как часто? Смените хостера.

уже сменили и перекристились )

раз 5 в день, но это нормально, ресурсов не хватает когда с новостного агрегатора на нас "идет" большой поток людей в один момент. Хостер нам добавил пулов и посоветовал кеширование.
Хостер отличный uh.ua. Прежний был hostpro.ua у них через день валилась нафик база и еще десяток моих сайтов на аккаунте падал. Месяц мучились, админы все искали причину падения)"большой поток людей" - это сколько запросов в секунду? Каких таких пулов вам добавил хостер? Что кэшировать-то собрались и где?
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758660
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"большой поток людей" - это сколько запросов в секунду? Каких таких пулов вам добавил хостер? Что кэшировать-то собрались и где?


Каких таких пулов вам добавил хостер?
---
так же мы увеличили число одновременных подключений к сайту, если это значение достигается то выдается 503 ошибка.


это сколько запросов в секунду?
----
проблема с новостной лентой ukr.net в том, что когда новость попадает на главную страницу портала, то у вас начинается очень резкий прирост посещаемости (пиковый) и в этот момент 503 ошибка и появляется. Если не ограничивать кол-во подключений, то может зависнуть весь сервер или сервер БД. В идеале чтобы новостная страница, которая попадает на ukr.net кешировалась полностью и выдавалась за минимальное время, в таком случае 503 ошибок можно избежать.



Что кэшировать-то собрались и где?
-----
хочу кешировать новости. Я так понимаю правильно в моем случае кешировать или на этом же сервере или на каком то стороннем CDN.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758666
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick, так сколько запросов в секунду в пике-то?
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758675
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASputnick, так сколько запросов в секунду в пике-то?

запросил у хостера инфу.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758679
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick"большой поток людей" - это сколько запросов в секунду? Каких таких пулов вам добавил хостер? Что кэшировать-то собрались и где?


Каких таких пулов вам добавил хостер?
---
так же мы увеличили число одновременных подключений к сайту, если это значение достигается то выдается 503 ошибка.Это вам хостер такое написал? На уровне IIS можно ограничить максимальное количество параллельных рабочих потоков в пуле и запросы начнут вставать в очередь, а не 503-я выдаваться.

Хостер видимо каким-то другим методом ограничил, тулзой какой-то. Зачем, не понятно.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38758683
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5 раз в день 503-я - это как-то не комильфо. Лучше тормоза из-за того, что запросы в очередь встают.
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38778438
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Кешь успешно работает на метод вешаю ([OutputCache (Duration=10), производительность повысилась на порядок, но есть неудобство, которое стало критичным, в методе показа детальной новости, у меня есть апдейт для увеличения счетчика просмотра новости..... так вот, я поставил кешь на 10 секунд, в новость зашло в течении 8 секунд 60 человек, но так как им "отдался" кешь, естественно счетчик просмотра событий как был 0, так и остался.... для новостного портала это неприемлемо.... рекламодатель там за просмотры платит....

как тут можно выкрутиться?
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38778537
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickВсем привет!

Кешь успешно работает на метод вешаю ([OutputCache (Duration=10), производительность повысилась на порядок, но есть неудобство, которое стало критичным, в методе показа детальной новости, у меня есть апдейт для увеличения счетчика просмотра новости..... так вот, я поставил кешь на 10 секунд, в новость зашло в течении 8 секунд 60 человек, но так как им "отдался" кешь, естественно счетчик просмотра событий как был 0, так и остался.... для новостного портала это неприемлемо.... рекламодатель там за просмотры платит....

как тут можно выкрутиться?У нас на сайте появился специалист по таким вопросам: 16705822 :)
...
Рейтинг: 0 / 0
Кеширование и сжатие (gzip) в ASP MVC 5
    #38778755
gandjustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick,

Выкрутиться можно так: http://habrahabr.ru/post/168869/
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кеширование и сжатие (gzip) в ASP MVC 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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