Оптимизация сайтов, всего пару-тройками строк.
Июнь 10, 2008 – 18:29То о чем пойдет речь поможет в разы:
1. Сэкономить трафик вашим посетителям
2. Сэкономить ресурсы вашего сервера, где лежат скрипты вашего сайта
3. Уменьшить нагрузку
Как? Да очень просто. Есть такой файлик на всех хостингах .htaccess - вот с ним мы и будем работать. Работа не пыльная и займет всего 10-20 минут вашего времени, а результат вы увидите сразу же!
Открываем файл .htaccess, если вы используете какой-либо движок то там уже может быть что-то прописано для движка. Открываем и в свободное место пишем следующее:
#------------------------------#
# Кеширование img/files/html
#------------------------------#
ExpiresActive on
ExpiresByType image/jpeg "modification plus 3 months"
ExpiresByType image/gif "modification plus 12 months"
ExpiresByType image/png "modification plus 12 months"ExpiresByType text/css "modification plus 3 months"
ExpiresByType text/javascript "modification plus 3 months"ExpiresByType application/x-httpd-php "access plus 1 day"
ExpiresByType text/html "access plus 1 day"
Итак что мы сделали?
1. Активировали кеш (сейчас я не буду вдаваться в технический язык и говорить как это все называется, коротко но ясно)
ExpiresActive on
2. Выставили срок истечения обновления файла на плюс 3 месяца = plus 3 months. То есть мы дали понять, что этот файл будет обновлен через 3 месяца.
ExpiresByType image/jpeg "modification plus 3 months"
3. Эта строка делает то же самое но только с программой PHP на срок 1 день.
ExpiresByType application/x-httpd-php "access plus 1 day"
Как вы поняли, можно совмещать директивы с разными типами файлов.
Типы MIME Тип файла Архив RAR (.rar) application/x-tar Архив ZIP (.zip) application/x-zip-compressed Исполняемый файл для DOS или Microsoft Windows (.e application/octet-stream Аудио- или видеозапись ASF video/x-ms-asf Аудио- или видеозапись WMV video/x-ms-wmv Аудиозапись AIFF audio/aiff Аудиозапись AU (.au .snd) audio/basic Аудиозапись MIDI audio/mid Аудиозапись MP3 audio/mpeg Аудиозапись WAV (.wav) audio/x-wav Аудиозапись WMA audio/x-ms-wma Аудиозапись AVI video/avi Аудиозапись AVI (.avi) video/x-msvideo Видеозапись Indeo (IVF) video/x-ivf Видеозапись MPEG (.mpeg .mpg .mpe) video/mpeg Видеозапись QuickTime (.qt .mov) video/quicktime Визитная карточка, используемая почтовыми программ text/x-vcard Графический файл ART image/x-jg Графический файл BMP image/bmp Графический файл GIF image/gif Графический файл JPEG image/jpeg Графический файл PNG (.png) image/png Графический файл Macromedia Flash application/futuresplash Графический файл TIFF image/tiff Документ Adobe Acrobat application/pdf Документ HTML text/html Документ Microsoft Excel application/x-msexcel Документ Microsoft Word application/msword Документ RTF application/msword Документ RTX text/richtext Документ XML text/xml Приложение application/x-msdownload Приложение HTML (HTA) application/hta Таблица стилей HTML text/css Текстовой документ text/plain ECMAScript text/ecmascript Microsoft JScript text/Jscript Microsoft JScript text/javascript Microsoft VBScript text/vbs Microsoft VBScript text/vbscript Трехмерная интерактивная графика в формате VRML (. x-world/x-vrml
Но чаще кэшировать имеет смысл следующие типы:
Но для сайта используются только картинки типа JPEG (image/jpeg),GIF (image/gif),PNG (image/png), скрипты JAVASCRIPT (text/javascript), таблицы стилей CSS (text/css) ну и сам HTML (text/html) вместе с PHP (application/x-httpd-php)
И хотя как говорят некоторые люди, Opera и так хорошо кэширует. Но вы ведь не уверены что все ваши посетители сайта используют именно Оперу? Я например использую Firefox и точно знаю пока я не добавил эти директивы в файл htaccess броузер никак ничего не кешировал.
Если картинка выводится через скрипт, то можно использовать следующий код, кстати замечу что даже если вы скачиваете что-то с совершенно левого сайта (например картинки), то это также работает.
Кэширование изображений с помощью PHP:
//+-------------------------------------------------------------------------------+
//|
//| Получение даты/времени. для поля Expires (кэширования)
//|
//+-------------------------------------------------------------------------------+
$time =time(); // GET CURRENT DATE-TIME
$dayofweek =date('D',$time);
$year =date('Y',$time);
$month =date('M',$time);
$day =date('d',$time);
$hour =date('H',$time);
$minute =date('i',$time);//+-------------------------------------------------------------------------------+
//|
//| Заголовки изображения, кеширование на 3 года.
//|
//+-------------------------------------------------------------------------------+
header("Content-type: image/jpeg");
header("Cache-control: public, max-age=".(60*60*24*120).', must-revalidate');
header("Expires: $dayofweek, $day $month ".($year+3)." $hour:$minute:00 GMT");
Это способ кэширования на стороне клиента с помощью заголовков, передаваемых при передаче документа, не важно какого, картинки или текста. Замечу, что в данном коде тип изображения JPEG (image/jpeg)
header("Cache-control: public, max-age=".(60*60*24*120).', must-revalidate');
Это установка кэша публичный, максимальный срок 6 месяцев (60*60*24*120) в секундах, броузер должен следовать инструкциям.
header("Expires: $dayofweek, $day $month ".($year+3)." $hour:$minute:00 GMT");
Этот кусок в передаваемом изображении говорит о том, что документ обновиться через три года ($year+3)
Если Вы не программист, используйте первый способ на уровне htaccess он и проще и меньше напряга с ним. Если же вы оптимизируете большой сайт на вывод изображения через скрипт, используйте второй вариант.
Вы можете эксперементировать с PHP кодом, и напомню, что заголовки можно передавать не только изображениям. Но и на простой вывод текста, например:
header("Content-type: image/jpeg");
header("Cache-control: public, max-age=".(60*60*24*120).', must-revalidate');
header("Expires: $dayofweek, $day $month ".($year+3)." $hour:$minute:00 GMT");echo 'Hello world! :)';
Успешной Вам оптимизации!
Похожие статьи: Ссылка для блога:
Ссылка для форума: