Чрезмерное количество запросов к /favicon.ico каждые несколько минут от одного пользователя.
Значительная часть запросов к моему веб-серверу за последние несколько месяцев исходила от одного пользователя, запрашивающего /favicon.ico:
# tail -n 3 access_log
XXX - - [24/Jan/2021:17:40:18 +0000] "GET /favicon.ico HTTP/1.1" 200 1845 "-" "WidgetKitExtension/3279 CFNetwork/1209 Darwin/20.2.0" "-"
XXX - - [24/Jan/2021:17:41:22 +0000] "GET /favicon.ico HTTP/1.1" 200 1845 "-" "WidgetKitExtension/3279 CFNetwork/1209 Darwin/20.2.0" "-"
XXX - - [24/Jan/2021:17:41:25 +0000] "GET /favicon.ico HTTP/1.1" 200 1845 "-" "WidgetKitExtension/3279 CFNetwork/1209 Darwin/20.2.0" "-"
(Я подверг цензуре IP-адрес.) Это законный пользователь, который время от времени запрашивает сайт (с другим пользовательским агентом и через http/2). Последний визит человека произошел несколько недель назад, но запросы /favicon.ico продолжаются с прежней скоростью, в среднем четыре раза в час, но часто каждые несколько минут или секунд, как показано выше. В частности, запросы favicon.ico не связаны с запросами к каким-либо другим ресурсам сайта. Я не знаю, актуально ли это, но значок обслуживается через https (я считаю, что соответствующих HTTP-запросов нет) и выглядит сжатым, поскольку размер favicon.ico.gz составляет 1599 байт.
При поиске я видел множество других вопросов о всевозможных странных шаблонах запросов favicon.ico, но ничего, что объясняло бы запросы favicon.ico в отсутствие обычных веб-запросов.
Что может быть причиной этих чрезмерных запросов? Я предполагаю, что это какая-то проблема с конфигурацией пользовательского агента, но есть ли какие-то изменения в конфигурации сервера, которые я могу сделать, чтобы убедить пользовательский агент кэшировать значок? Сервер использует nginx. Спасибо.
1 ответ
Очевидно, это делается с помощью «WidgetKitExtension/3279», который представляет собой своего рода набор виджетов, установленный в MacOS пользователя. Теперь основная проблема - придумать, как решить вашу проблему:
- Свяжитесь с автором Виджета и попросите его оптимизировать его, увеличив время между запросами.
- Подумайте о службе кэширования, такой как Redis, которая будет хранить файл в памяти.
Если ваш сайт размещен на Linux — файл уже должен быть закеширован, и тогда Redis вам не понадобится. Тем не менее, вы можете попробовать добавить директиву «expires» .