Прискорення свого сайту

Якщо веб-ресурс розвивається і набуває “навороченості”, то при його завантаженні браузер генерує запити до сервера, підвантажуючи HTML-сторінку, CSS файли, скрипти, графіку. Так як на різних сторінках елементи оформлення повторюються, доцільно запровадити кешування таких файлів браузером користувача.

Можна, звичайно, генерувати заголовки типу

header( 'Cache-Control: max-age=604800 ');
header( 'Expires: Sun, 31 May 2009 07:09:57 GMT ');

Але це підходить для динамічного контенту. Якщо сторінки статичні також, варто скористатись розширенням apache mod_expires. Детально все розписано по цьому посиланню, а я коротко підкреслю, в чому суть.

Модуль повинен бути встановлений та включений хостером. В файлі .htaccess можна використати як приклад наступні параметри кешування:

# Включаємо модуль

ExpiresActive On

# говоримо модулю, що всі типи контенту кешуються 1 хвилину з моменту завантаження. Допомагає, якщо відвідувач сайту швидко обновляє сторінку. Йому віддається сторінка з кешу браузера, і навантаження на сервер знижується.
ExpiresDefault “access plus 1 minutes”

# Скрипти окремими файлами кешуємо тиждень – вони і так не змінюються
ExpiresByType application/javascript “access plus 1 week”
ExpiresByType application/x-javascript “access plus 1 week”
ExpiresByType text/javascript “access plus 1 day”

# HTML не кешуємо взагалі
ExpiresByType text/html “now”

# А всяку дрібноту можна
ExpiresByType text/xml “access plus 1 minutes”
ExpiresByType text/css “access plus 1 week”
ExpiresByType text/plain “access plus 1 week”

# Зображення теж рідко змінюються, мають статичні імена, хай тиждень полежать в кеші.
ExpiresByType image/gif “access plus 1 week”
ExpiresByType image/jpg “access plus 1 week”
ExpiresByType image/jpeg “access plus 1 week”
ExpiresByType image/png “access plus 1 week”
ExpiresByType image/bmp “access plus 1 day”

# A36000 означає, що флеш кешуватиметься 36000 секунд від моменту завантаження.
ExpiresByType application/x-shockwave-flash A36000

Додам ще, що можна вказувати період кешування не від моменту доступу до файлу, а від моменту його зміни

ExpiresByType image/gif "modification plus 5 hours 3 minutes"

В мене щось не працювало.

В результаті маємо зменшення кількості вихідного трафіку, якщо хостер обмежує. Бережемо трафік відвідувача. Зменшуємо час завантаження сторінки, за рахунок того, що браузер не робить запитів, а моментально підвантажує з кеша. Зменшуємо навантаження на сервер.

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

This entry was posted in Розробка web. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

You must be logged in to post a comment.