Всем привет!
На днях озадачился вопросом ускорения сайта. По горячим следам делюсь приемами.
Измерительный инструмент:
GTmetrix. Рекомендую, ибо понравилось. Сервис предоставляет довольно большое количество информации о результатах анализа сайта. Имеет смысл ее не торопясь поизучать. А также возможность оптимизации изображений.
Прежде чем приступать нелишне будет сделать backup. Используем
Akeeba BackupПриступаем.
У расширений Joomla имеется следующая не очень приятная особенность. Допустим, у вас есть многотысячестраничный сайт. И, допустим, вам нужно установить буквально на пару страниц видео-плеер. После того, как вы установите соответствующее расширение, ссылки на загрузку JavaScript’ов этого расширения появятся на каждой странице вашего сайта.
Вот что здесь можно предпринять. Устанавливаем плагин
Inclusions Remover.
По умолчанию в нем прописано удаление двух скриптов. Интересующие вас скрипты и css-файлы добавляем по аналогии.
После того, как поудаляете все лишнее (не перестарайтесь!), добавим ссылки на загрузку скриптов видеоплеера только на страницы с роликами. Проще всего это сделать, вставив ссылки на скрипты прямо в материал. (Ссылки имеет смысл предварительно скопировать из кода страницы.)
Для этого идем в Админка -> Сайт -> Визуальный редактор по умолчанию и выбираем Редактор - Без редактора. Сохраняем. Добавляем ссылки в материал.
Поудалять таким образом все скрипты и css-файлы вряд ли получиться. Оставшиеся будем оптимизировать. Для этого установим какой-нибудь из плагинов,
jbetolo или
JCH Optimize, или аналогичный.
Я пользуюсь JCH Optimize. Плагин позволяет объединять в один файл множественные файлы JavaScript и css, опционально сжимать их GZip , а также генерировать css-спрайты для фоновых изображений. С настройками проблем возникнуть не должно. Важнее применять настройки по очереди, убеждаясь, что не был нарушен функционал сайта, особенно неочевидный, например, комментирование.
У меня, например, при тестировании css-спрайтов на Денвере - все нормально, а на хостинге - фоновые изображения порублены на куски и разбросаны по всей странице.
GZip-сжатие в плагине я тоже не включал, а сделал это через .htaccess:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
</ifModule>
Заодно добавим в .htaccess информацию по заголовкам Expire и Cache-Control для браузеров:
# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers
Теперь включим кэширование. Мне известны два варианта кэширования в Joomla:
1. Админка -> Сайт -> Общие настройки -> Система -> Установки кеша
2. Админка -> Расширения -> Менеджер плагинов -> Система - Кеш
В подробности я не вникал, но насколько я понимаю, это два различных механизма кэширования. Я использую вариант 1.
После того, как включите кэширование, пройдитесь по модулям, и отключите кэширование там, где нужно (напр. подсветка активного меню, крутящиеся баннеры). В настройках модуля: Расширенные параметры -> Кеширование.
Очистка кэша:
Админка -> Инструменты -> Очистить кеш
Админка -> Инструменты -> Удалить устареший кеш
В зависимости от того, как сконфигурирован ваш сайт, это может понадобиться делать после добавления / редактирования материала.
Были описаны манипуляции для Joomla 1.5.
Запускаем измеритель скорости до начала оптимизации и после ее окончания. Хвастаемся результатами.
В интернете частенько попадается информация о том, что google быстрые сайты любит, а медленные нет.
Напоследок сеошный Bonus Tip, Joomla-независимый.
Замена внешних ссылок на псевдо-внутренние:
В .htaccess добавляем:
RedirectMatch /goto/(.*)$ $1
Внешнюю ссылку записываем:
<a href="/goto/http://en.wikipedia.org/">
В результате получаем рабочую ссылку:
http://mysite.com/goto/http://en.wikipedia.org/