Отсутствует директория workbox в public/javascript?

Привет,

когда я искал причину странных сбоев, которые мы наблюдаем на наших форумах, я также проверил логи nginx внутри контейнера приложения. Я давно не смотрел их, поэтому не могу сказать, существуют ли эти ошибки уже давно, но я вижу сообщения об ошибках, связанных с отсутствующими файлами JavaScript в каталоге, которого вообще нет в моей установке.

"/var/www/discourse/public/javascripts/workbox/workbox-core.prod.js" 
"/var/www/discourse/public/javascripts/workbox/workbox-cacheable-response.prod.js" 
"/var/www/discourse/public/javascripts/workbox/workbox-routing.prod.js" 
"/var/www/discourse/public/javascripts/workbox/workbox-strategies.prod.js" 
"/var/www/discourse/public/javascripts/workbox/workbox-sw.js"

Это лишь несколько примеров. Я также не смог найти их на GitHub и задаюсь вопросом, что вызывает эти проблемы. Мне было бы спокойнее, если бы логи ошибок не были забиты подобными сообщениями :slight_smile:

Есть какие-нибудь идеи?

РЕДАКТИРОВАНИЕ: Кстати, я использую версию 3.2.0.beta1, и я также вижу эти отсутствующие файлы в консоли браузера…

Похоже, Workbox связана с кэшированием, насколько я понимаю.

Как давно вы обновились? Возможно, есть какая-то ошибка, но, думаю, нам потребуется больше информации.

Я обновил это только за день до публикации.

Судя по моим исследованиям, Workbox связан с PWA и работает в браузерах Chrome/Chromium.

Какая ещё информация вам нужна?

Мы всё ещё сталкиваемся с этим спустя 9 месяцев, и я до сих пор не могу найти о нём много информации. Не уверен, либо никто не смотрит логи ошибок nginx, либо всем всё равно.

Есть ли у кого-то идея, что происходит, и может ли это вызвать проблемы?

Я пытаюсь разобраться с проблемами 520/429, которые, кажется, не связаны напрямую с этим, но меня всё равно беспокоит, что эти ошибки появляются снова и снова. Может ли это быть связано с Cloudflare, который всё ещё пытается загрузить старые файлы из предыдущих сборок? Или с кэшем браузера?

Учитывая, что workbox был удалён как зависимость 2 месяца назад, и эта проблема не затрагивает актуальные сайты, рекомендую обновить ваш сайт.

У меня версия 3.3.0beta2 — я не думаю, что мне есть что обновлять.

Вы не одни, @helmi.
У меня тоже возникли проблемы при переходе с 3.2.5 на 3.3.0 (массовые ошибки 502, 429 и т. д.), и мне пришлось откатиться обратно до 3.2.5.

Недавно я снова попробовал обновиться до 3.3.1, надеясь, что ситуация улучшится. В каком-то смысле стало лучше… но лишь тем, что у всех пользователей теперь сплошные ошибки 502.

Решил рискнуть и довериться статусу test-passed, теперь я на версии 3.4.0.beta3-dev ( 2099c33fa7 ), и вот что периодически выводится в логах ошибок nginx:

2024/10/08 21:44:15 [error] 79#79: *16810 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.prod.js" failed (2: No such file or directory), client: 70.79.108.71, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.prod.js HTTP/2.0", host: "netgamers.it", referrer: "https://netgamers.it/service-worker.js"
2024/10/08 21:45:22 [error] 75#75: *17175 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.prod.js" failed (2: No such file or directory), client: 216.128.26.206, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.prod.js HTTP/2.0", host: "netgamers.it", referrer: "https://netgamers.it/service-worker.js"
2024/10/08 21:47:50 [error] 74#74: *17968 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.prod.js" failed (2: No such file or directory), client: 77.208.167.253, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-core.prod.js HTTP/2.0", host: "netgamers.it", referrer: ""
2024/10/08 21:47:51 [error] 74#74: *17981 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-cacheable-response.prod.js" failed (2: No such file or directory), client: 77.208.167.253, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-cacheable-response.prod.js HTTP/2.0", host: "netgamers.it", referrer: ""
2024/10/08 21:47:51 [error] 74#74: *17982 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-sw.js" failed (2: No such file or directory), client: 77.208.167.253, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-sw.js HTTP/2.0", host: "netgamers.it", referrer: ""
2024/10/08 21:47:51 [error] 74#74: *17983 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-expiration.prod.js" failed (2: No such file or directory), client: 77.208.167.253, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-expiration.prod.js HTTP/2.0", host: "netgamers.it", referrer: ""
2024/10/08 21:47:51 [error] 77#77: *17984 open() "/var/www/discourse/public/assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.prod.js" failed (2: No such file or directory), client: 77.208.167.253, server: _, request: "GET /assets/workbox-9b5674ca0ecb89bae1fa6f4b09a18f12/workbox-routing.prod.js HTTP/2.0", host: "netgamers.it", referrer: ""

До сих пор неясно, что вызывает ошибки 502, хотя ВМ имеет 8 ядер, 32 ГБ ОЗУ и NVMe-диск на 500 ГБ.
Мы выбрали мощную ВМ, так как в нашем сообществе около 450 активных пользователей, 585 тысяч тем и 21,5 миллиона сообщений.

Похоже, что у нас в установке тоже есть эта проблема — с момента обновления с версии 3.2.x до 3.3.x у нас периодически возникают ошибки 502 при отправке сообщений, последние темы не обновляются и наблюдаются аналогичные проблемы.

Кажется, что каждые x часов (не уверен в точном времени) какой-то фоновый скрипт выдаёт ошибку и вызывает эти проблемы.

редактирование: я не заметил, что наш техподдержчик уже написал :sweat_smile: то, что он сказал

Каждые несколько часов мы получаем похожую волну ошибок:

2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-core.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-core.prod.js HTTP/1.1", host: "XXXX"
2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-routing.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-routing.prod.js HTTP/1.1", host: "XXXX"
2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-expiration.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-expiration.prod.js HTTP/1.1", host: "XXXX"
2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-sw.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-sw.js HTTP/1.1", host: "XXXX"
2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-cacheable-response.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-cacheable-response.prod.js HTTP/1.1", host: "XXXX"
2025/05/19 16:48:10 [error] 63#63: *1738520 open() "/var/www/discourse/public/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-strategies.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/assets/workbox-77b0e3e0dd4773bcd6c7e74f302f7c69/workbox-strategies.prod.js HTTP/1.1", host: "XXXX"

В данном случае речь идёт о public/assets, но у нас также есть записи в логах для public/javascript:

2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-sw.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-sw.js HTTP/1.1", host: "XXXX"
2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-routing.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-routing.prod.js HTTP/1.1", host: "XXXX"
2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-cacheable-response.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-cacheable-response.prod.js HTTP/1.1", host: "XXXX"
2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-strategies.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-strategies.prod.js HTTP/1.1", host: "XXXX"
2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-core.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-core.prod.js HTTP/1.1", host: "XXXX"
2025/05/12 18:00:39 [error] 78023#78023: *701261 open() "/var/www/discourse/public/javascripts/workbox/workbox-expiration.prod.js" failed (2: No such file or directory), client: unix:, server: _, request: "GET /forum/javascripts/workbox/workbox-expiration.prod.js HTTP/1.

Менялся ли путь с какой-либо версией? Вероятно, это происходит, когда кэш браузера не очищается должным образом, соответственно, ассеты не инвалидируются. Или, что более вероятно, это какие-то глупые боты, которые продолжают сканировать ресурсы, которые они когда-то нашли. Я имею в виду, что между двумя такими наборами логов у нас тысячи посетителей и десятки авторов постов, поэтому это не похоже на общую проблему.

В нашем случае доступ осуществляется через прокси вне контейнера и UNIX-сокет, поэтому видимых IP-адресов клиентов для проверки нет. Для 77.208.167.253 я не смог найти никакой релевантной информации о том, является ли это ботом или нет.

Какую версию вы используете?

3.5.0.beta5-dev, который больше не обслуживает эти файлы, и актуальный фронтенд больше не запрашивает их. Как уже говорилось, это либо устаревший кэш/фронтенд (что в случае с динамическими HTML-документами обычно не должно происходить), либо боты; в любом случае проблема на стороне клиента.