Як налаштувати і перевірити стиснення сайту

Основним фактором є обсяг переданих даних. Тобто, прискорити сайт - означає домогтися меншого обсягу переданих даних, зберігши при цьому загальний обсяг інформації на сторінках і їх високу якість. Знати методи, що дозволяють реалізувати ці заходи, вкрай важливо для будь-якого веб-майстри. Тому сьогодні ми розглянемо, що таке стиснення в Інтернеті, навіщо воно потрібне і як правильно архівувати дані на сайті.

Їх дуже багато, але для зручності розділимо їх на три великі групи:

Як налаштувати і перевірити стиснення сайту

Run-length encoding (RLE) - найпоширеніший і простий алгоритм стиснення інформації. У ньому послідовно повторювані символи замінюються одним символом, що вказує на потрібну кількість повторів.

Наприклад, є рядок АААААА, для збереження якої потрібно 6 байт (по байту на символ). Принцип стиснення зводиться до того, що ми вживаємо 6А, завдяки чому займаємо лише 2 байта і економимо 4 байта пам'яті. Якщо кількість повторів в вихідному коді сайту велике, ефективність алгоритму буде вкрай високою.

Але при цьому у алгоритму є недолік. Він практично неефективний при послідовності символів, які не повторюються. Наприклад, є послідовність БВБВБВ, що займає 6 байт. Застосування алгоритму призведе до такої послідовності 1Б1В1Б1В1Б1В на цілих 12 байт. Але вирішити цю проблему можна - для цього передбачено кілька методик.

Група алгоритмів LZ (за прізвищами розробників Лемпела і Зива) спрямована на стиск зустрічалися раніше послідовностей символів. В процесі застосування алгоритмів розробляється динамічна таблиця (словник), в якій є список зустрічалися послідовностей і їх закодованих значень. Ефективність стиснення при цьому набагато вище, ніж у RLE-алгоритмів.

Gzip - найвідоміша і ефективна реалізація описаного вище принципу стиснення. Раніше в Інтернеті використовували два підходи до стиснення gzip, а також deflate. Вони відрізнялися тим, що gzip відправляв початок потоку даних із зазначенням, що ці дані gzip-стислі, а deflate не відправляти. Процес gzip виявився простіше, тому було вирішено підтримувати повсюдно тільки його.

Налаштовуючи gzip для досягнення стиснення сторінок потрібно припускати оптимальний обсяг архівування, після якого процес почне вже втрачати свою ефективність. Чим вище ступінь стиснення, тим більше буде навантаження на процесор (тому на стиск потрібно більше часу). Чим більше процесорні витрати, тим помітніше зміни ефективності gzip-архівування. Подивившись на графік нижче, можна побачити, що до п'ятого ступеня стиснення йде пропорційний лінійний зростання ефективності, після чого йде спад. Якщо ресурсів процесора багато, можна досягати і сьомий, і дев'ятого ступеня стиснення.

Як налаштувати і перевірити стиснення сайту

Директиви для включення gzip-архівування для nginx:

За допомогою директиви gzip_vary можна передавати заголовки на кешуючий проксі, вказуючи характеристики кешування архівуються сайтів. Директива gzip_types вказує, до яких типу файлів ніжно застосовувати архівування на сервері.

Щоб заощадити ресурси процесора, можна користуватися заздалегідь стислими за допомогою алгоритмів gzip файлами, у яких є додаткове розширення .gz (для прикладу, main.css.gz - це архів для main.css). Для таких файлів можна використовувати максимальний рівень стиснення - вони архівуються один раз, а далі сервер буде користуватися скороченою версією при взаємодії з користувачами, що підтримують стиснення.

Щоб підключити статичну архівування в nginx, потрібно забезпечити підтримку gzip_static. Для цього потрібно переконатися, що в конфігурації директива прописана таким чином: gzip_static on;

За допомогою модуля mod_deflate забезпечується відвантаження архівуються версій файлів. Якщо модуль є на сервері, його включають в такий спосіб:

У диспетчері служб IIS потрібно зайти в властивості «Веб-сайти» і далі перейти в «Служби». Компресію також включають за допомогою web.config, використовуючи таку конфігурацію:

Якщо вам потрібна допомога фахівця, звертайтеся: дам необхідні консультації, допоможу визначитися з настройками, використовую всі прийнятні методи для збільшення швидкості завантаження сторінок сайту.

Схожі статті