eTXT

Оптимизация WordPress и снижение нагрузки

Вообще движок wordpress очень разнообразен, содержит много функций, которые в принципе не нужны для обычной работы блога, сегодня мы как раз разберем немного этих функций, и отключим их, чтобы сделать небольшую оптимизацию.

1. Функция is_blog_installed — каждый раз проверяет, установлен ли блог или нет.

Расположена она в файле — wp-includes/functions.php => Теперь читайте внимательно что написано в коде находящемся ниже.

/*находим строки с этим кодом */
function is_blog_installed() {
global $wpdb;

/*и меняем на вот эти */
function is_blog_installed() {
return true;
global $wpdb;

2. Функции _maybe_update_core(), _maybe_update_plugins(), _maybe_update_themes() — проверяют обновления движка, плагинов, установленной темы.

Расположены они в файле — wp-includes/update.php => Теперь снова читайте внимательно что написано в коде находящемся ниже и выполняйте нужные действия.

/*находим строки с этим кодом */
add_action( 'admin_init', '_maybe_update_core' );
add_action( 'wp_version_check', 'wp_version_check' );
add_action( 'load-plugins.php', 'wp_update_plugins' );
add_action( 'load-update.php', 'wp_update_plugins' );
add_action( 'load-update-core.php', 'wp_update_plugins' );
add_action( 'admin_init', '_maybe_update_plugins' );
add_action( 'wp_update_plugins', 'wp_update_plugins' );
add_action( 'load-themes.php', 'wp_update_themes' );
add_action( 'load-update.php', 'wp_update_themes' );
add_action( 'admin_init', '_maybe_update_themes' );
add_action( 'wp_update_themes', 'wp_update_themes' );
/*и просто закомментируйте их, либо удалите*/

#add_action( 'admin_init', '_maybe_update_core' );
#add_action( 'wp_version_check', 'wp_version_check' );
#add_action( 'load-plugins.php', 'wp_update_plugins' );
#add_action( 'load-update.php', 'wp_update_plugins' );
#add_action( 'load-update-core.php', 'wp_update_plugins' );
#add_action( 'admin_init', '_maybe_update_plugins' );
#add_action( 'wp_update_plugins', 'wp_update_plugins' );
#add_action( 'load-themes.php', 'wp_update_themes' );
#add_action( 'load-update.php', 'wp_update_themes' );
#add_action( 'admin_init', '_maybe_update_themes' );
#add_action( 'wp_update_themes', 'wp_update_themes' );

После всех этих отключений, снимается нагрузка примерно в 1.5 — 2 раза.

Гуляя по просторам интернета, читая разные статьи об оптимизации движка WordPress, набрел я на тему генерации мета тегов. Так вот, в тех статьях описано действие по отключению генерации ненужных мета тегов в шаблон темы, которая у вас установлена, тем самым снимая небольшую нагрузку на блог.

Там используется встроенная функция wordpress — remove_action, которая просто отключает генерацию тех тегов, которые вы задали в функции. Но тут есть один момент, что выполняя функцию, нагрузка не снимается, она также остается, ну может становиться чуть меньше. И дальше меня удивило, что автор пишет, что нельзя напрямую удалить нужный мета тег из генерации. И вот сегодня я опровергну этот факт, об не удалении генерируемых мета тегов.

Ну что же, приступим. :)

3. Удалим версию движка, от злобно настроенных глаз.

Открываем — wp-includes/general-template.php затем внимательно читаем что написано в коде и выполняем.

/*находим вот это код*/
function get_the_generator( $type ) {
switch ($type) {
case 'html':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '">';
break;
case 'xhtml':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '" />';
break;
case 'atom':
$gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
break;
case 'rss2':
$gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
break;
case 'rdf':
$gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
break;
case 'comment':
$gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
break;
case 'export':
$gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '"-->';
break;
}
return apply_filters( "get_the_generator_{$type}", $gen, $type );
}

/*и удаляем вот эти строки*/
case 'html':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '">';
break;
case 'xhtml':
$gen = '<meta content="WordPress ' . get_bloginfo( 'version' ) . '" />';
break;

4. Если вы не пользуетесь всякими блог-клиентами или веб сервисами для публикации записей, то можете смело выполнять следующие действия.

Открываем — wp-includes/general-template.php и снова делаем так как написано в комментариях к коду

/*находим вот этот код*/
function rsd_link() {
echo '<link rel="EditURI" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
}

/*и меняем на вот этот*/
function rsd_link() {
return true;
}

/*находим вот этот код*/
function wlwmanifest_link() {
echo '<link rel="wlwmanifest" href="'. get_bloginfo('wpurl') . '/wp-includes/wlwmanifest.xml" /> ' . "\n";
}

/*и меняем на вот этот*/
function wlwmanifest_link() {
return true;
}

А теперь самое интересное. :)

5. Теги link rel=»start», link rel=»next», и так далее, используются браузером (например, Google Chrome) для предварительного кэширования. То есть когда пользователь заходит на страницу, браузер подгружает следующую и предыдущую страницы, чтобы при переходе на них она грузилась из кэша браузера. Таким образом, создается лишняя и ненужная нагрузка на блог, ведь вы и так используете кэширование плагином.

Открываем — wp-includes/link-template.php и снова все делаем по порядку…

/*находим вот этот код*/
function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_boundary_post_rel_link($title, $in_same_cat, $excluded_categories, true);
}

/*и меняем на вот этот*/
function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}

/*находим вот этот код*/
function index_rel_link() {
echo get_index_rel_link();
}

/*и меняем на вот этот*/
function index_rel_link() {
return true;
}

/*находим вот этот код*/
function parent_post_rel_link($title = '%title') {
echo get_parent_post_rel_link($title);
}

/*и меняем на вот этот*/
function parent_post_rel_link($title = '%title') {
return true;
}

/*находим вот этот код*/
function adjacent_posts_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
}

/*и меняем на вот этот*/
function adjacent_posts_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}

/*находим вот этот код*/
function next_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', false);
}

/*и меняем на вот этот*/
function next_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}

/*находим вот этот код*/
function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
echo get_adjacent_post_rel_link($title, $in_same_cat, $excluded_categories = '', true);
}

/*и меняем на вот этот*/
function prev_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') {
return true;
}

В заключении хочется сказать, что подходя к делу с четко поставленной целью, всегда добиваешься результатов.

h++p://makarou.com/nebolshaya-optimizaciya-wordpress-%E2%80%93-chast-1
h++p://makarou.com/nebolshaya-optimizaciya-wordpress-%E2%80%93-chast-2

eTXT

1 комментарий

  1. Да, однако это надо после всех этих изменений сделать списочек всех этих исправленных файлов, чтобы при обновлении движка не заменить их на новые.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


2 × три =

*