- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Не работает кеширование SSI в nginx.
Получаю ошибку:
Сделал специально простой конфиг:
Файл test.php:
Файл инклуда:
В браузере выглядит так:
Пробовал с proxy_pass и простыми html-ками - тоже самое (дело не в fastsgi бекэнде)
Файл кеша создается:
С выключенным кешем работает.
izbushka, закэшируйте отдельный локейшен, который будет делать запросы к бэкенду.
V2NEK, Всмысле?
У меня все запросы к бекенду..
И мне надо кешировать и саму страницу и ее инклуды, на разное время
izbushka, выделите для ssi отдельный локейшен, который будет получать данные у cgi, и его кэшируйте, а обработку cgi вынестите тоже в отдельный локейшен. Соответственно если кэш живой - отдавать из кэша, кэша нет или он истек - запрашивать у cgi. Стандартный метод кэширования.
ps. Хороший сервис делаете, привет соседям (:
Да, так работает, но проблема опять появляется когда использую многоуровневые ssi вложения: т.е. включаю ssi внутри ssi.
Что можно сделать в этом случае? Плодить locations? Становится неудобно следить за тем, как именно надо подключать ssi в конкретном месте, чтоб он попал в другой location.
izbushka, скорее всего ssi внутри ssi и не будет отрабатывать, тк это статические данные и, попав в кэш, они больше не будут как-либо обрабатываться. Тут придется менять уже структуру ресурса.
Нагуглил следующее:
достаётся из кеша по ключу, содержащему только $request_uri -
оригинальный uri полученный от клиента, т.е. в данном случае
/test3.php. В результате имеем бесконечный рекурсивный ssi.
Защиты от рекурсии в ssi сейчас нет.
Предлагают юзать $uri вместо $request_uri как ключ кеша, но у меня пока не работает (гуглю).
By using $uri instead of $request_uri nginx will respect rewrites and ssi requests thus caching and fetching via appropriate namespaces (in this case the app's defined ssi routes).
Простой вариант, даже не требующий отдельного location для ssi, это включать SSI с GET параметром, указывающим на уровень его вложенности (level=N) и добавить $query_string в ключ кеша.
Читаю дальше, спасибо за наводку, в любом случае