A kép tömörítése a kiszolgálón

A kép tömörítése a kiszolgálón

Kiderül, hogy a webhelyén lévő képek többet mérnek, mint amennyit kellene. Ez nem optimális tömörítési algoritmusoknak köszönhető, amelyek különböző programokat használnak. By the way, a Photoshop File-> Save a weben nagyon jól optimalizálja a képet. És itt az ACDSee és különösen a GD típusú php-könyvtárak messze nem optimális eredményt adnak.







Ezenkívül a kép további szöveges információkat tartalmaz: a kép dátuma, a fényképezési paraméterek, a fényképezőgép modellje stb. Legyen 1%, de miért töltse le a felhasználót.

Az alábbiak mindegyike a tömörítésre vonatkozik, minőségcsökkenés nélkül. Ie a kép vizuálisan az elveszíti a minőséget.

Az egyik ilyen kép 1,7 kb-s, a másik 2,3 kb

Ezek közül a képek közül 32 kb, a másik 42 kb

A kép tömörítése a kiszolgálón

A kép tömörítése a kiszolgálón

Mi az?

Annak érdekében, hogy felgyorsítsa az oldal betöltését, különösen mobileszközökön (a mobiltelefonról szóló post később lesz). Hát, és egy hely a lemezen, egyáltalán nem gumi.

Például erre a bejegyzésre. ahol a fotók felét a Photoshop optimalizálták, a tömörítés 5% -ot adott ki, nem annyira, de abszolút értékben ez 250KB, ami jó.

És észrevettem, az első digitális fényképezőgépről vagy régebbi felvételekről készített régi fotókat 50% -kal tömörítik. Annak ellenére, hogy ezek a képek kifelé néznek, és így összenyomják a határt.

Hol kezdjem?

A tömörítés a szerverre telepítendő könyvtárak használatával történik

jpg: Jpegoptim esetén
telepítse apt-get install jpegoptim

a png esetében: OptiPNG
telepítse apt-get install optipng

a gif: gifsicle számára
telepítsen apt-get install gifsicle-t

Hogyan kell tömöríteni

A konzolról indítunk

Vannak parancsok a könyvtárban lévő összes kép tömörítésére, de a tollak még mindig szenvednek. Ezért a folyamatot automatizálni kell. Általánosságban elmondható, hogy az alábbi ötletnek van értelme, ha tucatnyi webhely és több tízezer kép van.







Ugyanakkor meg kell emlékeznünk arra, amit már optimalizáltunk, hogy ne csináljunk kettős munkát. Egyébként, ha a kép már optimalizált, de a kép újraoptimalizálásával semmi sem történik.

Képszámlálás

A legalkalmasabb az adatok elérési útvonalának tárolása az adatbázisban, és időnként (koronával) optimalizálni őket.

Hozzon létre egy külön img-adatbázist egyetlen img táblával

Az is_compress zászló a feldolgozási státuszt jelzi
0 - még nem optimalizált
1 - sikeresen optimalizált
2 - optimalizálási hiba

A kép tömörítése a kiszolgálón

Valójában ez egy rekurzív függvény, amely megkerüli az összes alkönyvtárat, és ír be az img tábla elérési útjait. Ie Először össze kell gyűjtenie a főkönyvtárak listáját képekkel. Ha sok kép van, akkor képeket gyűjthet össze egy csapásra rekurzív (szerver) formában. A rekurzió a szerver számára időigényes eljárás.

Minden oldalon 1-2 betöltési pont van (például a /ajax/upload.php)
Ezekben a szkriptekben be kell illeszteni

Opcióként optimalizálhatja a képet, például azonnal írja be a szkriptet
shell_exec ( "jpegoptim" .escapeshellarg ($ _ SERVER [ 'DOCUMENT_ROOT'] $ sFileLocalPath) "--strip-all" ..);
De a tárolás egyetlen adatbázisban valahogy nagyobb rendet eredményez.

Berlagát optimalizáljuk

Vegyünk minden képet, és a shell_exec () segítségével indítsuk el a szükséges folyamatot (jpegoptim, optipng, gifsicle) a fájlkiterjesztéstől függően.

Nem kell egyszerre levennie az egész táblát - a szerver lefagy. Bram 5-100 képre egy időben. Ezt a forgatókönyvet minden percben cronban tartjuk. Ie amikor új képet ad hozzá a webhelyhez - egy percen belül optimalizálódik.

$ eredmény a tömörítés szöveges eredménye. Tartalmazza az ellopott fájl százalékos arányát - jelöljük a flag is_compress = 1. Ha nincs ilyen információ, hiba történt, és ezt a fájlt a zászlóval is_compress = 2 jelöljük

Így néz ki, amikor megjelenik (echo $ result. "
„;)

A kép tömörítése a kiszolgálón

Szabályszerű hibák a helytelen fájlkiterjesztés miatt. Például volt egy hifa, és a webhelyen van egy kiterjesztése jpg - a böngészők általában lehet megjeleníteni. Természetesen meghatározhatja a kiterjesztést a mime-típus használatával.

Fájlengedélyek

mert A shell_exec a php-script-ből kerül végrehajtásra, akkor a képek tulajdonosának olyannak kell lennie, mint az Apache. www-data.

Gyakran előfordul, hogy a webhely ftp root-ként gyökerezik, így nem optimalizálhatja és felülírhatja az ilyen fájlokat a php-ből.

Ezért győződjön meg arról, hogy a szükséges könyvtárak és fájlok a www-adatokhoz tartoznak, és a jogok meg vannak adva. Azok a könyvtárak, amelyekben a fájlok párnázottak, helyes 755, és a 644-es képek esetében.

Ezt megteheti a konzolon, az ftp-manageren vagy az ISP-manageren keresztül (ez kényelmes dolog a szerver adminisztrációjához)

A kép tömörítése a kiszolgálón

A kép tömörítése a kiszolgálón