Не соглашусь слегка. Это вопрос количества таких условий в фильтре и/или разных весовых коэффициентов значимости каждого условия для формирования итоговой выборки. Например, ситуация с подчиненностью одного условия другому. Мы сталкивались с реализацией такого фильтра, там не все было прям уж так однозначно.
Как верно подмечено, nginx хранит кеш в виде файлов. И тот же самый nginx точно также быстро отдает простые статические файлы. Поэтому, есть достаточно простой вариант, как обойтись без кеширования nginx. Ну или хотя бы частично.
Вот реальный пример этой идеи из продакшена проекта средней нагруженности:
Есть ресурс, который производит некоторые трансформации над изображениями, он расположен там же, на фронтенд сервере, где и стоит собственно nginx.
Приходит get запрос на отдачу картинки, nginx проксирует его к этому небольшому быстрому бекенду, в заголовки запроса он включает заголовок:
proxy_set_header X-IMAGE-CACHE-EXPIRY 31d; # s - sec, m - minute, h - hour, d - day
Бекенд проверяет время модификации файла, определяет актуальность ранее созданного файла на основе этого заголовка и отдает nginx-у либо 304, либо делает трансформацию и сохраняет свежий результат в файл с тем же именем. Nginx соотвественно, либо отдает 304, либо берет этот свежий файл и отдает его.
Теперь, если нам надо сбросить наш кеш для этой конкретной разновидности картинки, мы передаем этот header со значением "-1", либо если нужно сбросить весь кеш ставим в конфиге "-1", делаем рестарт nginx и ждем 5...10...15 минут. Точно также можно удалить весь наш локальный кеш, не останавливая nginx.
Методология хранения файлов в кеше самая простая, делаем MD5 из полного урла со всеми get параметрами, и создаем структуру хранения наших файлов:
Вы даже не представляете себе, сколько танцовщиц из бара «Coyote Ugly» одновременно танцующих, он выдержит на себе :) Тут скорей возникнет вопрос к ножкам/обвязке ног этого «стола»
Если не ошибаюсь — это ясень. Это не я делал, это мой приятель делает, послал все к черту, сделал себе мастерскую в подвале своего дома и создает на заказ мебель (кровати, столы, шкафчики, для ванной и тп и тд). Из остатков иногда делает мелкие вещицы, как эта например. Как оказалось, труд хорошего столяра более востребован и лучше оплачивается, нежели чем должность руководителя крупного отдела в крупном бизнесе :)
Ну тут же смысл комментария не в красоте, а в технологии изготовления столешницы. А сделать то можно хоть из бука, хоть из ясеня, хоть из дуба. Вот из кубиков (отходы) сделано например. Покрыто маслом (не вываривалось, просто покрыто, ложка лежит для понимания размеров). Устойчивое надо сказать покрытие.
Вот реальный пример этой идеи из продакшена проекта средней нагруженности:
Есть ресурс, который производит некоторые трансформации над изображениями, он расположен там же, на фронтенд сервере, где и стоит собственно nginx.
Приходит get запрос на отдачу картинки, nginx проксирует его к этому небольшому быстрому бекенду, в заголовки запроса он включает заголовок:
proxy_set_header X-IMAGE-CACHE-EXPIRY 31d; # s - sec, m - minute, h - hour, d - day
Бекенд проверяет время модификации файла, определяет актуальность ранее созданного файла на основе этого заголовка и отдает nginx-у либо 304, либо делает трансформацию и сохраняет свежий результат в файл с тем же именем. Nginx соотвественно, либо отдает 304, либо берет этот свежий файл и отдает его.
Теперь, если нам надо сбросить наш кеш для этой конкретной разновидности картинки, мы передаем этот header со значением "-1", либо если нужно сбросить весь кеш ставим в конфиге "-1", делаем рестарт nginx и ждем 5...10...15 минут. Точно также можно удалить весь наш локальный кеш, не останавливая nginx.
Методология хранения файлов в кеше самая простая, делаем MD5 из полного урла со всеми get параметрами, и создаем структуру хранения наших файлов:
/ab/cd/abcdxxxxxxxxxxxxxxxx
ну и у доминошек однозначно больше площадь чем у шкантов, при том же количестве.
можно делать хоть из сосны, вот это например из старых поддонов делалось