Оптимизация сайта на MODX Revolution

Следите за временем генерации страницы

Добавьте в футер такую конструкцию:


<!--
Время генерации страницы: [^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-&gt;cacheManager-&gt;get($cache_key);

if (empty($output)) {
  $output = $modx-&gt;getChunk($name, $scriptProperties);
  $modx-&gt;cacheManager-&gt;set($cache_key,$output);
}

return $output;

После этого заменим вызов чанков нашим сниппетом:


[[$header]]        <!--  →  -->  [[chunk? &amp;name=`header`]]
[[$footer]]        <!--  →  -->  [[chunk? &amp;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>
  
Комментарии ()
    Ваш email не будет опубликован. Обязательные поля отмечени символом *