Welcome! Log In Create A New Profile

Advanced

Кэширование заросов к бд через nginx

Posted by regdomain 
Кэширование заросов к бд через nginx
September 16, 2011 02:46PM
Сам я не являюсь специалистом по серверам, понимание поверхностное, так что не судите строго идею.

Как я понимаю принцип работы нгинкса с динамическим сайотм - запрос обрабатывается нгинкосм, обращается к пхп , тот обращается в бд, генерируется страница. упрощенно.

Броузер по сути получает хтмл код + цсс+ скрипты и отображает пользователю страницу. Знаю, что у нгинкса есть своя функция кэширования, откуда он может выдавать страницы не обращаясь ни к пхп ни ,ни к бд. Там хтмл образ?

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

Результат- на нагруженном сервер мы отдаем вместо главных динамических страниц - хтмл ускоряя работу сервера в 1000 раз.

можно ли такое реализовать?
Re: Кэширование заросов к бд через nginx
September 19, 2011 10:08AM
Почитайте про фукнцию кэширования ответов вышестоящего веб-сервера (зачастую Apache).
http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_cache
http://wiki.nginx.org/HttpProxyModule#proxy_cache

У себя настраивал так.
В секции server основного конфига nginx.conf описываем кэш:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=upstream_cache_zone:10m max_size=300m; # upstream_cache_zone - имя зоны, путь к хранилищу кэша (/var/cache/nginx) может быть любой удобный
proxy_cache_valid 200 302 5m; # ответы с HTTP кодами 200 (OK) и 302 (Found) кэшируем на 5 минут
proxy_cache_valid 301 1h; # ответы с HTTP кодом 301 (Moved Permanently) кэшируем на 1 час
proxy_cache_valid any 1m; # все остальные ответы - на 1 минуту
proxy_cache_methods GET HEAD; # методы кэшируюемых запросов
proxy_cache_key "$host$request_method$request_uri$cookie_PHPSESSID"; # уникальный ключ для страниц в хранилище кэша, внимательнее отнесетись к его составлению, особенно если сайт предполагает авторизацию/аутентификацию (в моём случае пользовательские сессии различаются по куки с именем PHPSESSID)
proxy_cache_bypass $http_pragma $http_authorization; # не кэшируем в случае наличия заголовков Pragma (обычно задаёт отключение кэширования) или при наличии HTTP авторизации
proxy_cache_min_uses 1; # ответы вышестоящего веб-сервера попадают в кэш после первого же запроса

В нужной секции server (весь виртуальный хост) или любом конкретном location прописываем директиву proxy_cache с именем ранее описанной зоны:
proxy_cache upstream_cache_zone;
Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 287
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready