Skip to content

A set of scripts for adding webp/avif and lazyloading to php-based site, and other modifications of html-markup. Used rosell-dk/webpconvert, Imangazaliev/DiDOM, ApoorvSaxena/lozad.js, aFarkas/lazysizes

Notifications You must be signed in to change notification settings

HDDen/output_modifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

output_modifier

Набор php-скриптов для добавлСния ΠΊ сайту webp/avif-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, LazyLoad (Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π²Ρ‹Π±ΠΎΡ€ + Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚), ΠΈ возмоТности ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ html-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹: rosell-dk/webpconvert, Imangazaliev/DiDOM, ApoorvSaxena/lozad.js, aFarkas/lazysizes.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  1. Output_modifier.php ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ html-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ;
  2. DiDOM строит ΠΈΠ· Π½Π΅Ρ‘ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, собираСт ΠΏΡƒΡ‚ΠΈ ΠΊ исходным изобраТСниям ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² _setings.php сСлСкторов;
  3. WebpConvert ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ…, ΠΈ сообщаСт ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅;
  4. Если всё ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π³Π»Π°Π΄ΠΊΠΎ, DiDOM подставляСт src webp-вСрсии Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² _settings.php Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚; Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ LazyLoad;
  5. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² настройках (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ width/height ΠΈ alt ΠΊ img, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ), Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² additional_works.php; Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прСобразовываСтся Π½Π°Π·Π°Π΄ Π² строку;
  6. Output_modifier.php Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ html-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ.
  7. ???????
  8. PROFIT, сайт ускорСн!

Быстрый старт:

include_once $_SERVER['DOCUMENT_ROOT'] . '/php/webp/output_modifier.php';
if (function_exists('modifyImagesWebp')){
    ob_start();
}
// <html>...</html>
if (function_exists('modifyImagesWebp')){
    $modified_output = ob_get_clean();
    $modified_output = modifyImagesWebp($modified_output);
    echo $modified_output;
}

Π’Π°ΠΊΠΆΠ΅, Π² случаС использования LazyLoad, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Lozad.js/LazySizes.js ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ ./staff/js/ .

Avif-Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ "Π½Π° Π»Π΅Ρ‚Ρƒ", ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ самим ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ рядом с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, сохранив ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ структуру ΠΏΠ°ΠΏΠΎΠΊ, ΠΈ ΡƒΠΊΠ°Π·Π°Π² эту ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ Π² настройкС $params['avif']['path_prefix']. Для webp Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ прСфикс ΠΏΡƒΡ‚ΠΈ, $params['webp']['store_converted_in'].

Π’Π°ΠΊΠΆΠ΅, Ссли Π½Π΅Ρ‚ возмоТности ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΊ сайту, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запросов *.jpg/*.png Π½Π° Ρ„Π°ΠΉΠ» webp-on-demand.php. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ пСрСнаправлСния для apache:

#Redirect images to webp-on-demand.php (if browser supports webp)
#RewriteCond %{HTTP_COOKIE} ^.*deb=true.*$ [NC]
#RewriteCond %{HTTP_HOST} ^(.*)\.site\.ru$ [NC] # для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сайта / ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π°
RewriteCond %{HTTP_COOKIE} !^.*webpactive=false.*$ [NC]
#RewriteCond %{REQUEST_URI} !^/admin(.*)$ [NC]
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{HTTP_COOKIE} ^.*webpactive=true.*$ [NC,OR]
RewriteCond %{HTTP_ACCEPT} image/webp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Chrome [OR]
RewriteCond %{HTTP_USER_AGENT} "Google Page Speed Insights"
RewriteRule ^(.*)\.(jpe?g|png)$ /php/webp/webp-on-demand.php [NC,L]

About

A set of scripts for adding webp/avif and lazyloading to php-based site, and other modifications of html-markup. Used rosell-dk/webpconvert, Imangazaliev/DiDOM, ApoorvSaxena/lozad.js, aFarkas/lazysizes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published