Кеширане на съдържание с модули Apache

Оферта от 8host.com

кеширане

Какво е кеширане в мрежата?

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

Ефективните правила за кеширане на съдържание могат значително да спестят ресурси и да подобрят обработката на динамично съдържание. Този урок показва как да използвате кеширащите модули на Apache.

Забележка: Този урок се базира на Apache 2.2. В Apache 2.4 някои модули са заменени, така че не всички раздели на ръководството ще бъдат валидни за Apache 2.4.

Кеширане на Apache

Уеб сървърът на Apache предоставя много методи за кеширане на често искано съдържание, най-популярните от които са модулите mod_cache и mod_file_cache.

Mod_file_cache модул

Модулът mod_file_cache е най-простият от горните кеширащи механизми. Той кешира:

  • често искано съдържание;
  • съдържание, което рядко се променя.

Ако тези 2 изисквания са изпълнени, mod_file_cache ще бъде много полезен. Този модул работи, като извършва определени операции за достъп до най-често използваните файлове при стартиране на сървъра.

Mod_cache модул

Модулът mod_cache осигурява HTTP схеми за кеширане. Това означава, че файловете ще бъдат кеширани според периода от време, през който страницата се счита за свежа.

Този модул изпълнява тези операции, като използва модулите mod_mem_cache или mod_disk_cache. Тези модули са по-сложни от mod_file_cache и следователно са по-популярни.

Използване на mod_file_cache

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

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

Модулът работи с две директиви.

Директива MMapFile

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

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

MMapFile /var/www/index.html /var/www/otherfile.html var/www/static-image.jpg

При поискване тези файлове ще бъдат обслужвани от паметта.

Забележка: Ако един от изброените файлове е променен, рестартирайте сървъра.

Директива CacheFile

Тази директива отваря дескриптори на изброените файлове. Създава таблица с отворени дескриптори и я използва, за да намали времето, необходимо за отваряне на файл.

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

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

CacheFile /this/file.html, който/file.html друг/файл/към/server.html

Тези файлове ще бъдат кеширани при стартиране на сървъра.

Използване на модула mod_cache

Модулът mod_cache е по-гъвкаво и ефективно решение. Той прилага HTTP кеширане на най-исканите файлове.

За разлика от повечето кеширащи механизми, които пазят точно копие на данните, докато сървърът не бъде рестартиран, mod_cache може да обработва променящото се съдържание; за това можете да зададете изтичане на кеша.

Работата на този модул се основава на работата на два други модула: mod_disk_cache и mod_mem_cache.

Те се различават по това къде се съхранява кеш паметта; първата съхранява кеша на диска, втората в паметта. URI ключовете се използват за извличане и съхраняване на данни.

Забележка: За да подобрите производителността на сървъра, използвайте CNAME (канонично име).

За целта въведете следната директива в конфигурацията на сървъра или виртуалния хост:

Конфигуриране на кеширане

Този раздел обсъжда общи директиви и техния ефект върху функционирането на кеширащите механизми.

В директорията/etc/apache2/mods-available можете да намерите конфигурационните файлове на горните модули.

Конфигуриране на mod_mem_cache

Конфигурацията на mod_mem_cache изглежда така:

sudo nano /etc/apache2/mods-available/mem_cache.conf

CacheEnable mem/
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048

Тези директиви се четат само ако модулът mod_mem_cache е зареден. Това може да стане чрез стартиране:

sudo a2enmod mem_cache
sudo service apache2 рестартиране

Това ще активира mod_mem_cache и mod_cache.

С този ред Apache ще създаде кеш за съдържанието, съхранявано в „/“ (т.е. за цялото съдържание).

Следващите няколко реда описват общия размер на кеша и обектите, които ще се съхраняват в него. Директивите MCacheSize и MCacheMaxOjectCount задават максималния размер на кеша: първият е използването на паметта, вторият е максималният брой обекти.

MCacheSize 4096
MCacheMaxObjectCount 100

Следващите два реда показват какви типове данни ще бъдат кеширани във връзка с използването на паметта. Настройките по подразбиране кешират обекти от 1 байт до 2 килобайта.

Конфигуриране на mod_disk_cache

Конфигурационният файл mod_disk_cache изглежда така:

sudo nano /etc/apache2/mods-available/disk_cache.conf

CacheRoot/var/cache/apache2/mod_disk_cache
#CacheEnable диск/
CacheDirLevels 5
CacheDirLength 3

Тези настройки ще бъдат заредени, ако активирате модула mod_disk_cache. За да направите това, изпълнете:

sudo a2enmod disk_cache
sudo service apache2 рестартиране

Можете също да използвате тази команда:

CacheRoot/var/cache/apache2/mod_disk_cache
#CacheEnable диск /

Директивата CacheRoot указва местоположението на кешираното съдържание. Дискът/директивата CacheEnable е деактивиран по подразбиране. Трябва да бъде активиран на виртуалния хост.

Следващите две директиви определят структурата на кеширане в основния кеш. Всеки кеширан елемент се хешира към URL адрес и след това хешът се използва като име на файл и път на директория.

CacheDirLevels 5
CacheDirLength 3

Директивата CacheDirLevel задава броя на директориите, които да се създават от хеш-низа; CacheDirLength задава броя знаци в името на всяка директория.

Например сървърът има файл с хеш "abcdefghijklmnopqrstuvwxyz", а директивите CacheDirLevel и CacheDirLength имат следното значение:

CacheDirLevel 2
CacheDirLength 4

Тогава такъв файл ще се съхранява в:

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

Използване на CacheLock

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

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

Можете да избегнете подобни ситуации, като създадете заключващ файл - заключващ файл, който ще проследява актуализацията на кеша и ще блокира входящите заявки към задния край за известно време.

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

CacheLock използва три директиви:
CacheLock [Вкл. | Изключено]
CacheLockMaxAge [време_в_секунди]
CacheLockPath [/ път/към/заключване/директория]

Първата директива позволява тази функция, а третата създава директория за съхраняване на заключващи файлове.

Втората директива, CacheLockMaxAge, задава максималната възраст на заключващия файл в секунди, което е необходимо в случай на грешка или закъснение при актуализиране на ресурси.

Заключение

Гъвкавото кеширане Apache ви позволява да променяте нивото на сложност на кеша в зависимост от нуждите на сървъра. Всеки от горните видове кеширане може значително да подобри производителността на вашия сайт, но е добре да проверите предварително настройките на кеша, преди да започнете, за да се уверите, че този метод е подходящ за вашия сайт.

Също така е важно да сте наясно с последиците от неправилно конфигуриран кеш. След внедряване на кеширането трябва да се уверите, че кешът не отваря публичен достъп до чувствителни данни.

Документацията на Apache съдържа доста съвети за конфигуриране на кеширането.