- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Цель - кешировать картинки на фронт-энде на час, но, если бек-энд не доступен - то сойдёт и протухший.
И всё почти получилось, но бек-энд доступен и файла запрашиваемого там нет, а отдаётся всё равно из кеша.
Даже если закоментировать proxy_cache_use_stale (равно как и указать другие параметры) - всё равно отдаёт из кеша.
Это хорошо и полезно, если бек-энд упал. Но, если он работает - хотелось бы отдавать клиенту 404 хотя бы по истечении proxy_cache_valid
Где ошибка, что я делаю не так?
Может, в первой директиве все же не any, а 200?
Если я правильно понял - уберите для начала
inactive=7d
А вообще, вам нужно контролируемое кэширование настраивать.
1) proxy_cache_valid any 1h; # Отдавать с кеша в течении часа любой код ответа
Т.е. оно в кеш положило и в течении часа к бекенду не будет обращаться (соответственно nginx и не знает что файла уже нет на бекенде)
2) Как выше сказал lonelywoolf inactive стоит уменьшить, ибо у Вас будет папка засоряться мусором, который никогда не будет отаваться с кеша (из-за низкого proxy_cache_valid any 1h; )
Может, в первой директиве все же не any, а 200?
Совсем нелогично.
А вообще, вам нужно контролируемое кэширование настраивать.
Что тут контролировать? Это кеширующий реверс-прокси для раздачи статики (1 домен, 1 бекенд, все файлы равноприоритетны), тут всё просто по идее д.б.
1) proxy_cache_valid any 1h; # Отдавать с кеша в течении часа любой код ответа
Т.е. оно в кеш положило и в течении часа к бекенду не будет обращаться (соответственно nginx и не знает что файла уже нет на бекенде)
Это понятно. Но совсем непонятно, почему через сутки так и отдаётся из кеша, хотя указано кешировать на час! На бекенд даже запросов никаких не отправляется.
Как выше сказал lonelywoolf inactive стоит уменьшить, ибо у Вас будет папка засоряться мусором, который никогда не будет отаваться с кеша (из-за низкого proxy_cache_valid any 1h; )
Да пусть забивается, гиг места там можно позволить и эта машина больше ничем не занимается. Такой большой кеш нужен на случай, если бекэнд недоступен (он совсем не рядом и не в самом "правильном" месте)
Если уменьшать inactive - то появятся ошибки для клиентов при истечению этого времени, если недоступен бекенд. Это большее зло и цель этого прокси именно избавиться от этого.
---------- Добавлено 20.01.2020 в 11:45 ----------
Тут дело, как я понимаю, в диррективе proxy_cache_use_stale. Но что именно - не очень понятно, у Сысоева как-то очень туманно написано по этому поводу... Или я дурак и не понимаю ))
Не обратил внимание, что вопрос о статике, тогда я думаю всё гораздо проще.
Запрос не доходит и до nginx, так как ответ закешировался в браузере
Какой-нибудь expires max;
Не, браузерного кеширования нет, везде проверил, включая Тор-браузер. И в конфиге сервера всё просто и прозрачно, нет там никаких expires max
Сейчас провёл эксперимент:
1. Создал на бекенде файл, открыл в браузере - 200 ОК
2. Через час с небольшим остановил бекенд - 200 ОК
3. Удалил файл, запустил бекенд - 404.
Вроде всё, как задумано...
Но вчерашний удалённый файл - до сих пор 200 ОК, думаю - пропадёт позже, вчера и proxy_cache_valid больше стояло.
Я склоняюсь к мысли, что параметры кеша хранятся в самом кеше и действуют те настройки, который были в момент кеширования, а не текущие. Но это не точно, еще поковыряю, очень интересно!
Текущий конфиг:
Но вчерашний удалённый файл - до сих пор 200 ОК, думаю - пропадёт позже, вчера и proxy_cache_valid больше стояло.
А если "вчерашний удалённый файл" открыть в приватном окне браузера?..
ivan-lev, всё равно до сих пор отдаётся )) Я в курсе про такие вещи, потому всегда в Тор-браузере проверяю, со "сменой личности". Там точно никаких кешей: ни браузерных, ни даже провайдерских по пути.
Да и в логе фронтэнда запрос есть и ответ - 200. А на бекенде даже запросов нет (как и файла)
А почему его нет? Удалили?
Ну раз удалили - то удаляйте и из кеша.
В этом и есть суть кэша.
В любой CMS при изменении страницы, надо очищать кэш. А по вашей логики кэш должен ещё и долбить каждый раз основной файл.
Также, в чём ВООБЩЕ суть у вас кэширования статики? Эти файлы генерируются что-ли?