Погуглить за вас? Тратить много времени на это я точно не буду :) «быстропоиском» — вот хорошие тексты раз и два
кстати, можете там тоже минусовать, там хорошие рейтинги и у первой и у второй статьи.
Давайте только «не кривить душой». Возможность специально устроить микроперерыв конечно же есть, но вот врачебная статистика, сволочь такая, говорит обратное.
Тем не менее, если серьезно, такая проблема есть. Описана врачами, еще в прошлом веке. Рабочие работающие на конвейере, испытывают сильный стресс, в том числе, потому нет никакой возможности отвлечься. Поэтому, со временем график и распорядок работы рабочих на конвейере, стал отличаться от прочих. Более частые перерывы и прочая.
Есть хороший пример на эту тему («отнимает кусочки драгоценного внимания») — внедрение конвейера при сборке автомобилей. Отсутствие таких вот, микроперерывов в умственной деятельности, ведет к психозам и в конечном итоге к понижению КПД. Как то так…
Нет, речь не про переход на другую страницу. Именно, что переключение вкладок в браузере. Может там свою лепту вносит nginx, хотя соотв. директива по таймауту в нем прописана. proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 1200s;
Фаерфокс в моих тестах убивает (по дефолту). Это останавливает от использования на фронте. Событие покидания страницы — это понятно. Но тогда «из коробки» уже не очень получается использовать.
А насколько в продакшене веб-сокеты устойчивы к timeout и прочим потерям связи? Какие-нибудь логи и аналитика ведется по этой части?
PS: Я тоже не всегда люблю json, особенно когда его использует везде, где надо и где не надо. Иногда, для ряда задач проще сформировать простейший массив атомарных данных в своем, кастомном формате. У нас такой (достаточно большой и трудоемкий фильтр) например так и реализован.
Я пытался донести эту мысль автору после публикации им его первого топика. Программа лояльности, прежде всего нацелена на возврат покупателя раз за разом в магазин. Основная цель: генерация оборота. И с точки зрения «бизнеса», ему все равно, тот же самый это покупатель или нет. Никто не спорит, что идеальная картинка мира конечно такая, чтобы это был тот же самый покупатель. Но в реальном мире, баланс как правило не всегда в идеальной точке находится. Зато затраты (и финансовые и временные) на запуск упрощенной модели, которая сразу начинает приносить результат, значительно меньше, нежели чем идеальной модели.
Я нигде не утверждал ни того ни другого. Как прошедший аналогичную задачу на практике, ответственно заявляю, что задачи такого плана не всегда тривиальны и не всегда элементарны в своей реализации. Особенно если производительность еще важна.
Не соглашусь слегка. Это вопрос количества таких условий в фильтре и/или разных весовых коэффициентов значимости каждого условия для формирования итоговой выборки. Например, ситуация с подчиненностью одного условия другому. Мы сталкивались с реализацией такого фильтра, там не все было прям уж так однозначно.
Как верно подмечено, 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» одновременно танцующих, он выдержит на себе :) Тут скорей возникнет вопрос к ножкам/обвязке ног этого «стола»
Если не ошибаюсь — это ясень. Это не я делал, это мой приятель делает, послал все к черту, сделал себе мастерскую в подвале своего дома и создает на заказ мебель (кровати, столы, шкафчики, для ванной и тп и тд). Из остатков иногда делает мелкие вещицы, как эта например. Как оказалось, труд хорошего столяра более востребован и лучше оплачивается, нежели чем должность руководителя крупного отдела в крупном бизнесе :)
Ну тут же смысл комментария не в красоте, а в технологии изготовления столешницы. А сделать то можно хоть из бука, хоть из ясеня, хоть из дуба. Вот из кубиков (отходы) сделано например. Покрыто маслом (не вываривалось, просто покрыто, ложка лежит для понимания размеров). Устойчивое надо сказать покрытие.
раз
и два
кстати, можете там тоже минусовать, там хорошие рейтинги и у первой и у второй статьи.
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 1200s;
надо попробовать без него и без https туннеля
PS: Я тоже не всегда люблю json, особенно когда его использует везде, где надо и где не надо. Иногда, для ряда задач проще сформировать простейший массив атомарных данных в своем, кастомном формате. У нас такой (достаточно большой и трудоемкий фильтр) например так и реализован.
Вот реальный пример этой идеи из продакшена проекта средней нагруженности:
Есть ресурс, который производит некоторые трансформации над изображениями, он расположен там же, на фронтенд сервере, где и стоит собственно 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