Заметил что на хостинге, в логах сервера часто встречается 404-я ошибка при попытке получить файлы apple-touch-icon.png или apple-touch-icon-precomposed.png из корня сайта.
Виноватыми оказались apple-устройства, при посещении какого-либо сайта они обращаются к этим файлам. Возникает закономерный вопрос "Что это за файлы и зачем они нужны?"
Что такое apple-touch-icon или Web Clips
Пользователи IOS и android могут на свой рабочий стол добавлять ярлыки-иконки для сайтов, они называются Web Clips. Файлы apple-touch-icon.png и apple-touch-icon-precomposed.png как раз и предназначены для этих иконок. То есть если вы у себя на телефоне захотите добавить на главный ярлык для моего сайта, то иконка этого ярлыка будет браться из этих файлов. Если же файла нет, то android возьмет иконку из файла favicon.ico, а IOS просто сделает иконку в виде скриншота видимой на данный момент части сайта.
На android устройствах такие ярлыки добавляются так: в браузере открываете нужный сайт - кнопка меню - Добавить закладку - в поле "Добавить в" выбираем "Главный экран" и жмем ОК. Попробуйте добавить мой сайт =)
У меня apple-touch-icon выглядит вот так:
А на телефоне вот так:
Android обращается к файлу apple-touch-icon только в тот, момент, когда Вы пытаетесь добавить сайт в закладки на главный экран. А вот apple-устройства пытаются обратиться при каждом посещении страницы. При отсутствии файлов apple-touch-icon.png это влечет генерацию 404-й ошибки. Если ваш сайт более-менее посещаем, то такая ошибка будет генерироваться достаточно часто, чтобы увидеть это в отчетах о нагрузке сервера. Ведь генерация 404-й страницы создает большую нагрузку для сервера хостинга, чем просто процесс отдачи изображения.
Какой выход? Конечно скопировать в нужное место заранее подготовленные иконки, тем более это будет плюс для Вашего сайта, такие иконки на рабочем столе мобильных устройств выглядят куда более привлекательней.
Как сгенерировать apple-touch-icon
Мобильные устройства могут иметь разные размеры экранов, а значит и сами иконки могут быть разных размеров. Вот например тут в ряду "Web clip icon (recommended for web apps and websites)" можно посмотреть какие иконки нужны для ios-устройств:
developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/IconMatrix.html
Я попытался выяснить какие именно размеры иконок стоит сгенерировать, но увидел что мнения различных блогеров слишком сильно разбегаются. Потому проанализировал логи и остановился на размерах 57x57, 76x76, 114х114, 120x120, 152x152. Если же в логах замечу что будут запрашиваться еще какие-то разрешения, то и для них создам иконку.
Для генерации иконок можно использовать один из множества сервисов "apple-touch-icon generator". Мне понравился вот этот: gieson.com/Library/projects/utilities/icon_slayer :
- Находим подходящую иконку в хорошем качестве
- Загружаем на сайт через кнопку Load Image
- Указываем эффекты (градиент, блики)
- Указываем (по желанию) дополнительные разрешения: ставим галочку возле custom и через пробел печатаем необходимые разрешения
- Жмем кнопку Export Icons
На моем примере у меня имена файлов должны быть следующие:
- apple-touch-icon-152x152-precomposed.png
- apple-touch-icon-152x152.png
- apple-touch-icon-120x120-precomposed.png
- apple-touch-icon-120x120.png
- apple-touch-icon-76x76-precomposed.png
- apple-touch-icon-76x76.png
- apple-touch-icon-precomposed.png
- apple-touch-icon.png
Чаще всего рекомендуют под именами apple-touch-icon-precomposed.png и apple-touch-icon.png хранить иконки с разрешением 57x57 пикселей.
Отличия apple-touch-icon и apple-touch-icon-precomposed
apple-touch-icon-precomposed - иконки с заранее наложенными эффектами в стиле iOS с закругленными углами и тд. и тп.
apple-touch-icon - иконки без эффектов, мобильное устройство само наложит на эту иконку свои эффекты.
При посещении страницы иконки запрашиваются в следующем порядке:
- apple-touch-icon-120x120-precomposed.png - иконка с наиболее подходящим разрешением и наложенными эффектами
- apple-touch-icon-120x120.png - если нет предыдущей, то иконка с наиболее подходящим разрешением, но без эффектов
- apple-touch-icon-precomposed.png - если нет предыдущей, то иконка с наложенными эффектами
- apple-touch-icon.png - если нет предыдущей, то иконка без эффектов
Как установить на сайт иконки apple-touch-icon
Тут ничего сложного нет: их нужно загрузить в корень сайта. Самый легкий вариант, если лень генерировать иконки различных размеров, это загрузить одну иконку с именем apple-touch-icon.png, тогда Web Clips будут красиво отображаться. Но это нас не избавит от лишних 404-х ошибок, ведь устройства сначала пытаются получить файлы с нужным им разрешением.
Часто советуют еще прописать в заголовке теги такого вида:
<link rel="apple-touch-icon" href="/apple-touch-icon .png"> <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png">
Но я считаю это лишним. Ведь все будет работать и без этого. Зачем принудительно к странице подключать лишние файлы, если на устройстве пользователя они могут не понадобится (например на ноутбуке)? Лучше дать устройству самому решать что ему загружать.
Спасибо огромное. А я то думала, что это такое. Вот спасибо за подобного рода полезную информацию!!!
Спасибо за полезную статью!