Ръководство за потребителя на Symelo Image Optimizations
За Symelo Image Optimizations версия 1.0.1.
Това ръководство обяснява как да настроите Symelo Image Optimizations, какво прави всяка опция и как сами да отстранявате проблеми. Последната част, „За разработчици“, обхваща константите в wp-config.php, куките (hooks), командите на WP-CLI и REST API.
Нуждаете се от помощ? Пишете на [email protected] или посетете symelo.com.
Какво прави
Symelo Image Optimizations прави изображенията ви по-малки, без да променя начина, по който изглежда сайтът ви. Всичко се случва на собствения ви сървър; изображенията никога не се качват към външна услуга.
- Компресира JPEG и PNG файловете при качването им, а с едно щракване — и в цялата ви съществуваща медийна библиотека.
- Създава WebP и AVIF копия на всяко изображение и ги сервира на браузърите, които ги поддържат.
- Преоразмерява прекалено големите качени изображения (например 6000-пикселови снимки от фотоапарат) до зададени максимална ширина и височина.
- Премахва личните метаданни, като GPS местоположение и данни за фотоапарата.
- Запазва оригиналите, така че можете да възстановите едно изображение или цялата библиотека.
- Зарежда отложено (lazy loading) изображенията и вграденото съдържание, така че браузърът ги изтегля едва когато всеки момент ще се покажат при превъртане.
- Подобрява адаптивните изображения (responsive images), така че телефоните да не изтеглят файлове с размери за настолен компютър.
- Оптимизира изображенията и в папките на темите и плъгините.
- Работи с графичните библиотеки, които има PHP на сървъра ви (Imagick и GD, които използва и WordPress), и показва точно какво се поддържа.
Цялата работа се извършва във фонов режим. Можете да затворите страницата, докато тя тече.
Основни понятия
| Понятие | Значение |
|---|---|
| Без загуби (lossless) | Компресия, при която всеки пиксел остава абсолютно същият. Спестяването идва от по-ефективното пакетиране и премахването на метаданните. |
| Със загуби (lossy) | Компресия, която премахва детайли, които окото почти не забелязва, в замяна на много по-малки файлове. Число за качество (например 82 от 100) определя доколко. |
| WebP | Модерен формат за изображения, обикновено с 25–35% по-малък от JPEG. Поддържа се от всички съвременни браузъри. |
| AVIF | По-нов формат, често наполовина по-малък от JPEG. Създава се по-бавно. Браузърите без поддръжка на AVIF получават WebP или оригинала. |
| Копие | Версията във WebP или AVIF, която плъгинът записва до изображението, например photo.jpg.webp и photo.jpg.avif. Името на оригиналния ви файл и адресът му (URL) не се променят. |
| srcset / sizes | HTML атрибути, които изброяват наличните размери на изображението (srcset) и с каква ширина се показва то (sizes), така че браузърът да избере най-малкия файл, който изглежда достатъчно рязко. |
| Отложено зареждане (lazy loading) | Изображението се зарежда едва когато посетителят превърти близо до него. |
| Механизъм (engine) | Софтуерът, който извършва работата: графичните библиотеки на PHP, Imagick и GD. |
| CDN | Мрежа за доставка на съдържание (например Cloudflare), която кешира файловете на сайта ви на сървъри по целия свят. |
Изисквания
- WordPress 6.4 или по-нова версия.
- PHP 7.4 или по-нова версия. При по-стара версия на PHP плъгинът остава неактивен и показва известие.
- Поне една графична библиотека на PHP: Imagick или GD. Ако няма нито една от двете, се показва известие: „this server has no image library (Imagick or GD), so images can't be optimized.“
- Права за запис на уеб сървъра в папката с качените файлове (uploads), както и във всички папки на теми или плъгини, които изберете да оптимизирате.
- По избор: за WebP/AVIF чрез Server rules — Apache или LiteSpeed с mod_rewrite (и mod_headers) или достъп до конфигурацията на Nginx. Начинът на доставяне по подразбиране, <picture> tags, работи на всеки сървър.
Кои формати може да създава сървърът ви, зависи от това как са компилирани PHP и неговите библиотеки. Разделите Engines и Overview показват точно какво е налично, а опциите, които не са възможни, са неактивни и е посочена причината.
Компресирането на PDF не е възможно с Imagick и GD, затова за PDF compression се показва No, а Optimize PDF files е неактивна.
Само администраторите могат да отварят настройките (правото manage_options). В медийната библиотека всеки, който може да редактира дадено изображение, може и да го оптимизира или възстанови.
Multisite се поддържа. Всеки сайт има свои собствени настройки и записи.
Инсталиране и първоначална настройка
Какво се случва при активиране
- В wp-admin отидете в Разширения → Добавяне на разширение → Качване на разширение, изберете .zip файла, щракнете Инсталиране, а след това Активиране.
- Плъгинът създава своята таблица в базата данни и планира ежедневна задача за поддръжка. Нищо не се изтегля и нито едно съществуващо изображение не се променя.
- Оттук нататък новите качени изображения се оптимизират автоматично няколко секунди след качването им, с настройките по подразбиране: компресия Balanced, WebP и AVIF копия, преоразмеряване до най-много 2560 пиксела ширина, премахване на метаданните и запазване на оригиналите.
- Съществуващите ви изображения остават непроменени, докато не стартирате масова оптимизация.
Екранът на плъгина се намира в Медия → Image Optimizations.
Стъпка 1: Проверете какво може сървърът ви
- Отидете в Медия → Image Optimizations. Отваря се разделът Overview.
- Вижте картата What this server can do. За всяка задача е показано Yes заедно с механизма, който ще я изпълнява, или No: JPEG compression, PNG compression, WebP copies, AVIF copies, PDF compression, Resizing.
- Ако за WebP copies или AVIF copies пише No, отворете раздела Engines, за да видите защо, и помолете хостинг доставчика си да включи поддръжката на WebP/AVIF в Imagick или GD (вижте WebP или AVIF не са налични). За PDF compression пише No: Imagick и GD не могат да компресират PDF файлове.
Стъпка 2: Прегледайте настройките за компресия
Настройките по подразбиране са подходящи за повечето сайтове. Ако искате да ги проверите, отворете раздела Compression. Най-важният избор е Compression level; препоръчва се Balanced. Вижте Раздел Compression.
Стъпка 3: Оптимизирайте съществуващите си изображения
- В раздела Overview намерете Bulk optimization.
- Щракнете Optimize all images.
- Лентата за напредъка показва „Finding images…“, а след това „X of Y files“. Можете да затворите страницата; работата продължава във фонов режим.
- Когато приключи, в картата пише „Last bulk run finished on …“, а в горната част на страницата се показва спестеното: „N media files processed. Visitors download P% less (size).“
На малък или споделен сървър първо задайте Advanced → Background speed на Gentle. Вижте Използване на плъгина на малък сървър.
Стъпка 4: Проверете дали се сервират WebP и AVIF
- Отворете раздела Delivery. По подразбиране е избрано <picture> tags (recommended), което работи навсякъде.
- Под Check delivery щракнете Test now. Трябва да видите „<picture> delivery is on: pages offer WEBP, AVIF versions of optimized images to browsers that support them.“, последвано от това, което тестът е открил на началната ви страница, например „On the home page, 12 images have WebP/AVIF sources.“
Къде да намерите всичко
Медия → Image Optimizations има осем раздела. Превключват се мигновено, без презареждане на страницата.
| Раздел | За какво служи |
|---|---|
| Overview | Спестено място, масова оптимизация, какво поддържа сървърът и последни проблеми. |
| Compression | Ниво на компресия, кои копия да се създават, преоразмеряване, метаданни, оригинали, изключени размери. |
| Delivery | Как се сервират WebP/AVIF, отложено зареждане и адаптивни изображения, с тест на доставянето. |
| Other Folders | Оптимизиране на изображенията в темата, плъгините и други папки в wp-content. |
| Engines | Кои механизми са открити и кой от тях изпълнява всяка задача. |
| Advanced | Състояние и скорост на фоновата обработка, поведение при деинсталиране и възстановяване на всичко. |
| Guide | Това ръководство, вградено в плъгина, със съдържание и поле за търсене („Find in this guide“). |
| Support | Връзки за помощ, отчет със системна информация и данни за контакт. |
В медийната библиотека също се появяват колона Optimization и бутони, вижте В медийната библиотека. На екрана „Разширения“ под плъгина има връзка Settings.
Раздел Overview
Обобщение
Горната карта показва едно от следните:
- „N media files processed. Visitors download P% less (size).“ Спестеното отчита това, което посетителите действително изтеглят: най-малкия от файла и неговите WebP/AVIF копия.
- „Ready. New uploads are optimized automatically; existing images can be optimized in bulk below.“
- „This server has no engine that can compress images. See the Engines tab.“
Под нея се появяват предупреждения за остарели графични библиотеки на сървъра ви (вижте Предупреждения за графичните библиотеки).
Статистика
| Показател | Значение |
|---|---|
| Smaller for visitors (with WebP/AVIF) | С колко по-малко изтеглят посетителите в сравнение с оригиналните ви файлове. |
| Disk space saved | С колко по-малки са оптимизираните файлове от оригиналите (без да се броят копията). |
| Files optimized | Файлове, които са станали по-малки или са получили копия. Всеки размер на изображението се брои за отделен файл. |
| WebP copies / AVIF copies | Колко копия има. |
Тези показатели се отнасят за медийната библиотека. Изображенията от папки имат свои показатели в раздела Other Folders.
Масова оптимизация
Оптимизира изображенията, които вече са в медийната ви библиотека, с текущите настройки.
| Опция | Какво прави | По подразбиране |
|---|---|---|
| Also redo images optimized with different settings | Оптимизира отново изображенията, обработени с друго ниво на компресия, с други копия, с други ограничения за размера или с друга настройка за метаданните. Без нея се обработват само изображения, които не са оптимизирани (или при които е имало грешка, или са били възстановени, или са били заменени междувременно). | Изключено |
| Include the selected folders (themes, plugins) | Обработва и изображенията в папките, избрани в раздела Other Folders. Показва се само когато има избрани папки. | Включено |
Щракнете Optimize all images. Изпълнението минава през две фази:
- Finding images…: медийната библиотека се сканира на малки порции. Ако сте включили точките на прекъсване (breakpoints) (вижте Адаптивни изображения), липсващите размери за тях се създават в този момент.
- „X of Y files“: файловете се оптимизират.
Докато тече, можете да използвате Pause, Resume или Cancel. Докато е на пауза, новите качени изображения продължават да се оптимизират. Cancel спира изпълнението: „Files already optimized stay optimized.“
Редът „Speed: Normal (change)“ показва текущата скорост на фоновата обработка и води към раздела Advanced.
Не е нужно да държите страницата отворена. Докато е отворена обаче, тя също помага на фоновата работа да напредва.
Какво може този сървър
За всяка задача (JPEG compression, PNG compression, WebP copies, AVIF copies, PDF compression, Resizing): Yes с механизма, който ще се използва, или No. Engines → отваря раздела Engines.
Последни проблеми
Последните осем файла, при които е възникнала грешка, с причината за нея. Щракнете името на файла, за да редактирате изображението. Try failed files again ги добавя отново в опашката. Вижте Съобщения за файловете.
Раздел Compression
След като промените нещо, щракнете Save changes в долната част. Новите настройки важат веднага за новите качени изображения. За да ги приложите към вече оптимизираните изображения, стартирайте масова оптимизация с Also redo images optimized with different settings или щракнете Re-optimize при отделни изображения.
Ниво на компресия
| Ниво | Описание в плъгина | JPEG | PNG | WebP копие | AVIF копие |
|---|---|---|---|---|---|
| Lossless | Всеки пиксел остава същият, включително в WebP копията. По-малки файлове единствено благодарение на по-добрата компресия и премахнатите метаданни. Само PNG и GIF изображенията получават WebP копия (без загуби); AVIF копия не се създават. | Само без загуби | Без загуби | Без загуби, само за PNG и GIF изображения | Няма |
| Balanced (по подразбиране) | Препоръчително. Голямо спестяване без видима разлика. | Качество 82 | Без загуби | Качество 80 | Качество 62 |
| Aggressive | Най-малки файлове. Подходящо за повечето снимки; може леко да размие фините детайли. | Качество 72 | Намален брой цветове (със загуби) | Качество 70 | Качество 50 |
| Custom | Изберете качеството за всеки формат поотделно. | Плъзгач 30–100 (по подразбиране 82) | По ваш избор | Плъзгач 30–100 (по подразбиране 80) | Плъзгач 20–100 (по подразбиране 62) |
При Custom се появяват плъзгачи за JPEG, WebP и AVIF, както и опцията Reduce PNG colours (lossy, much smaller). Тази опция за PNG е неактивна, когато на сървъра няма механизъм, който може да компресира PNG файлове.
Добре е да знаете:
- Lossless запазва всеки пиксел непроменен във всичко, което получават посетителите, включително в копията. PNG и GIF изображенията получават WebP копие без загуби, когато то е по-малко (създадено с Imagick или с GD на PHP 8.1 и по-нова версия). JPEG снимките не получават WebP копие, защото WebP без загуби на снимка на практика винаги е по-голям от JPEG файла, а AVIF копие не получава нито едно изображение. За WebP и AVIF копия на снимки изберете Balanced.
- Преоразмеряването (вижте Преоразмеряване на големи качени изображения) променя пикселите на прекалено големите качени изображения при всяко ниво; изключете го, ако дори те трябва да останат непокътнати.
- JPEG файл, който вече е компресиран с (приблизително) избраното качество или с по-ниско, никога не се компресира повторно със загуби; той получава само оптимизация без загуби.
- Плъгинът винаги започва от запазения оригинал, така че повторната оптимизация никога не компресира вече компресирано изображение втори път.
- Файлът се заменя само когато резултатът е осезаемо по-малък (с поне 1 KB или 1%). В противен случай се отбелязва като Already optimal.
Какво да се прави
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Optimize new uploads automatically | „Изпълнява се във фонов режим няколко секунди след всяко качване.“ Важи и когато WordPress генерира наново или редактира файловете на изображение. | Включено |
| Create WebP copies | Записва WebP копие до всяко изображение, когато то е по-малко от оптимизирания файл. При Lossless копие (без загуби) получават само PNG и GIF изображенията. | Включено |
| Create AVIF copies | Записва AVIF копие до всяко изображение, когато то е по-малко както от оптимизирания файл, така и от WebP копието. Не се създава при Lossless. | Включено |
| Remove metadata (EXIF, GPS location, camera details) | Премахва EXIF, XMP, IPTC и коментарите. „Цветовите профили и ориентацията на снимката се запазват.“ | Включено |
| Optimize PDF files | „С механизма за компресиране на PDF от раздела Engines. Подписаните PDF файлове никога не се променят.“ Imagick и GD не могат да компресират PDF файлове, затова опцията е неактивна: „Not available: this server has no engine that can compress PDFs.“ | Включено (неактивна) |
Create WebP copies, Create AVIF copies и Optimize PDF files са неактивни, когато сървърът не може да ги изпълни, и до тях има обяснение, например „Not available: no engine on this server can write AVIF. Ask your host for PHP 8.1+ with AVIF support in GD, or Imagick with AVIF.“
Преоразмеряване на големи качени изображения
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Scale down images larger than: | Включва или изключва преоразмеряването. Изисква Imagick или GD. | Включено |
| Max width | От 320 до 10000 px. | 2560 px |
| Max height | 0 за липса на ограничение, иначе от 320 до 10000 px. | 0 (без ограничение) |
„Смалява се само основният качен файл; WordPress създава по-малките размери от него.“ Преоразмеряването се прилага за JPEG, PNG и WebP файлове (но не и за анимирани изображения). Изображението запазва пропорциите си. Плъгинът също така следи собственото смаляване на „големи изображения“ в WordPress никога да не намалява качените файлове под зададения от вас максимум.
Оригинали
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Keep the originals so changes can be undone | Съхранява всеки оригинал в uploads/symelo-images/backups, преди да го промени. „Без тях ‚Restore original‘ само премахва WebP и AVIF копията.“ | Включено |
| Also optimize the full-size original WordPress keeps of scaled photos | Когато смалява голяма снимка, WordPress запазва и непроменения качен файл (например photo.jpg до photo-scaled.jpg). „Този файл не се показва на сайта, но заема място.“ | Изключено |
Когато оригиналът в пълен размер не се оптимизира, метаданните му (например GPS местоположението) все пак се премахват, ако Remove metadata е включена, защото файлът е публично достъпен. Пикселите остават същите. Когато Keep the originals е включена, преди това се прави резервно копие на файла, както на всеки друг файл, така че при възстановяване на изображението се връщат и метаданните му.
Изключване на размери на изображенията
„Отметнатите размери остават точно такива, каквито ги е създал WordPress: не се компресират и не получават WebP или AVIF копия. Оставете всички неотметнати, за да се оптимизира всеки размер.“
Всеки размер на изображение, регистриран от WordPress, темата ви и плъгините, е изброен заедно с размерите си (∞ означава без ограничение). Броячът показва „Every size is optimized.“ или „Sizes excluded: N“. По подразбиране нищо не е изключено.
Изключването на размер засяга само изображенията, оптимизирани след това, както пише и в картата: „Изключването на размер не променя вече оптимизираните изображения. За да върнете този размер такъв, какъвто го е създал WordPress, възстановете оригиналите на изображенията и след това ги оптимизирайте отново.“ Само Re-optimize не е достатъчно, защото не докосва изключените размери.
Раздел Delivery
След като промените нещо в този раздел, щракнете Save changes.
Сервиране на WebP и AVIF
| Опция | Как работи | Кога да я използвате |
|---|---|---|
| <picture> tags (recommended) (по подразбиране) | „Работи на всеки сървър и с всеки кеш или CDN. Всяко изображение получава AVIF и WebP източници, а браузърите избират най-добрия, който поддържат. Обхванати са само изображенията на собствения адрес на този сайт: изображенията, зареждани от друг адрес (например от CDN, който пренаписва адресите на изображенията), остават непроменени.“ Плъгинът пренаписва HTML кода на страницата: всеки <img>, който има копия, се обвива в елемент <picture> с AVIF и WebP източници. Малко CSS правило не позволява на обвивката да влияе на оформлението, така че изображенията изглеждат и се държат както преди. | Почти винаги. |
| Server rules | „HTML кодът остава непроменен: сървърът изпраща WebP/AVIF копието на оригиналния адрес (URL).“ Правилата се записват в wp-content/.htaccess за Apache или LiteSpeed; за Nginx е нужен фрагмент в неговата конфигурация. „Не е подходящо за сайтове зад Cloudflare или повечето други CDN: те кешират една версия на адрес за всички.“ | Когато не можете или не искате да променяте HTML кода и пред сайта няма CDN. |
| Don't serve them | „Само създава копията (например когато CDN сам конвертира изображенията).“ | Когато нещо друго сервира модерните формати. |
<picture> tags в подробности:
- Работи върху цялата страница, така че обхваща изображенията на темата и плъгините, а не само тези в публикациите ви.
- Обвиват се само изображенията, чийто адрес е на собствения ви сайт (в uploads или wp-content) и които имат копие на диска. Изображенията, зареждани от друг адрес, например през CDN или услуга за изображения, която пренаписва адресите им към свой домейн, никога не се обвиват: плъгинът не може да определи на кой файл отговарят. Test now изброява такива изображения, ако ги открие на началната ви страница.
- Предлагат се само форматите, отметнати в раздела Compression. Премахването на отметката от Create AVIF copies веднага спира предлагането на AVIF.
- На сайт с HTTPS WebP/AVIF източниците винаги използват
https://, дори когато тема или по-стари публикации все още свързват изображение сhttp://. Браузърите блокират източниците сhttp://на защитени страници и не биха показали изображение изобщо. Самият<img>остава непроменен. - Изображенията, които използват друг скрипт за отложено зареждане (атрибути
data-srcилиdata-lazy-src), не се обвиват. - За да изключите изображение, задайте му класа
no-picture(илиskip-picture,symelo-no-picture) или атрибутаdata-skip-picture. - RSS емисиите, REST API, AJAX заявките и отговорите, които не са HTML, никога не се променят.
Server rules в подробности:
- Когато превключите на Server rules и запазите, плъгинът записва правилата и веднага ги тества (вижте Проверка на доставянето).
- Правилата се поставят между
# BEGIN Symelo Image Optimizationsи# END Symelo Image Optimizationsвwp-content/.htaccess. Те отговарят на заявка заphoto.jpgсphoto.jpg.avifилиphoto.jpg.webp, когато браузърът приема съответния формат и копието съществува, и добавят заглавкатаVary: Accept. - Правилата сервират само форматите, отметнати в раздела Compression. Когато поставите или премахнете отметката от Create WebP copies или Create AVIF copies и запазите, правилата се пренаписват веднага, така че премахването на отметката от AVIF незабавно спира сервирането на AVIF. При Nginx копирайте обновения фрагмент (вижте Конфигурация за Nginx).
- Ако правилата изчезнат (например след повторно разгръщане на сайта), плъгинът ги връща следващия път, когато администратор отвори wp-admin, както и при ежедневната поддръжка.
- Превключването на друга опция или деактивирането на плъгина премахва правилата.
- Ако файлът не може да бъде записан: „wp-content/.htaccess can't be written. Add the rules manually or ask your host.“
Ако режимът е зададен в wp-config.php, опциите са неактивни: „Set by SYMELO_IMAGES_DELIVERY in wp-config.php.“
Отложено зареждане
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Load images only when they are about to scroll into view | „Използва вграденото в браузъра отложено зареждане: без скриптове и без разместване на оформлението.“ Изключването ѝ изключва и собственото отложено зареждане на WordPress. | Включено |
| Load the first … images right away | От 0 до 20. „Изображенията в горната част на страницата (лого, основен банер) трябва да се зареждат веднага, за да се появи страницата бързо.“ | 3 |
| Also lazy-load theme and plugin images and embeds | „WordPress обработва само изображенията в съдържанието.“ Когато тази опция е включена, плъгинът добавя отложено зареждане към всяко изображение и iframe (видеа, карти) на страницата. | Включено |
Подробности за отложеното зареждане в цялата страница:
- Първите изображения на страницата се зареждат веднага, дори ако тема или плъгин ги е маркирал за отложено зареждане, така че основното ви изображение не се забавя.
- Малките икони (64×64 пиксела или по-малки, с размер, зададен в HTML кода) не се броят към „първите изображения“.
- Изображенията с
fetchpriority="high"никога не се зареждат отложено. - За да изключите изображение или iframe, добавете класа
skip-lazy(илиno-lazy,symelo-no-lazy) или атрибутаdata-skip-lazy.
Адаптивни изображения
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Add extra image sizes (breakpoints) | „Запълва празнините между размерите на WordPress, така че телефоните, таблетите и големите екрани да изтеглят изображение, близко до размера, в който го показват.“ | Изключено |
| Widths | Ширини в пиксели, разделени със запетая, от 100 до 4000, най-много 12. | 480, 1280, 1920 |
| Tell browsers how wide images really are | Задава атрибута sizes на блоковете „Изображение“, „Галерия“, „Корица“, „Представително изображение“, „Медия и текст“ и на мрежите с продукти на WooCommerce според оформлението на темата ви, „така че браузърите да не изтеглят по-големи файлове от необходимото.“ | Включено |
„Новите качени изображения получават тези размери. ‚Optimize all images‘, както и ‚Optimize now‘ или ‚Re-optimize‘ в медийната библиотека ги добавят към съществуващите изображения.“ Командата optimize на WP-CLI също ги добавя. Допълнителните размери се наричат symelo-480, symelo-1280 и т.н.
Tell browsers how wide images really are чете ширината на съдържанието и широката ширина от настройките на блоковата ви тема (или класическата $content_width). Опцията оставя собствената стойност на WordPress там, където не може да знае ширината, например при представителните изображения в цикли на заявки (query loops).
Проверка на доставянето
Щракнете Test now. Какво се проверява, зависи от избраната опция за доставяне:
- <picture> tags: „Проверява кои формати може да създава този сървър, след което разглежда началната страница така, както я получава посетител: кои изображения имат WebP/AVIF източници и кои се зареждат от друг адрес.“
- Server rules: „Заявява тестово изображение така, както го прави браузър, и проверява в какъв формат то се връща.“ Картата показва и дали правилата са на мястото си: Rules are in wp-content/.htaccess или Rules are not in wp-content/.htaccess.
Тестват се само форматите, отметнати в раздела Compression.
| Резултат | Значение |
|---|---|
| „<picture> delivery is on: pages offer WEBP, AVIF versions of optimized images to browsers that support them.“ | Сървърът може да създава копията (режим <picture>). Едно или повече от следващите изречения казват какво е открил тестът на началната страница. |
| „On the home page, N images have WebP/AVIF sources.“ | Всичко е наред. |
| „No image on the home page has WebP/AVIF sources yet. Its images may not be optimized yet, or a page cache may still serve an older version of the page.“ | Оптимизирайте изображенията (масова оптимизация), след това изчистете кеша на страниците и кеша на CDN и тествайте отново. |
| „N images on the home page load from another address (cdn.example.com), so they can't get WebP/AVIF sources.“ | Тези изображения идват от друг домейн, например от CDN, който пренаписва адресите на изображенията, и никога не се обвиват. Ако CDN може сам да конвертира изображенията, изберете Don't serve them. |
| „The home page has no images to check.“ | На началната страница няма какво да се провери; копията пак се сервират навсякъде, където има изображения. |
| „The home page couldn't be checked (…).“ | Сайтът не е успял да зареди собствената си начална страница (блокирани заявки, HTTP удостоверяване на тестов сайт). Вместо това проверете някоя страница с инструментите за разработчици на браузъра си. |
| „No WebP or AVIF copy could be made, so there is nothing to serve yet.“ | Сървърът не може да създава копия. Вижте раздела Engines. |
| „WebP and AVIF copies are turned off on the Compression tab, so there is nothing to serve.“ | Отметнете Create WebP copies или Create AVIF copies. |
| „Delivery is off: copies are created but not served by the plugin.“ | Избрано е Don't serve them. |
| „The server sends WebP/AVIF to browsers that support them.“ | Всичко е наред (правила на сървъра). |
| „The server sends the modern formats, but without a 'Vary: Accept' header. Enable mod_headers (Apache) so caches keep the versions apart.“ | Работи, но кешовете може да объркат форматите. |
| „The server sends WebP/AVIF correctly, but the site is behind Cloudflare, which caches one version of each image for every visitor…“ | Открит е CDN или кеширащ прокси сървър (Cloudflare, Amazon CloudFront, Sucuri, Fastly, BunnyCDN или друг кеширащ прокси). Използвайте <picture> tags или се уверете, че CDN кешира изображенията поотделно според заглавката „Accept“. |
| „The server still sends the original image. The rewrite rules aren't active on this server…“ | Правилата не работят тук (няма Apache/LiteSpeed с mod_rewrite или липсва фрагментът за Nginx). Използвайте <picture> tags. |
Тестът използва малко изображение в uploads/symelo-images/public/, а при <picture> tags — и началната ви страница.
Конфигурация за Nginx
На сървъри с Nginx, когато е избрано Server rules или когато проверката в „Здраве на сайта“ наскоро е установила, че запазените оригинали могат да бъдат изтеглени (вижте Поверителност и сигурност), картата показва Nginx configuration с бутон Copy. Nginx пренебрегва файловете .htaccess, на които разчита плъгинът, затова този фрагмент върши тяхната работа:
- Винаги блокира уеб достъпа до личните папки на плъгина: запазените оригинали (които все още съдържат GPS местоположението си) и временните файлове.
- При Server rules освен това сервира WebP/AVIF копията на оригиналните адреси на изображенията за форматите, отметнати в раздела Compression. Копирайте го отново, когато ги промените.
Плъгинът показва точния фрагмент за вашия сайт. При Server rules и отметнати и двата формата той изглежда така:
# In the http { } block:
map $http_accept $symelo_images_avif { default ""; "~*image/avif" ".avif"; }
map $http_accept $symelo_images_webp { default ""; "~*image/webp" ".webp"; }
# In the server { } block:
# Kept originals (with their GPS data) and temporary files stay private.
location ^~ /wp-content/uploads/symelo-images/backups/ { deny all; }
location ^~ /wp-content/uploads/symelo-images/tmp/ { deny all; }
# WebP/AVIF copies at the original image URLs.
location ~* ^/wp\-content/.+\.(jpe?g|png|gif|webp)$ {
types { image/avif avif; image/webp webp; image/jpeg jpg jpeg; image/png png; image/gif gif; }
add_header Vary Accept;
try_files $uri$symelo_images_avif $uri$symelo_images_webp $uri =404;
}
При <picture> tags (или Don't serve them) се показва само частта за блока server с двата реда deny. Възможно е хостинг доставчикът ви да трябва да добави фрагмента вместо вас. След това презаредете Nginx и щракнете Test now.
Раздел Other Folders
Оптимизира изображения, които не са в медийната библиотека: изображенията на темата ви, ресурсите на плъгините и други папки в wp-content. „Оригиналите се запазват както при медийните файлове, така че всичко може да бъде отменено.“
Настройки
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Active theme (name) | Включва папката на активната ви тема (а при дъщерна тема — и тази на родителската). | Изключено |
| Other folders | „По една на ред, спрямо wp-content“, например plugins/my-plugin/assets или uploads/gallery. Можете да поставите и пътища, които започват с wp-content/, или пълния път на сървъра. До 30 папки. | Празно |
| Check these folders automatically and optimize new or updated images | „Новите изображения се откриват веднъж дневно. На всеки 10 минути бърза проверка засича и изображенията, които обновяване на тема или плъгин (или повторно разгръщане) е върнало в първоначалния им вид, и ги оптимизира отново.“ Бързата проверка преглежда извадка от оптимизираните изображения в папките; ако някое от тях е било върнато, папките се сканират и оптимизират отново. | Включено |
Щракнете Save changes. Папка, която не съществува, се отхвърля: „"…" isn't a folder inside wp-content.“ Папката с резервните копия на самия плъгин не може да бъде добавена.
Изображения от папки
Тази карта се появява, след като изберете папки. Тя показва „N files found, N optimized, P% smaller for visitors.“, времето на последното сканиране и списък с до 50 файла с техните Status и Size.
- Scan folders: открива нови, променени и премахнати файлове („Found N files: N new, N changed.“).
- Optimize folder images: сканира и след това добавя в опашката всеки файл, който още не е оптимизиран, при който е имало грешка или който е бил възстановен.
Какво открива сканирането: JPEG, PNG, GIF и WebP файлове (и PDF файлове, когато Optimize PDF files е включена и има механизъм, който може да ги компресира). Пропуска папките .git, .svn, node_modules и .cache, папките, които са символни връзки, файловете от медийната библиотека и собствените WebP/AVIF копия на плъгина. Едно сканиране спира след 20 000 файла или 25 секунди: „The scan stopped early (too many files); select smaller folders.“
Изображенията от папки се сервират като WebP/AVIF по същия начин като медийните изображения. Няма начин да възстановите отделни изображения от папки или само изображенията от папки: Advanced → Restore all originals (или wp symelo-images restore --all) връща всички оригинали — и на изображенията от папки, и на цялата медийна библиотека.
Раздел Engines
Открити на този сървър
Първият ред описва сървъра, например „Linux on x86_64, PHP 8.3.12.“
Таблицата изброява всички механизми:
| Колона | Значение |
|---|---|
| Engine | Името и произходът му, например PHP extension. |
| Version | Откритата версия. |
| Status | Available, Outdated (открит, но твърде стар, за да се използва) или Not found, с бележка, която обяснява защо. |
| Can do | Задачите, които механизмът изпълнява. |
| Механизъм | Задачи |
|---|---|
| Imagick (ImageMagick) | JPEG, PNG, WebP и AVIF (всеки от тях само ако вашата компилация на ImageMagick го поддържа), преоразмеряване |
| GD | JPEG, PNG, WebP и AVIF (всеки от тях само ако вашата компилация на GD го поддържа), преоразмеряване |
Под таблицата се появяват бележки за графичните библиотеки (вижте Предупреждения за графичните библиотеки).
Механизъм за всяка задача
За всяка задача изберете Automatic или конкретен механизъм. „Automatic избира най-добрия наличен механизъм. Ако избраният от вас не може да обработи даден файл, се използва следващият подходящ механизъм.“ Елементът Automatic показва кой механизъм избира в момента, например „Automatic (Imagick (ImageMagick))“. Механизмите, които сървърът не може да използва, са изброени, но са неактивни и до тях пише „— not available“.
| Задача | Ред при Automatic |
|---|---|
| JPEG compression | Imagick, GD |
| PNG compression | Imagick, GD |
| WebP copies | Imagick, GD |
| AVIF copies | Imagick, GD |
| PDF compression | Няма: „This server has no engine that can compress PDFs.“ |
| Resizing | Imagick, GD |
Imagick е с предимство, защото запазва цветовите профили и обработва CMYK и 16-битови изображения. GD се използва за файловете, които Imagick откаже да обработи, или когато Imagick не е инсталиран.
Imagick и GD не могат да компресират JPEG без загуби, затова при нивото Lossless от JPEG файловете се премахват само метаданните.
Когато за дадена задача няма механизъм, редът под нея го съобщава, например „This server has no engine that can compress PDFs.“
Щракнете Save changes. Ако избраният от вас механизъм не е наличен: „engine can't do that job on this server, so Automatic is used instead.“ Ако избран механизъм изчезне по-късно (например защото софтуерът, който го е предоставял, е премахнат), за тази задача се използва Automatic, без да се показва съобщение.
Раздел Advanced
Фонова обработка (Background processing)
| Ред | Значение |
|---|---|
| Waiting in the queue | Файлове, които чакат да бъдат оптимизирани, възстановени или почистени. |
| Last run | Кога е било последното фоново изпълнение и колко файла е обработило за колко секунди. |
| Started by the site itself | Последният път, когато сайтът е стартирал изпълнение, като е изпратил заявка до самия себе си. |
| Started by WP-Cron | Последният път, когато планировчикът на WordPress е стартирал изпълнение. |
| Last start error | Показва се, когато сайтът не е успял да изпрати тази заявка до самия себе си. |
„Сайтът сам стартира кратки фонови изпълнения, а WP-Cron служи като резервен вариант. На сървъри, които блокират и двете, изпълнявайте wp symelo-images run --paced от системна cron задача; както фоновите изпълнения, командата спазва скоростта на фоновата обработка по-долу.“
- Process the queue now изпълнява една партида веднага. Както пише в картата, това става „без паузите и проверките на натоварването на фоновата скорост“, защото сте го поискали изрично.
- Empty the queue премахва всичко чакащо (и отменя текущата масова оптимизация). Вече оптимизираните файлове остават оптимизирани.
Скорост на фоновата обработка (Background speed)
„Доколко масовата оптимизация може да натоварва сървъра. Новите качвания и ‚Optimize now‘ винаги се обработват веднага.“
| Скорост | Описание в плъгина | Работа на изпълнение | Пауза между изпълненията | Приоритет на енкодера | Нишки на енкодера | Масовата работа изчаква, когато натоварването на ядро на процесора е поне |
|---|---|---|---|---|---|---|
| Fast | Дълги серии, една след друга. За самостоятелни (dedicated) сървъри или за първо изпълнение в спокоен период. | 25 с | Няма | Нормален | По подразбиране на енкодера | Никога |
| Normal (recommended) (по подразбиране) | Равномерна работа във фонов режим. Масовата работа изчаква, когато сървърът е претоварен. | 15 с | Няма | Понижен | 2 | 2,0 |
| Gentle, for small servers | Кратки серии от около 5 секунди с 30-секундни паузи, а масовата работа изчаква винаги, когато сървърът е зает. Големите библиотеки се обработват по-бавно, но посетителите няма да усетят нищо. | 5 с | 30 с | Най-нисък приоритет за процесора и диска | 1 | 0,7 |
- Едно изпълнение никога не продължава по-дълго, отколкото позволява лимитът за време на PHP на вашия сървър.
- Приоритетът и нишките на енкодера важат за механизмите, които стартират отделни програми енкодери (такива механизми могат да добавят други плъгини). Imagick и GD работят вътре в PHP и винаги използват една нишка.
- Когато сървърът предоставя тази информация, ще видите „Server load right now: X per CPU core (N cores).“, а ако се е случило през последния час — и „Bulk work last waited for a busy server at …“.
Ако скоростта е зададена в wp-config.php: „Set by SYMELO_IMAGES_WORKER_SPEED in wp-config.php.“
При изтриване на плъгина (When the plugin is deleted)
| Настройка | Какво прави | По подразбиране |
|---|---|---|
| Delete its settings, records and the WebP/AVIF copies | Когато изтриете плъгина, се премахват също настройките му, таблицата му в базата данни и всяко WebP/AVIF копие. „Оптимизираните изображения остават такива, каквито са. Запазените оригинали остават в uploads/symelo-images/backups, освен ако не ги изтриете или възстановите преди това.“ | Изключено |
Натиснете Save changes.
Отмяна на всичко (Undo everything)
Показва броя на запазените оригинали: „N originals are kept.“
- Restore all originals: връща всеки оригинал и премахва всички WebP и AVIF копия — както за изображенията от медийната библиотека, така и за тези от папки. Изпълнява се във фонов режим („Restoring N files in the background.“). Ако тече масова оптимизация, тя първо се отменя.
- Delete all kept originals: изтрива резервните копия, за да освободи място на диска. Оптимизираните изображения остават, но „промените вече не могат да бъдат отменени“.
И двете действия искат потвърждение. Restore all originals пита „Put every original file back, for media and folder images? The optimized versions and all WebP/AVIF copies will be removed.“ Delete all kept originals предупреждава, че действието е необратимо.
Раздел Support
- Get help: „Повечето проблеми се свеждат до това какво поддържа сървърът (вижте Engines), правата за достъп до файловете или блокирани фонови заявки (вижте Advanced).“ Съдържа връзки към What this server supports, Background processing status и Check Site Health, както и бутон Email support ([email protected]).
- System information: текстов отчет с настройките на плъгина, броя файлове, опашката, механизмите и версиите им, механизма, избран за всяка задача, и данни за сървъра. „Без пароли и ключове.“ Натиснете Copy system information и поставете отчета в имейла си до поддръжката.
- About Symelo LTD: връзка към symelo.com.
В медийната библиотека
Колона и поле Optimization
В изгледа със списък на медийната библиотека колоната Optimization показва състоянието на всяко изображение. Същата информация се появява и като поле Optimization в детайлите за прикачения файл (в изскачащия прозорец на изгледа с мрежа и в екрана за редактиране).
| Състояние | Значение |
|---|---|
| Optimizing… | В опашката е или се обработва. Клетката се обновява сама. |
| Saved P% (before → after) | Оптимизирано. Когато доставянето на WebP/AVIF е включено, after е това, което изтеглят посетителите. Значките AVIF и WebP показват кои копия съществуват. Details изброява всички размери на изображението. |
| Already optimal | Файлът не може да бъде направен осезаемо по-малък. |
| Съобщението за грешка | Оптимизацията е неуспешна (вижте Съобщения за файловете). |
| Причината или Skipped | Файлът е пропуснат, например защото е твърде голям. |
| Original restored | Оригиналът е върнат. |
| Not optimized | Още не е обработено. |
Бутони (за потребители, които могат да редактират изображението):
| Бутон | Кога се показва | Какво прави |
|---|---|---|
| Optimize now | Неоптимизирано или възстановено | Оптимизира изображението веднага. |
| Re-optimize | Оптимизирано | Оптимизира отново всички размери от оригинала с текущите настройки. |
| Restore original | Оптимизирано, със запазен оригинал | Връща оригинала и премахва копията. Пита „Put the original files back? The optimized versions and WebP/AVIF copies will be removed.“ |
| Remove WebP/AVIF | Оптимизирано, но без запазен оригинал | Премахва само копията, след потвърждение. |
| Try again | Неуспешно или пропуснато | Опитва отново. За пропуснатите файлове (например над ограничението за размер) обработва отново всички размери на изображението. |
Optimize now, Re-optimize и Try again създават и липсващите размери за точките на прекъсване, когато точките на прекъсване (breakpoints) са включени.
Групови действия
В изгледа със списък отметнете изображенията и изберете от Групови действия:
- Optimize images: оптимизира отново избраните изображения, дори ако преди това са били оптимизирани или пропуснати. Не създава липсващи размери за точките на прекъсване.
- Restore original images: възстановява избраните изображения.
Известие потвърждава: „N files queued. They are processed in the background.“
Когато изтриете изображение от медийната библиотека, плъгинът изтрива и неговите WebP/AVIF копия, запазения му оригинал и записите за него.
Как се обработва всеки тип файл
| Тип файл | Какво се случва |
|---|---|
| JPEG | Компресира се отново с качеството на избраното ниво (или без загуби), записва се като прогресивен JPEG, а метаданните се премахват (ориентацията и цветовият профил се запазват). WebP и AVIF копия (при Lossless не се създават). |
| PNG | Компресира се отново без загуби или с по-малко цветове при Aggressive (или при Custom с отметнато Reduce PNG colours). Метаданните се премахват. WebP копие (без загуби или със загуби — което е по-малко) и AVIF копие; при Lossless — само WebP копие без загуби. |
| GIF | Не се компресира отново. Статичните GIF файлове получават WebP копие, както и AVIF копие, ако Imagick или GD могат да го създадат (не и при Lossless). Анимираните GIF файлове запазват анимацията си само с механизъм, който я поддържа; Imagick и GD не я поддържат, затова анимираните GIF файлове не получават копия. |
| WebP (качен като WebP) | Не се компресира отново, освен ако не трябва да се преоразмери. Метаданните се премахват. Може да получи AVIF копие (не и при Lossless). |
| AVIF (качен като AVIF) | Пропуска се: „AVIF files are already compressed.“ |
| Обработва се само с механизъм за PDF compression, а Imagick и GD не са такива, затова PDF файловете остават непроменени. Подписаните PDF файлове никога не се променят. |
Други правила:
- Файловете се разпознават по съдържанието си, а не по името.
- Копията се записват до файла:
photo.jpgполучаваphoto.jpg.webpиphoto.jpg.avif. Копие се запазва само ако е по-малко от оптимизирания файл (а AVIF копие — само ако е по-малко и от WebP копието). - Изображения над 60 мегапиксела или файлове над 100 MB се пропускат: „The file is larger than the limit for optimizing.“
- WebP и AVIF копия на CMYK JPEG файлове (често срещани при подготовка за печат) могат да се създават само с Imagick.
- Ширината, височината и размерът на файла на изображението в WordPress се обновяват след преоразмеряване или възстановяване.
Практически рецепти
Доставяне на WebP/AVIF зад Cloudflare
CDN мрежи като Cloudflare обикновено кешират една версия на всеки адрес на изображение за всички посетители. При Server rules браузър, който не може да показва AVIF, може да получи AVIF файл, кеширан от CDN мрежата за друг посетител. <picture> tags избягват този проблем, защото всеки формат има собствен адрес.
- Отворете Медия → Image Optimizations → Delivery.
- Изберете <picture> tags (recommended) и натиснете Save changes.
- Натиснете Test now под Check delivery.
- Изчистете кеша на CDN мрежата (и кеша на страниците, ако има такъв), за да получават посетителите обновения HTML.
Ако вашата CDN мрежа сама конвертира изображенията в WebP/AVIF, изберете вместо това Don't serve them или изключете копията в раздела Compression, за да спестите място на диска.
Използване на сървърни правила на Apache или LiteSpeed
- Отворете Delivery, изберете Server rules и натиснете Save changes.
- Плъгинът записва правилата в
wp-content/.htaccessи веднага ги тества. Прочетете съобщението в горната част на страницата. - Ако в него пише, че сървърът все още изпраща оригиналното изображение, значи сървърът ви не прилага правилата; върнете се към <picture> tags.
При Nginx копирайте фрагмента от Nginx configuration в конфигурацията на сървъра (или помолете хостинг доставчика си да го направи), презаредете Nginx и натиснете Test now.
Оптимизиране на изображенията на темата
- Отворете Other Folders.
- Отметнете Active theme (name). Ако желаете, добавете и други папки, например
plugins/my-slider/images. - Оставете отметнато Check these folders automatically and optimize new or updated images, за да се оптимизират изображенията отново след обновяване на темата.
- Натиснете Save changes, а след това Optimize folder images.
Списъкът под Folder images показва състоянието на всеки файл.
Използване на плъгина на малък сървър
Отворете Advanced → Background speed, изберете Gentle, for small servers и натиснете Save changes.
По желание в Compression махнете отметката от Create AVIF copies. AVIF е форматът, който се създава най-бавно.
Стартирайте масовата оптимизация от Overview. Тя работи на кратки серии с паузи, с най-нисък приоритет, и изчаква, докато сървърът е зает. Новите качвания все така се оптимизират веднага.
Ако Advanced → Background processing не показва скорошни изпълнения, възможно е хостинг доставчикът ви да блокира заявките на сайта до самия себе си. Помолете го да настрои системна cron задача:
wp symelo-images run --paced --max-seconds=240например на всеки пет минути. С
--pacedкомандата спазва скоростта Gentle като фоновите изпълнения: кратки серии, паузи и изчакване, докато сървърът е зает.--max-secondsпрекратява всяко изпълнение, преди да е започнала следващата cron задача.
Промяна на нивото на компресия и повторна обработка на съществуващите изображения
- В Compression изберете новото ниво и натиснете Save changes.
- В Overview отметнете Also redo images optimized with different settings и натиснете Optimize all images.
Тъй като плъгинът винаги започва от запазените оригинали, по-високото качество наистина връща детайлите, стига Keep the originals да е било включено.
Изключване на изображение от отложеното зареждане или от <picture>
Добавете CSS клас към изображението (в редактора на блокове: Разширени → Допълнителни CSS класове):
skip-lazy: изображението винаги се зарежда веднага.no-picture: изображението никога не се обвива в<picture>(винаги се използва оригиналният формат).
Освобождаване на място на диска
Запазените оригинали може да заемат толкова място, колкото цялата ви оригинална библиотека.
- Уверете се, че сте доволни от резултатите (прегледайте няколко страници и изображения).
- Отворете Advanced → Undo everything и натиснете Delete all kept originals.
След това промените не могат да бъдат отменени. За да спрете запазването на оригинали при бъдещите качвания, махнете отметката от Keep the originals so changes can be undone в раздела Compression.
Изключване на размер на изображение
Ако даден размер на изображение трябва да остане точно такъв, какъвто го е създал WordPress (например размер за изтегляне за печат):
- В Compression → Exclude image sizes отметнете този размер и натиснете Save changes.
- Ако изображенията вече са оптимизирани, възстановете ги и ги оптимизирайте отново.
Отстраняване на проблеми
Проверки в Здраве на сайта
Инструменти → Здраве на сайта включва четири проверки. Първите три са със значка „Performance“, а последната — със значка „Security“:
| Проверка | Добър резултат | Проблем и решение |
|---|---|---|
| Images can be converted to WebP and AVIF | „This server can create both modern formats.“ | „This server can't create AVIF images“ (или WebP). Помолете хостинг доставчика си да включи формата в Imagick или GD (вижте WebP или AVIF не е наличен). |
| Image libraries are up to date | „No image library with known security problems was found.“ | „An image library may need a security update.“ Вижте по-долу. |
| Image optimization runs in the background | „Queued images are being processed.“ | „Image optimization is stuck“: има чакащи файлове, а нищо не е изпълнявано от 30 минути. Вижте Изображенията остават „Optimizing…“. |
| Kept originals are private | „Files in uploads/symelo-images/backups can't be downloaded from the web.“ | „Kept originals can be downloaded by anyone“: сървърът пренебрегва .htaccess файловете, които ги защитават (така работи например Nginx). Добавете правилата от Delivery → Nginx configuration в конфигурацията на сървъра (вижте Конфигурация за Nginx) или изтрийте запазените оригинали. „Access to kept originals couldn't be checked“ означава, че сайтът не е успял да заяви тестовия файл от самия себе си. |
Проверката за поверителност заявява от вашия сайт малък тестов файл, uploads/symelo-images/backups/access-check.txt, така, както би могъл да го направи всеки. Резултатът се запомня за един ден, когато папката е защитена, за един час, когато проверката е неуспешна, и за десет минути, когато файловете могат да бъдат изтеглени, така че поправката се вижда бързо.
Здраве на сайта → Информация → Symelo Image Optimizations изброява всеки механизъм с версията и задачите му, както и механизма, използван за всяка задача.
Изображенията остават „Optimizing…“
Фоновата работа не стартира.
- Отворете Advanced → Background processing. Ако се показва Last start error, сървърът ви не е успял да изпрати заявка до самия себе си.
- Натиснете Process the queue now. Ако файловете се обработят, оптимизаторът работи и е блокирано само автоматичното стартиране.
- Чести причини: защитна стена или плъгин за сигурност, който блокира заявките на сайта до самия себе си, HTTP удостоверяване на тестов (staging) сайт или изключен WP-Cron (
DISABLE_WP_CRON). - Решение: разрешете заявките на сайта до самия себе си или изпълнявайте
wp symelo-images run --pacedот системна cron задача.
Масовата работа напредва и докато разделът Overview е отворен.
WebP или AVIF не е наличен
Опцията е неактивна в Compression или в Overview пише No за WebP copies или AVIF copies.
- Отворете Engines. Бележките обясняват защо даден механизъм не може да създава формата, например „This GD build can't write AVIF.“ или „The Imagick PHP extension isn't installed.“
- Поискайте от хостинг доставчика си PHP 8.1+ с поддръжка на AVIF в GD или Imagick, компилиран с поддръжка на WebP/AVIF. След това презаредете раздела Engines.
Изображенията не се доставят като WebP/AVIF
- Натиснете Delivery → Test now и прочетете съобщението.
- <picture> tags: проверете дали изображенията са оптимизирани (колоната в медийната библиотека) и дали копията съществуват (значките AVIF/WebP). Изчистете кеша на страниците и кеша на CDN мрежата. Изображения, зареждани от друг домейн (например през CDN, която пренаписва адресите на изображенията), никога не се обвиват; Test now посочва тези домейни, когато ги открие на началната ви страница.
- Server rules: вижте таблицата с резултатите от теста в Проверка на доставянето.
- Инструментите за разработчици в браузъра показват кой формат е изтеглен (раздел Network, колона „Type“).
Съобщения за файловете
Появяват се в медийната библиотека, в Overview → Recent problems и в списъка в Other Folders.
| Съобщение | Какво да направите |
|---|---|
| „The file can't be changed: the web server has no write permission.“ | Помолете хостинг доставчика си да даде на уеб сървъра права за запис в папката за качвания (или в избраната папка). |
| „The file no longer exists.“ | Файлът е изтрит извън WordPress. Не е нужно да правите нищо. |
| „This file is outside the folders the plugin may change.“ | Файлът не е в uploads или в избрана папка (или символна връзка сочи извън тях). |
| „Not a supported image or PDF.“ | Съдържанието на файла не е JPEG, PNG, GIF, WebP или PDF, каквото и да подсказва името му. |
| „AVIF files are already compressed.“ | Така е предвидено; качените AVIF файлове не се променят. |
| „The file is larger than the limit for optimizing.“ | Над 60 мегапиксела или над 100 MB. Разработчик може да увеличи ограниченията (вижте филтрите). След това натиснете Try again под изображението в медийната библиотека (или използвайте груповото действие Optimize images). Масовата оптимизация не опитва отново пропуснатите файлове. |
| „The backups folder could not be created, so the file was left untouched.“ / „The original could not be backed up, so the file was left untouched.“ | Проверете дали папката uploads/symelo-images може да бъде създадена и дали в нея може да се записва, както и дали има свободно място на диска. |
| „The optimized file could not be written.“ / „The temporary folder could not be created.“ | Дискът е пълен или липсват права за запис. |
| „No engine on this server can create WEBP.“ (или AVIF) | Вижте WebP или AVIF не е наличен. |
| „No PDF engine is available on this server.“ | Imagick и GD не могат да компресират PDF файлове. Изключете Compression → Optimize PDF files, ако не искате PDF файловете да се показват в списъка. |
| „GD could not read the image.“ / „ImageMagick: …“ | Механизмът не е успял да обработи този файл. Изберете друг механизъм за тази задача в Engines и опитайте отново. |
| „Processing stopped: …“ / „Processing stopped unexpectedly several times. The image may be too large for this server's memory or time limits.“ | На PHP не са му стигнали паметта или времето. Поискайте от хостинг доставчика си по-висок лимит на паметта или изключете много големите изображения. |
| „The original wasn't kept, so only the WebP and AVIF copies were removed.“ | Показва се след Restore, когато Keep the originals е било изключено. |
Try failed files again (в Overview) или Try again (в медийната библиотека) добавя неуспешните файлове отново в опашката. Try again опитва отново и пропуснатите изображения.
Предупреждения за библиотеките за изображения
В Overview, Engines и в Здраве на сайта може да видите предупреждения като:
- „ImageMagick version is older than version, which fixes published security issues…“ Възможно е хостинг доставчикът ви да е отстранил уязвимостите, без да променя версията; ако не е, помолете го да обнови ImageMagick (самият WordPress я използва при всяко качване).
Ако библиотеката идва от Linux дистрибуция, която пренася поправките за сигурност в по-старите версии (например пакетите на Debian или Ubuntu), плъгинът показва вместо това по-спокойна бележка, с която ви моли да поддържате пакетите на сървъра актуални.
Все още имате проблем?
Отворете раздела Support, натиснете Copy system information и изпратете информацията по имейл на [email protected] заедно с описание на проблема.
Поверителност и сигурност
Какво се съхранява и къде
| Данни | Къде |
|---|---|
| Настройки | Опцията symelo_images_settings в базата данни. |
| По един запис за всеки оптимизиран файл: път, размери, състояние, използвани механизми, контролна сума, грешки | Таблица в базата данни, {prefix}symelo_images, за всеки сайт. |
| WebP и AVIF копия | До всяко изображение (photo.jpg.webp, photo.jpg.avif). |
| Запазени оригинали | uploads/symelo-images/backups/, както и малкият файл access-check.txt, който заявява проверката за поверителност в Здраве на сайта. |
| Временни файлове | uploads/symelo-images/tmp/. Остатъците, по-стари от един ден, се изтриват ежедневно. |
| Тестово изображение за доставянето | uploads/symelo-images/public/. |
Плъгинът добавя .htaccess файлове, които блокират уеб достъпа до папките с резервни копия и временни файлове на Apache и LiteSpeed. При Nginx тези файлове нямат ефект. Запазените оригинали все още съдържат GPS местоположението и метаданните от фотоапарата, затова при Nginx тези папки трябва да бъдат блокирани в конфигурацията на сървъра:
location ^~ /wp-content/uploads/symelo-images/backups/ { deny all; }
location ^~ /wp-content/uploads/symelo-images/tmp/ { deny all; }
Delivery → Nginx configuration показва тези редове с точните пътища за вашия сайт (вижте Конфигурация за Nginx); ^~ им дава предимство пред правилата за изображения, например тези на самия плъгин. Независимо какъв уеб сървър използвате, Здраве на сайта проверява дали запазените оригинали не могат да бъдат изтеглени и ви предупреждава, ако могат (вижте Проверки в Здраве на сайта).
Какво се изпраща и къде
- Изображенията никога не напускат сървъра ви. Цялата компресия и всички конвертирания се извършват локално.
- Фонова работа: сайтът ви изпраща кратки заявки до самия себе си (до
wp-admin/admin-ajax.php, удостоверени със случаен таен ключ, различен за всеки сайт) и използва WP-Cron. Тестът за доставянето заявява от собствения ви сайт тестово изображение (а при <picture> таговете — и началната страница), а проверката за поверителност в Здраве на сайта заявява тестов файл от папката с резервни копия. - Без външни услуги. Плъгинът не изпраща данни към никаква външна услуга.
- Нищо не се изпраща към Symelo LTD. Връзките към symelo.com и имейл връзката в раздела Support правят нещо само когато ги натиснете.
Премахване на метаданни
Когато Remove metadata е включено, EXIF (фотоапарат, настройки, GPS местоположение), XMP, IPTC и коментарите се премахват от оптимизираните изображения и техните копия. Оригиналът в пълен размер, който WordPress пази за мащабираните снимки, също губи метаданните си, дори когато не е оптимизиран. Запазените оригинали в папката с резервни копия остават непроменени и затова не бива да могат да бъдат изтегляни (вижте по-горе).
Бележки за сигурността
- Плъгинът работи само с библиотеките за изображения на PHP. Той не стартира и не изтегля програми.
- Файловете се променят само в uploads, wp-content и папките, които изберете. Символните връзки не могат да водят извън тях.
- ImageMagick винаги получава изрично зададен файлов формат и ограничения на ресурсите.
- Всяко административно действие проверява правата и nonce защитата на WordPress. Фоновият процес не приема нищо друго освен тайния ключ на сайта и може да обработва само това, което вече е в опашката.
Отмяна и деинсталиране
| Искате да… | Направете следното |
|---|---|
| Отмените промените по едно изображение | Медийна библиотека → Restore original. |
| Отмените промените по няколко изображения | Изглед със списък в медийната библиотека → отметнете ги → Restore original images. |
| Отмените промените по изображенията от папки | Advanced → Restore all originals. Това възстановява и медийната библиотека; изображенията от папки не могат да бъдат възстановени отделно. |
| Отмените всичко | Advanced → Restore all originals, след което изчакайте Waiting in the queue да стане 0. |
| Спрете доставянето на WebP/AVIF | Delivery → Don't serve them. |
| Спрете оптимизирането на новите качвания | Compression → махнете отметката от Optimize new uploads automatically. |
Възстановяването работи само за файлове, чийто оригинал е запазен (Keep the originals е включено и Delete all kept originals не е използвано). Без оригинал възстановяването премахва само WebP и AVIF копията. Това важи и за оригиналите в пълен размер, които WordPress пази за мащабираните снимки: когато Keep the originals е включено, те се архивират, преди метаданните им да бъдат премахнати, така че възстановяването връща метаданните.
Преди възстановяване се иска потвърждение: „Put the original files back? The optimized versions and WebP/AVIF copies will be removed.“ След това можете да оптимизирате изображенията отново по всяко време.
Деактивирането на плъгина:
- спира цялата фонова работа и планираните задачи;
- премахва сървърните правила от
wp-content/.htaccess; - спира <picture> таговете, както и отложеното зареждане, адаптивните размери и размерите за точките на прекъсване на плъгина (собственото отложено зареждане на WordPress продължава да работи);
- оставя на място оптимизираните изображения, копията, запазените оригинали и настройките, така че при повторно активиране работата продължава оттам, докъдето е стигнала.
Изтриването на плъгина (Разширения → Изтриване):
- Винаги: премахва планираните задачи, сървърните правила, временните файлове, тестовото изображение за доставянето и състоянието на фоновия процес.
- Ако Advanced → Delete its settings, records and the WebP/AVIF copies е включено: изтрива също всяко WebP/AVIF копие, таблицата в базата данни и настройките.
- Никога: оптимизираните ви изображения остават такива, каквито са, а запазените оригинали остават в
uploads/symelo-images/backups.
За да се върнете напълно към оригиналните си изображения:
- Advanced → Restore all originals.
- Изчакайте, докато Advanced → Background processing → Waiting in the queue покаже 0.
- Отметнете Delete its settings, records and the WebP/AVIF copies и натиснете Save changes.
- Деактивирайте и изтрийте плъгина.
- Изтрийте папката
uploads/symelo-images, ако в нея е останало нещо.
За разработчици
Константи в wp-config.php
Константите имат предимство пред екрана с настройки и заключват съответните опции.
| Константа | Стойности | Настройка |
|---|---|---|
SYMELO_IMAGES_DELIVERY | picture, rewrite или none | Delivery → Serving WebP and AVIF |
SYMELO_IMAGES_WORKER_SPEED | fast, normal или gentle | Advanced → Background speed |
При невалидни стойности на SYMELO_IMAGES_DELIVERY и SYMELO_IMAGES_WORKER_SPEED се използват стойностите по подразбиране (picture, normal).
Филтри
| Филтър | По подразбиране | Предназначение |
|---|---|---|
symelo_images_capability | 'manage_options' | Правото (capability) за екрана с настройки, масовата оптимизация и REST API. За оптимизиране и възстановяване на отделни изображения в медийната библиотека (бутони, групови действия) е нужно само право за редактиране на съответното изображение (edit_post), така че авторите могат да оптимизират собствените си качвания. |
symelo_images_engine_order | Механизмите, подредени по ранг | ( array $engine_ids, string $task ). Автоматичният ред за всяка задача (jpeg, png, webp, avif, pdf, resize). |
symelo_images_max_pixels | 60000000 | Изображенията с повече пиксели се пропускат. |
symelo_images_max_bytes | 100 * MB_IN_BYTES | По-големите файлове се пропускат. |
symelo_images_imagick_limits | памет 256 MB, map 512 MB, диск 2048 MB, 1 нишка, 180 с | Име на константа Imagick::RESOURCETYPE_* => ограничение. |
symelo_images_pace | Вижте Скорост на фоновата обработка | ( array $profile, string $speed ). Ключове: budget, pause, nice, idle_io, threads, max_load. |
symelo_images_worker_budget | Бюджетът на избраната скорост | Секундите, през които едно фоново изпълнение работи, преди да предаде работата на следващото (минимум 5). |
symelo_images_dispatch_args | Неблокираща POST заявка | Аргументите на wp_remote_post() за заявката, която сайтът изпраща до самия себе си. |
symelo_images_skip_page | false | Върнете true, за да пропуснете обработката на цялата страница (<picture> и отложено зареждане) за текущата заявка. |
symelo_images_more_from_symelo | [] | Продуктите, изброени под „More from Symelo LTD“ в раздела Support. |
symelo_images_tabs | [] | Допълнителни раздели в екрана на плъгина (slug => label); вижте docs/extending.md. |
symelo_images_warnings, symelo_images_notes | Проверките на библиотеките | ( string[] $items, Plugin $plugin ). Предупрежденията (в Overview) и бележките (в Engines), които се показват също в системната информация и в GET /status. |
symelo_images_system_info | Секциите на отчета | ( array $sections, Plugin $plugin ). Секциите на системната информация в раздела Support. |
symelo_images_rest_status | Отчетът за състоянието | ( array $status, Plugin $plugin ). Отговорът на GET /status. |
Действия
| Действие | Аргументи | Кога |
|---|---|---|
symelo_images_loaded | Plugin $plugin | Плъгинът е зареден. |
symelo_images_register_engines | EngineManager $engines | Списъкът с механизми се изгражда; добавяйте механизми с $engines->add(). |
symelo_images_file_optimized | FileRecord $after, FileRecord $before | След като файл е оптимизиран, оптимизацията му е неуспешна, бил е пропуснат или е възстановен. |
symelo_images_engines_tab | Plugin $plugin | В края на раздела Engines, за картите на добавките. |
symelo_images_tab_{$slug} | Plugin $plugin | Изобразява панела на раздел, добавен със symelo_images_tabs. |
Добавките се изграждат върху тези куки (hooks) и върху класовете, изброени в docs/extending.md, където са обяснени също механизмите, ранговете и константата SYMELO_IMAGES_API_VERSION (в момента 1.0).
HTML класове и атрибути
| Клас или атрибут | Ефект |
|---|---|
skip-lazy, no-lazy, symelo-no-lazy, data-skip-lazy | Това изображение или iframe никога не се зарежда отложено. |
no-picture, skip-picture, symelo-no-picture, data-skip-picture | Това изображение никога не се обвива в <picture>. |
fetchpriority="high" | Никога не се зарежда отложено. |
WP-CLI
| Команда | Какво прави |
|---|---|
wp symelo-images status | Механизмът за всяка задача, общият брой файлове, спестеното място и размерът на опашката, както и предупрежденията за библиотеките. |
wp symelo-images optimize <id>... [--force] | Оптимизира веднага тези прикачени файлове (и създава липсващите размери за точките на прекъсване). --force обработва отново и вече оптимизираните файлове. |
wp symelo-images optimize --all [--force] | Всички изображения в медийната библиотека (и PDF файловете, когато се оптимизират PDF файлове). |
wp symelo-images restore <id>... | Възстановява тези прикачени файлове. |
wp symelo-images restore --all [--yes] | Възстановява всички оптимизирани файлове, включително файловете от папки, и премахва всички копия. |
wp symelo-images run [--max-seconds=<seconds>] [--paced] | Обработва опашката, докато се изпразни (или докато изтече времето, минимум 10 секунди). Използвайте тази команда от системна cron задача. Без --paced тя работи без паузи; с --paced спазва Background speed като фоновите изпълнения (продължителност на порцията, паузи между масовите порции, изчакване, докато сървърът е зает). |
wp symelo-images folders | Сканира избраните папки и оптимизира новите или променените файлове. |
REST API
Всички маршрути са под /wp-json/symelo-images/v1/ и изискват правото на плъгина (администратор, например с парола за приложение). Маршрутите за прикачени файлове проверяват и дали можете да редактирате всеки от тях.
| Метод и маршрут | Параметри | Какво прави |
|---|---|---|
GET /status | – | Пълен отчет: версия и версия на API, платформа, механизми, задачи, предупреждения и бележки, настройки, общи стойности, напредък на масовата оптимизация, състояние на фоновия процес, доставяне (включително проверката за поверителност на папката с резервни копия, delivery.private_files). |
GET /settings | – | Всички настройки. |
POST /settings | JSON тяло с произволни ключове на настройки | Променя само изпратените ключове, като ги валидира както екранът с настройки. Връща настройките и евентуалните грешки. |
POST /optimize | ids (масив, до 500), force (bool), now (bool) | Добавя прикачени файлове в опашката; с now ги обработва в рамките на заявката. |
POST /restore | ids, now | Възстановява прикачени файлове. |
GET /attachments/{id} | – | Записите за един прикачен файл. |
GET /bulk | – | Напредъкът на масовата оптимизация. |
POST /bulk | action (start, pause, resume, cancel), reoptimize, media (по подразбиране true), folders | Управлява масовата оптимизация. |
POST /worker | seconds (5–60, по подразбиране 20) | Обработва опашката за известно време в рамките на тази заявка (алтернатива на WP-CLI при външен cron). |
POST /delivery/test | – | Изпълнява теста за доставянето. При <picture> таговете page съдържа проверката на началната страница (images, pictures, foreign, hosts), а ok/message я описват. |
POST /folders | action (scan, optimize) | Сканира или оптимизира избраните папки. |
POST /maintenance | action (restore_all, drop_backups, clear_queue, retry_failed) | Действията по поддръжката от разделите Advanced и Overview. |
Планирани задачи
| Кука | График | Предназначение |
|---|---|---|
symelo_images_daily | Ежедневно | Изтрива остарелите временни файлове, възстановява липсващите сървърни правила и сканира избраните папки. |
symelo_images_worker | Всяка минута, само докато има работа в опашката | Резервен механизъм, който стартира фоновите изпълнения. |
symelo_images_worker_next | Еднократно | Стартира следващото изпълнение след пауза (при скорост Gentle или зает сървър). |
symelo_images_folder_check | На всеки 10 минути, докато има избрани папки и ежедневната проверка е включена | Оптимизира отново изображенията от папки, които са били върнати в изходния си вид. |
Всички те се премахват при деактивиране.