Настройка на софтуерна-компресията и кеширането в apache2

Малко теория

Кеширане. Основният принцип е, че заглавията на споделяне, сървърът ви насочва клиента (браузър), че определено съдържание може да се кешира за дълго време - една седмица, месец, година. След това, в бъдещите искания на това съдържание, браузърът ще изтегли данните от кеша. Лафайет може да свърши, когато:

  1. време Cache живот е изтекъл;
  2. Потребителят ръчно изчистване на кеш паметта - Ctrl + F5,
  3. Приключила пространство на разположение за кеша и кеширани данни е била заменена от нова;
  4. Данните са актуализирани на сървъра страна;

Използването на кеширане да намалите натоварването на сървърите и спасяване на трафика на клиентите и време. Въпреки това, ние трябва да разберем, че кеша на майка сърфист може да бъде изцяло заменен на дневна база, а дори и по-често - всичко зависи от броя на посетените сайтове и количеството на пари в наличност в рамките на квотата.

Компресия. Полезна парче, което позволява да компресирате (чрез софтуерна) данни на сървъра и декомпресира след получаване на клиента (браузър). Клиентът трябва да може да се декомпресира компресираната информация, това, което той каза на Accept-Encoding хедър. например:

Отново се запишете на трафик и по този начин се намалява времето за изчакване. Но, в същото време, малко повече товари процесора декомпресиране на данните.

Необходими модули Apache2

За да се даде възможност за кеширане, ние се нуждаем mod_deflate модул. за кеширане - mod_headers или mod_expires. Mod_headers са удобни също да премахнете заглавието на ETag. го веднъж и не може да има проблеми с кеширане чрез mod_header когато компресията е активирана. За да активирате следва:

За да забраните използването на модули a2dismod отбора:

Окончателно .htaccess

Веднага давам пример .htaccess файл, който е конфигуриран кеширане и компресия. Файлът трябва да съдържа кратки бележки, и по-долу анализира всички директиви и разпоредби, по-подробно.

забележка

FilesMatch и файлове

шаблона се сравнява само с името на файла, така че не можете да посочите пътя на файла в тези директиви.

За да се уточни обхватът на кеш паметта, използвайте следните правила:

софтуерна компресия

Apache2 вече поддържа mod_gzip модул. Сега основният модул е ​​mod_deflate. който включва по-рано. За да се уверите, че компресия работи - Уверете се, че отговорите не съдържат глава Content-Encoding:

Компресия може да бъде конфигуриран да определени файлове на MIME типове, той е отговорен за това правило AddOutputFilterByType.

Модул спадат, когато сгъстен да премахнете глава съдържание дължина. защото дължината на компресиран отговор не е известна към момента на прехвърляне на заглавия. Въпреки това, по време на премахването на заглавната част на ETag отговор - ситуацията се нормализира. Защо?

забележка

кеширане

За кеширане активирахме модули mod_headers и mod_expires. Тези модули позволяват да зададете заглавията в отговор на сървъра и подкрепа на схемата браузър кеширане.

Аз не забелязах ясно за мен, когато mod_deflate на поведение и да конфигурирате кеширане чрез mod_headers. Изчезна Content-Length горен и кеширане спря да работи. Разтворът е намерено - Изтриване заглавието от отговора:

В случай на mod_expires компресия и кеширане да работи правилно дори и с изключен модул mod_headers. Постигнете целта си, ако знаете защо има толкова.

Малко с един поглед

Анализирайте печалба от GZIP -contractions например JQuery-2.0.3.js библиотека. Всъщност, файла (не minifitsirovanny) тежи 236,5KB. mod_deflate го компресира до 70 KB - не е нещо лошо. Следващата заявка, ако е разрешена за кеширане, дори и тези 70 KB, няма да бъдат изтеглени по мрежа - браузър JQuery ще получи от кеша.

Проверете как сбирка minifitsirovannye CSS / JS файлове за пример източник Twitter Bootstrap 3. Имаме bootstrap.min.css 2 файл (100,5 KB) и bootstrap.min.js (27,1 KB) С тегло 127,6 KB. Когато компресията получаваме и 16,5 KB 7,1 КБ, съответно, в общо 23,6 KB.

И в двата случая, спестяване на около 70% от трафика!

# Apache2, # .htaccess, #cache, #gzip, # оптимизация