Задать вопрос
@4upik

Как кешировать динамические данные в NGINX получаемые по API?

Есть интернет магазин, товары на сайте отображаются напрямую с API поставщика, включая фото товаров.

Проблема: скорость предоставления данных конечному пользователю, т.к. запрос проходит от пользователя к нашему серверу- с нашего сервера - на сервер поставщика и обратным путем уже конечному пользователю.
Также проблема с изображениями, сервер поставщика находится в другой стране.

1. Как можно кешировать (в файлах) описание товара и фото товаров, но не кешировать цену и отображать ее без кеша?
2. Можно ли кешировать на уровне nginx в бд(mariadb) ? или лучше файлами?
(Перенести все данные из api в бд - пока возможности нет)
  • Вопрос задан
  • 118 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@Nc_Soft
Можно закешировать страницу целиком в nginx , но цену забирать тогда придется скриптом через аякс.
Ответ написан
romesses
@romesses
Backend инженер
Насколько я понимаю, вы не можете закэшировать, не включая цену поставщика, поскольку это модификация контента. А кэширование - примитивный механизм.
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
С изображениями легче всего: вы можете просто их кешировать, nginx может выступать как кеш-прокси.
Т.е. ссылаетесь на nginx, тот уже идет к себе на диск - если картинки нет (или она просрочена), то идет к поставщику.

По сути с ценой тоже самое можно сделать только на файлах.
Для получения цены вы обращаетесь к текстовому файлу, если он не просрочен -- nginx его отдает, если просрочен -- то nginx обращается к вашему скрипты, который выдерает цену откуда надо и отдает её в виде простого текста.
Ответ написан
Комментировать
@ProFfeSsoRr
Сис.админ по Linux
Есть SSI (можно им кэшировать всё, кроме блока страницы с ценой): https://habr.com/ru/post/428127/ Либо через JS цену выводить, либо как-то еще. По второму вопросу - nginx кэширует в файлы и это лучше, в БД не умеет и не надо это. Кэшировать изображения вообще не проблема, это типичный для nginx кейс ("кэширование статики" он называется, есть много разных вариантов).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы