62
разбиение на страницы, как на форумах), если был применен метод POST. В
случае использования Nginx Plus и кэшируемых SSI блоков с сообщениями,
как было описано в разделе 1 главы 3, это возможно и реализуется
относительно просто.
Рассмотрим на примере тестового приложения. Nginx Plus является
коммерческой программой, но имеется некоммерческий модуль ngx
_cache_purge, который предлагает аналогичный функционал[26]. Для его
использования с ним необходимо скомпилировать nginx. Для простоты и
наглядности образ, на базе которого строится контейнер nginx, был заменен с
nginx:latest на emcniece/nginx-cache-purge:1.13-debian, в котором запускается
nginx с нужным нам модулем.
Структура стека приложения, по сравнению с предыдущем разделом,
не изменилась. Файл docker-compose.yml, используемый в этом разделе,
приведен в приложении 5. Для примера не создается отдельный стек, а
модифицируется уже имеющийся, так как значительных изменений не
вносится ни во что, кроме конфигурационного файла nginx.conf, текст
которого приведен в приложении 10.
Незначительный изменения потребовалось сделать в сценарии
render.php. Между 11 и 12 строками появилась строка
file_get_contents("http://nginx/purge/render.php?arg=" . $_GET['arg'] .
"&num=" . $_GET['num']);
Она означает, что после выполнения запроса POST необходимо
выполнить GET запрос к NGINX, который направит его в определенную
локацию purge и очистит кэш, определив страницу по части uri после purge.
Для хранения кэша используется каталог без уровней, в который попадают
md5 суммы от fastcgi_cache_key $uri$is_args$args.
Как можно заметить, локация @nocache убрана, теперь есть всего 4
локации:
1. Корневая локация, в которой объявлены только индексный файл и
путь, где его искать. Это нужно для того, чтобы пользователь мог