Лимиты на загрузку картинок в WordPress
Большинство советов рекомендуют редактировать php.ini. На виртуальном хостинге это часто невозможно. Предварительное сжатие изображений работает везде.
Сжатие изображения ниже установленного лимита вместо увеличения самого лимита решает сразу две проблемы: ошибку загрузки и медленную скорость загрузки страницы. WordPress наследует свои ограничения из настроек PHP (обычно это 2 MB или 8 MB в зависимости от хостинга), и на управляемом или виртуальном хостинге изменить этот параметр зачастую невозможно.
Почти в каждой статье на эту тему советуют редактировать файлы php.ini, .htaccess или wp-config.php. Эти инструкции предполагают наличие доступа к серверу, которого у большинства владельцев сайтов просто нет. Но даже если такой доступ имеется, стоит задуматься, является ли увеличение лимита правильным решением.
Откуда берется это ограничение
Лимит определяется тремя параметрами PHP, и в силу вступает наименьший из них. WordPress отображает итоговое значение прямо под областью загрузки файлов, поэтому эта цифра часто отличается от той, которую заявляет хостинг-провайдер.
- upload_max_filesize определяет максимальный размер одного файла, который примет PHP.
- post_max_size контролирует общий размер отправляемых данных, поэтому этот параметр должен быть больше размера файла.
- memory_limit задает объем оперативной памяти, который может использовать процесс изменения размера при создании миниатюр.
- max_execution_time также может приводить к сбоям, так как обработка тяжелого изображения может прерваться по таймауту до ее завершения.
Третий параметр часто становится причиной самых непонятных сбоев. Файл может успешно загрузиться на сервер, но процесс генерации миниатюр в WordPress прервется из-за нехватки памяти. В результате в медиабиблиотеке появится «битое» изображение вместо сообщения об ошибке загрузки.
Почему сжатие лучше увеличения лимита
Фотография размером 6 MB на веб-странице — это проблема в любом случае, независимо от того, принимает ее сервер или нет. Увеличение лимита лишь убирает сообщение об ошибке, оставляя проблему избыточного веса страниц нерешенной.
WordPress создает несколько копий разного размера для каждого загруженного файла. Таким образом, один тяжелый оригинал превращается в целую группу тяжелых миниатюр, которые быстро забивают дисковое пространство сервера. Сжатие изображения до нескольких сотен килобайт перед загрузкой решает ошибку, уменьшает размер создаваемых миниатюр, ускоряет создание резервных копий и не требует никакого доступа к настройкам сервера.
Как уложиться в лимит
Чтобы успешно загружать файлы без изменения настроек сервера, выполните следующие 5 шагов.
- Посмотрите лимит, указанный под областью загрузки в WordPress — там отображается реальное значение для вашего хостинга.
- Измените разрешение изображения до ширины его отображения на сайте (умноженной на два для экранов высокой четкости), так как фотография шириной 4000 пикселей в колонке шириной 800 пикселей — это пустая трата ресурсов.
- Конвертируйте в WebP фотографии и графику, которые будут использоваться только на страницах сайта.
- Сжимайте файлы, ориентируясь на целевой размер от 200 KB до 400 KB — этого достаточно практически для любого изображения внутри статьи.
- Загрузите файл и убедитесь, что изображение корректно отображается во всю ширину как на компьютерах, так и на мобильных устройствах.
Выполнение этих шагов обычно позволяет уменьшить размер файла на 90 процентов по сравнению с оригиналом из камеры без видимой потери качества на экране. Исправление ошибки загрузки при этом становится приятным побочным эффектом, а не главной целью.
Рекомендуемые размеры для контента в WordPress
Подгоняйте ширину изображения под максимальную ширину области контента в вашей теме оформления, а затем удваивайте ее для экранов высокой четкости. Большинство областей контента гораздо уже, чем думают владельцы сайтов.
| Использование изображения | Ширина на экране | Ширина для загрузки | Целевой размер |
|---|---|---|---|
| Изображение в статье | 700 px | 1400 px | от 150 KB до 250 KB |
| Полноширинный баннер | 1200 px | 2400 px | от 300 KB до 500 KB |
| Главный баннер (Hero) | 1920 px | 1920 px | от 300 KB до 400 KB |
| Миниатюра или карточка | 400 px | 800 px | от 50 KB до 100 KB |
| Фото автора или профиля | 150 px | 300 px | Менее 30 KB |
Когда увеличение лимита действительно необходимо
Увеличивайте лимит только тогда, когда вам действительно нужно загружать файлы большого размера, которые должны оставаться таковыми: например, фотографии для печати высокого разрешения, видео или архивы с темами оформления. Такие ситуации реальны, но они являются исключением из правил.
Фотографу, публикующему галереи в высоком разрешении, интернет-магазину, импортирующему тяжелый плагин, или сайту с PDF-документами для скачивания действительно нужен запас по размеру файлов. Блогеру, чье фото из отпуска будет отображаться шириной 700 пикселей, это не требуется. Всегда думайте о назначении файла перед изменением настроек сервера, ведь в большинстве случаев правильным решением окажется обычное сжатие.
Как увеличить лимит, если это необходимо
В первую очередь обратитесь в поддержку хостинга, так как большинство провайдеров управляемого хостинга меняют эти значения по запросу за пару минут. На любом тарифе с ограниченным доступом к файлам обращение в поддержку решит проблему быстрее, чем самостоятельное редактирование конфигурационных файлов.
- Управляемые WordPress-хостинги обычно позволяют изменить эту настройку в панели управления или делают это по первому запросу.
- Хостинги с cPanel часто предлагают инструмент MultiPHP INI Editor, где все 3 значения можно задать напрямую.
- Виртуальные приватные серверы (VPS) позволяют напрямую редактировать файл php.ini, после чего необходимо перезапустить службу PHP.
- Редактирование .htaccess работает на некоторых конфигурациях Apache, но на других может вызвать критическую ошибку сервера, поэтому всегда делайте резервную копию.
- Плагины, обещающие увеличить лимит, не могут прыгнуть выше ограничений самого сервера, что бы ни было написано в их описании.
Ошибка HTTP, которая не связана с размером
Общая ошибка HTTP при загрузке обычно означает, что во время генерации миниатюр в WordPress закончилась оперативная память или время выполнения скрипта, а не то, что файл был отклонен из-за его веса. Понимание этого различия важно, поскольку предварительное сжатие решает обе проблемы.
Расход памяти зависит в первую очередь от физического разрешения изображения (в пикселях), а не от веса файла на диске, так как сервер должен удерживать в памяти каждый пиксель при масштабировании. Изображение размером 6000 на 4000 пикселей требует гораздо больше оперативной памяти, чем можно предположить по его весу. Уменьшение разрешения перед загрузкой устраняет эту ошибку, даже если исходный файл укладывался в лимит по размеру.
Какие размеры миниатюр создает WordPress
WordPress создает как минимум 4 дополнительные копии для каждого загруженного изображения, а темы и плагины часто добавляют к этому списку свои варианты. Одно загруженное фото может превратиться в 8 или 10 файлов на диске без ведома владельца сайта.
По умолчанию создаются: миниатюра (150х150 px), средний размер (300 px), средний крупный (768 px) и крупный (1024 px), а также масштабированная версия, которую WordPress создает для очень больших оригиналов. Конструкторы страниц и плагины галерей регистрируют свои собственные размеры поверх этого списка. Загрузка оптимизированного оригинала означает, что и все созданные копии будут весить меньше, поэтому эффект от сжатия перед загрузкой масштабируется на всю медиабиблиотеку.
Поддержка WebP в WordPress
WordPress поддерживает загрузку WebP начиная с версии 5.8, и все современные браузеры отлично отображают этот формат. Прямая загрузка WebP избавляет от необходимости устанавливать плагины для конвертации, которые многие сайты используют именно для этой цели.
Однако стоит помнить о двух нюансах. Некоторые старые темы и конструкторы страниц рассчитаны только на JPG или PNG и могут некорректно создавать миниатюры для WebP, поэтому сделайте тестовую загрузку перед конвертацией всей библиотеки. Изображения, предназначенные для скачивания посетителями (например, пресс-киты или руководства для печати), лучше оставить в формате JPG, так как WebP все еще не очень удобен для использования вне браузеров.
Как проверить вес изображений на работающей странице
Откройте инструменты разработчика клавишей F12, перейдите на вкладку Network (Сеть), выберите фильтр по изображениям (Img) и обновите страницу. В списке отобразятся все картинки с их реальным размером при передаче, отсортированные от больших к меньшим.
Этот инструмент дает точные ответы вместо догадок. Обращайте внимание на любые одиночные изображения весом более 500 KB и на страницы, где общий вес картинок превышает 2 MB. Самый тяжелый файл почти всегда заслуживает исправления в первую очередь — обычно это фоновое изображение шапки или первая фотография в статье. Оптимизация всего 2 или 3 таких файлов часто убирает большую часть лишнего веса страницы.
Что делать с уже перегруженной медиабиблиотекой
Сжимайте уже существующую библиотеку, а не только новые загрузки, так как старые публикации составляют основную массу веса на давно работающем сайте. Блог, существующий 5 лет, может содержать тысячи неоптимизированных изображений.
Скачайте папку uploads, обработайте ее пакетно и загрузите файлы обратно с сохранением исходных имен, чтобы не нарушить работу существующих статей. Последующая регенерация миниатюр перестроит все дочерние размеры на основе уже сжатых оригиналов. Обязательно сделайте резервную копию перед заменой файлов, так как это одна из немногих операций, которая перезаписывает данные на сервере.
Обработка всей папки загрузок
Просто перетащите папку в виде ZIP-архива, и все поддерживаемые изображения внутри будут извлечены, уменьшены и сжаты за один проход. За один раз можно обработать до 500 файлов, что позволяет оптимизировать большинство небольших и средних сайтов всего за несколько подходов.
Все процессы происходят прямо в вашем браузере на вашем собственном процессоре, поэтому клиентские сайты, неопубликованные черновики и приватные галереи никогда не отправляются на сторонний сервер. Это критически важно для агентств, работающих по контракту, где загрузка медиабиблиотеки клиента на неизвестный сервис сжатия была бы нарушением соглашения о конфиденциальности, даже если бы ничего плохого не произошло.