Есть определённый AJAX-запрос, который клиенты могут выполнять к серверу любое количество раз. Хочу это исправить и снять немного нагрузку с сервера при помощи клиентского кэша. Маршрут таков: клиент - nginx - express. На стороне express я настроил выдачу ответа клиенту с заголовком Cache-Control
:
if(apiRes.hasOwnProperty('cacheTime')) {
res.set('Cache-Control', `public,max-age=${apiRes.cacheTime}`)
}
Теперь в запросе к серверу я получаю первый раз код 200
, а при повторных запросах 304 Not Midified
. Но при этом сервер всё равно продолжает принимать запросы и обрабатывать их. Почему браузер не сохраняет в своём кэше ответы от моего сервера и всё равно продолжает слать к нему запросы?
Браузеры так устроены что они пытаются проверить все ссылки если вы явно обновляете страницу через F5 или кнопкой. Кеширование будет работать если вы будете ходить со страницы на страницу, не через кнопку обновления а, например, по ссылкам.
Если хочется большего, можно порекомендовать настроить прозрачное кеширование в nginx. Таким образом даже если человек будет обновлять страницу, ваш сервер Express не будет задействован.
Требуется реализовать юзабельное генеалогическое дерево родители/дети (фамилия, имя, отчество) работающее в браузере ПК (мобильный размер...
Есть картинка, хочу определить на ней преобладающий цветИли как это сделано у яндекс