The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Организация кэширования только медл..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Организация кэширования только медл..."  +/
Сообщение от auto_tips (ok) on 02-Окт-14, 16:47 
Пример организации на стороне фронтэнда кэширования контента, который начинает отдаётся бэкендом дольше, чем через 3 секунды. Запросы, которые отдаются менее, чем за 3 секунды передаются клиенту минуя кэш. Время жизни записи в кэше составляет 60 секунд. Для расчёта времени отдачи используются два блока vhost  с передачей переменной со временем задержки в заголовке X-Accel-Expires, созданной при помощи директивы "map".

   proxy_cache_path /home/tmpcache/mycache levels=1:2 keys_zone=example:10m;

   # Для запросов дольше 3 секунд устанавливаем время жизни записи в кэше в 60 секунд, иначе 0 (отдаём минуя кэш).
   map $request_time $longtime {
       "~^([3-9]|[1-9][0-9]+)\." 60;
       default 0;    
   }

   server {
       listen 127.0.0.1:8888;
       root /var/www/;
       server_name example.com;
       location / {
           proxy_redirect          off;
           proxy_set_header        Host $host;
           proxy_pass              http://mybackend;
           add_header X-Accel-Expires $longtime;
       }
   }

   server {
       listen 8080;
       root /var/www/;
       server_name example.com;
       location / {
           proxy_redirect          off;
           proxy_set_header        Host $host;
           proxy_pass              http://127.0.0.1:8888;
           proxy_cache             example;
           proxy_cache_valid       200 0m;
           add_header X-Cached $upstream_cache_status;
           add_header X-Time $request_time;
        }
   }


Проверка:

   # curl -I "http://example.com:8080/mylongrequest"

   ...
   X-Cached: MISS
   X-Time: 11.862

повторный запрос будет выдан из кэша:

   # curl -I "http://example.com:8080/mylongrequest"
   ...
   X-Cached: HIT
   X-Time: 0.000


URL: http://blog.alteroot.org/articles/2014-10-01/nginx-cache-bas...
Обсуждается: http://www.opennet.me/tips/info/2857.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Организация кэширования только медленных ответов сервера при..."  +/
Сообщение от pavlinux (ok) on 02-Окт-14, 16:47 
Кэш придумали для упрощения (ускорения) доступа к часто использованным данным.
Тут предлагают замедлять тех, кто быстрый и ускорять тормозов.

Теперь я понимаю, откуда столько новых сайтов, с временем загрузки до 30 сек,
буквально на ровном месте. :)

Задача сервера какая? Всех выровнять по скорости иль всё ж отдать контент как можно быстрее?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Организация кэширования только медленных ответов сервера при..."  +/
Сообщение от Crazy Alex (ok) on 02-Окт-14, 19:43 
Как по мне - удобный _дешевый_ способ ускорить отдачу, не забивая без надобности и не выискивая руками, что именно тормозит.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Организация кэширования только медленных ответов сервера при..."  +/
Сообщение от Аноним (??) on 02-Окт-14, 20:33 
Ты чего, каркуша? Оно как раз ускоряет то что тормозит. Правда, такой подход к кэшированию достаточно безбашенный и может больно укатать ручкой грабель в лоб, закэшировав лишку.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Организация кэширования только медленных ответов сервера при..."  +/
Сообщение от pavlinux (ok) on 03-Окт-14, 04:48 
>Оно как раз ускоряет то что тормозит.

Ты какой местой читаешь?

> "... предлагают замедлять тех, кто быстрый и ускорять тормозов."

Ну и второе: Если контент и так в кэше, из-за медленных, то нафига другим формировать заново?!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Организация кэширования только медленных ответов сервера при..."  +/
Сообщение от Аноним (??) on 06-Окт-14, 06:40 
Ты чего-то не понял: этот "хакир" детектирует запросы которые бэкэнд жевал более чем X и такие запросы попадают в кэш, разгружая бэкэнд. Скорость клиентов тут вообще не при чем - я так понимаю что пытаются замерять время отработки бэкэндом, для чего сгорожен хак с проксированием сначала сам на себя а потом на бэкэнд.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Раздел полезных советов: Организация кэширования только медл..."  +1 +/
Сообщение от _ (??) on 07-Окт-14, 07:35 
Почему нельзя вообще все отдавать из кэша, разгрузив тем самым бэкэнд?
Если ответ содержит данные можно кэшировать, давайте кэшировать все. Бэкэнд скажет только спасибо.
Если ответ содержит данные, которые нельзя кэшировать (данные аккаунта), то тогда их и при залипании ответа кэшировать нельзя.
Какая прикладная задача тут решается?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Раздел полезных советов: Организация кэширования только медл..."  +/
Сообщение от edwin3d email(ok) on 08-Окт-14, 11:20 
Можно предположить, что в самом приложении (к примеру генерирует аналитику) есть участки, которые работают "тяжко".
Вот Вам так сказать пример:
У меня были похожая ситуация, когда давно было одно приложение, так там были графики, которые рисовались по 7-8 сек (графики были сложные).
Аналогично было с экспортом некоторых данных ...
Короче - решение интересное, применимо не везде, но с умом может принести много пользы
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру