Следите за временем генерации страницы
Добавьте в футер такую конструкцию:
<!-- Время генерации страницы: [^t^]</br> Время парсинга: [^p^]</br> Время выполнения запросов: [^qt^]</br> Всего запросов: [^q^]</br> Источник: [^s^]</br> Память: [[!mem]]</br> -->
Она будет показывать вам общее время генерации страницы. Если страница генерируется больше 1 секунды (или если обновить страницу, а время генерации больше 0,5 секунды), это плохо. Если советы выше не помогли, то читаем советы ниже про кеширование. Снипет mem:
return round(memory_get_usage()/1024/1024, 4)." Mb";
Кеширование целых блоков.
Зачастую некоторые блоки сайта одинаковые (новости, баннеры, панели сбоку), что бы постоянно не генерировать эти блоки создадим новый снипет kech:
$cache_key = "chunk_".$name; $output = $modx->cacheManager->get($cache_key); if (empty($output)) { $output = $modx->getChunk($name, $scriptProperties); $modx->cacheManager->set($cache_key,$output); } return $output;
После этого заменим вызов чанков нашим сниппетом:
[[$header]] <!-- → --> [[chunk? &name=`header`]] [[$footer]] <!-- → --> [[chunk? &name=`footer`]]
Использование кеша браузера
Чтобы браузер сохранял уже загружаемые ресурсы (JS, изображения, вебшрифты) нужно в htaccess файле указать время хранения этих файлов. Вставьте в ваш .htaccess следующий код:
<ifmodule mod_expires.c=""> ExpiresActive on # Perhaps better to whitelist expires rules? Perhaps. ExpiresDefault "access plus 1 month" # cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5) ExpiresByType text/cache-manifest "access plus 0 seconds" # your document html ExpiresByType text/html "access plus 0 seconds" # data ExpiresByType text/xml "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType application/json "access plus 0 seconds" # rss feed ExpiresByType application/rss+xml "access plus 1 hour" # favicon (cannot be renamed) ExpiresByType image/x-icon "access plus 1 week" # media: images, video, audio ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # webfonts ExpiresByType font/truetype "access plus 1 month" ExpiresByType font/opentype "access plus 1 month" ExpiresByType font/woff "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" # css and javascript ExpiresByType text/css "access plus 2 months" ExpiresByType application/javascript "access plus 2 months" ExpiresByType text/javascript "access plus 2 months" </ifmodule>