WP yönetici bölümümü nasıl hızlandırabilirim?


12

Oturdukları sunucular ile internet arasında proxy bulunan birçok WP sitemiz var.

WP'deki bazı şeyler işe yaramaz:

  • Gösterge tablosunda RSS yayınları
  • tema aramak
  • eklentileri aramak
  • çekirdek güncellemeler

Her şeyi manuel olarak yapıyoruz ve sayfa yüklemelerinde SLOWNESS dışında gerçekten hiçbir sorun yok. Görünüşe göre admin'deki hemen hemen her şeyin medya eklemek dışında 4-5 saniye sürmesi şaşırtıcı bir şekilde hızlı.

Arka ucu hızlandırmak için kontrol edebileceğim veya yapabileceğim bazı ilk şeyler nelerdir? (ön uç uçar)


3
Sen tanımlayarak dış istekleri engelleyebilirsiniz define( 'WP_HTTP_BLOCK_EXTERNAL', true );içinde wp-config.php. Ayrıca WordPress yöneticisi Google'dan enqueues Open Sansve diğer yazı tipleri. Bunu da devre dışı bırakabilirsiniz. Yük yöneticisi bölümünü biraz daha hızlı yapar.
Robert hue

@Roberthue - neredeyse yöneticideki sayfaların çoğu web'e çağrı yapıyor gibi görünüyor. Hepsini kapatmak istiyoruz. Dış talebin nasıl tepki verdiğini görmek için şimdi engelleme ekleniyor.
Sting

1
@Roberthue - Bunu neden daha önce hiç kullanmadığımdan emin değilim - WP_HTTP_BLOCK_EXTERNAL ilk uygulandığında biliyor musunuz? Eklentime ekledim (her yerde propogate ettiğim bir eklenti var) ve tüm sayfaları yüklemek için daha hızlı bir yol var. Lütfen bunu bir yanıt ve ızgarasızlar için diğer ipuçları olarak ekleyin.
Sting

Birkaç yıldır orada. Tam olarak ne zaman eklendiğinden emin değilim. Bu makaleyi
Robert hue

1
Cevap olarak lütfen. Ayrıca HTTP API'nin kendisi olduğu sürece (neredeyse) çok uzun zamandır var.
Rarst

Yanıtlar:


12

Altbilgideki jQuery / JavaScript

Yapabileceğiniz bir şey , jQuery'yi altbilgi blog yayınına taşımaktır . Üstbilgide varsayılan olarak gerekli değildir. Normalde sadece temalar için yaptığım gibi, her şeyin hala zor çalışıp çalışmadığını kontrol edeceksiniz:

<?php
/* Plugin Name: Move jQuery to the footer */
function( 'admin_enqueue_scripts', function( $hook )
{
    $GLOBALS['wp_scripts']->add_data( 'jquery', 'group', 1 );
} );

Sorguları

Yazı listesi tablosu ekranlarını hızlandıran bir diğer şey, sorgulanan alanların sayısını azaltmaktır. Bir süre önce bu ekranların 999 gönderi ayarlarım nedeniyle çok yavaş yüklendiğini fark ettim. Tam blog yazısı burada - GitHub Gist eklentisi .

<?php
/**
 * Plugin Name: (WCM) Faster Admin Post Lists
 * AuthorURL:   http://unserkaiser.com
 * License:     MIT
 */

add_filter( 'posts_fields', 'wcm_limit_post_fields_cb', 0, 2 );
function wcm_limit_post_fields_cb( $fields, $query )
{
  if (
        ! is_admin()
        OR ! $query->is_main_query()
        OR ( defined( 'DOING_AJAX' ) AND DOING_AJAX )
        OR ( defined( 'DOING_CRON' ) AND DOING_CRON )
    )
        return $fields;

    $p = $GLOBALS['wpdb']->posts;
    return implode( ",", array(
        "{$p}.ID",
        "{$p}.post_date",
        "{$p}.post_name",
        "{$p}.post_title",
        "{$p}.ping_status",
        "{$p}.post_author",
        "{$p}.post_password",
        "{$p}.comment_status",
    ) );
}

Tüm sütunlara ihtiyacınız yoksa, bazı sütunların içeriğini de kaldırarak eklentinin üstünü uzatabilirsiniz.

add_filter( 'manage_edit-post_columns', function( $columns )
{
    # @TODO Remove columns which you don't need
    return $defaults;
} );

Gösterge Paneli

Her kullanıcı kontrol paneline girer - bu, muhtemelen yönetici arayüzünde en yavaş kısımdır. İhtiyacınız olmayan bazı widget'ları gizlemek yerine devre dışı bırakabilirsiniz:

<?php
/** Plugin Name: Remove Dashboard Widgets */
add_action( 'wp_dashboard_setup', function()
{
    remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
} );

Giden veriler

Snitch by Sergej Müller'i yüklemenizden hangi verilerin ayrılmaya çalıştığını izlemek için kullanmanızı tavsiye ederim . Eklenti, tüm veya sadece belirli bağlantıları bastırmanın yanı sıra istenmeyen cron işleri ve benzerleri gibi görevleri hedefleyen belirli dahili bağlantıları sabitler. Tam paketi istemiyorsanız kaynağına örnek olarak bakabilirsiniz. Sergej normalde cömert bir beyaz alan kullanımı ile çok okunabilir bir kod yazar .


1
Ayrıca, hangi sorguların, işlevlerin tetiklendiğini ve ne kadar süre çalıştırıldığını görmek için Eklenti Hata Ayıklama Nesneleri aracılığıyla yararlı Informationen'i de kullanabilirsiniz. Ayrıca hangi fonksiyondan eklenti sorguyu getirir.
16'da bueltge

4

Bu https://github.com/johnbillion/query-monitor uygulamasını yüklemenizi ve aşağıdakilere bakmanızı öneririm: Bellek kullanımı, HTTP istekleri, AJAX ve yavaş sorgular.

Düzeltmeleriniz, bir eklentinin AJAX'ı, bozuk bir sorgu vb. Olabilir.

Sunucunuza daha fazla RAM eklemeniz gerekip gerekmediğini görebileceksiniz.

Ancak burada bazı hilelerin yanı sıra, hepsi bir arada bir çözüm yok, temaların eklentilerin yönetici ile nasıl etkileşime girdiğini kontrol etmeniz gerekiyor.


2

Yukarıda iyi önerilen cevapların bazıları ile birlikte, açık bir sürü ekranınız veya aynı anda kullanan birçok kullanıcı varsa yöneticinizi önemli ölçüde yavaşlatabilecek wordpress "kalp atışını" sınırlayabilir veya devre dışı bırakabilirsiniz. WP-Engine gibi birkaç ana makine aslında bu kurulumun otomatik olarak bir varyasyonuna sahiptir.

function optimize_heartbeat_settings( $settings ) {
    $settings['autostart'] = false;
    $settings['interval'] = 60;
    return $settings;
}
add_filter( 'heartbeat_settings', 'optimize_heartbeat_settings' );

function disable_heartbeat_unless_post_edit_screen() {
    global $pagenow;
    if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' )
        wp_deregister_script('heartbeat');
}
add_action( 'init', 'disable_heartbeat_unless_post_edit_screen', 1 );

Deneyebileceğiniz başka bir şey de bazı wp-config.phpsabitlerle uğraşmaktır . Yayın düzeltmelerini kapatmak soru yardımı olmadan yapılabilir, ancak bunu yapmak istemiyorsanız en azından düzeltmeleri sınırlayabilirsiniz.

define('WP_POST_REVISIONS', 5);

İşleri optimize etmek için genellikle değiştirdiğim diğer iki sabit, boş çöp ve otomatik kaydetme.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );

Sorun değil. Birkaç seçenek daha eklendi.
Bryan Willis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.