Existují různé způsoby, jak zefektivnit váš web: specializované pluginy vám umožňují ukládat stránky do mezipaměti pro statický obsah HTML, jiné umožňují ukládat do mezipaměti všechny dotazy SQL a donnéesa konečně některé umožňují minimalizovat soubory JavaScript a CSS a dokonce i řešení na straně serveru.

mise-en-hide-on-WordPress

Ale i když používáte tyto pluginy, pomocí metod uloženy do mezipaměti interní pro databázové objekty a výsledky données bude dobrou vývojovou praxí v tom, že váš plugin nezávisí na řešení pro ukládání do mezipaměti, které má koncový uživatel. Váš plugin by měl být sám o sobě rychlý a neměl by se spoléhat na jiné pluginy, aby dělaly špinavou práci. A pokud si myslíte, že byste si měli napsat vlastní kód správy mezipaměti, jste na omylu. WordPress přichází se vším, co potřebujete k rychlé implementaci různých uloženy do mezipaměti de données. Stačí identifikovat části kódu, které budou mít prospěch z optimalizace, a vybrat typ uloženy do mezipaměti odpovídajícím způsobem.

WordPress implementuje dvě různé metody ukládání do mezipaměti:

Nepřetržitý

Během načítání stránky zůstanou data v mezipaměti. (WordPress ji používá k ukládání do mezipaměti většinu výsledků dotazu z databáze.)

vytrvalý

To záleží na tom, jak databáze funguje a data v mezipaměti se mohou po uplynutí určité doby automaticky vypršet. (WordPress ji používá k ukládání mezipaměti RSS, aktualizací atd.).

V tomto tutoriálu vezmeme v úvahu pouze perzistentní mezipaměť.

Jak nastavit „non-persistent“ non-persistent cache

Když používáte funkce jako „ get_posts () "Nebo" Get_post_meta () WordPress nejprve zkontroluje, zda jsou data, která potřebujete, uložena do mezipaměti. Pokud ano, získáte data z mezipaměti; jinak bude proveden databázový dotaz za účelem získání těchto dat. Jakmile jsou data obnovena, budou také uložena do mezipaměti. Pro výsledky databáze, které by mohly být znovu použity při vytváření stránky, se doporučuje trvalá mezipaměť.

Interní netrvalý kód mezipaměti WordPress je umístěn v souboru " cache.php „V adresáři„ wp-includes “je spravován„ “ WP_Object_Cache ". Musíme použít dvě základní funkce: " wp_cache_set () "A" wp_cache_get () Současně s dalšími funkcemi “ wp_cache_add () "" wp_cache_replace () "" wp_cache_flush () "A" wp_cache_delete () “. Ukládání do mezipaměti je uspořádáno do skupin, z nichž každá položka potřebuje svůj jedinečný klíč. Doporučeným postupem je vyhnout se míchání výchozích dat WordPress.

Příklady

V tomto příkladu vytvoříme funkci s názvem „d4p_get_all_post_meta ()“, která načte všechna metadata spojená s článkem. Tato první verze neobsahuje ukládání do mezipaměti.

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    $data = array();
    $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

    foreach ( $raw as $row ) {
        $data[$row['meta_key']][] = $row['meta_value'];
    }

    return $data;
}

Při každém vyvolání této funkce pro stejný článek bude proveden dotaz SQL. Zde je upravená funkce, která používá netrvalou mezipaměť WordPress:

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    if ( ! $data = wp_cache_get( $post_id, 'd4p_post_meta' ) ) {
        $data = array();
        $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

        foreach ( $raw as $row ) {
            $data[$row['meta_key']][] = $row['meta_value'];
        }

        wp_cache_add( $post_id, $data, 'd4p_post_meta' );
    }

    return $data;
}

Zde používáme skupinu mezipaměti s názvem „ d4p_post_meta ", A" post_id ", což je klíč. Pomocí této funkce zkontrolujeme, zda potřebujeme všechna data v paměti. V opačném případě spustíme normální kód, abychom získali data, a poté jej přidáme do mezipaměti v řádku 13. Pokud tedy tuto funkci zavoláte více než jednou, dotaz SQL provede pouze první. Všechna ostatní volání načtou data z mezipaměti. Zde používáme funkci " wp_cache_add ", Takže pokud již existuje kombinace" klíč-skupina ", nebude nahrazena. Porovnejte to s „ wp_cache_set Což vždy nahradí existující hodnotu bez kontroly.

Jak vidíte, provedli jsme jen malou změnu stávajícího kódu, ale potenciálně jsme uložili mnoho volání do databáze, což potenciálně zrychluje načítání.

Důležité poznámky

Neustálá mezipaměť je k dispozici pouze při načítání aktuální stránky; jakmile se načte další stránka, bude znovu prázdná.

Velikost úložiště je omezena celkovou pamětí dostupnou v PHP přidělenou serverem. Neukládejte velkou sadu dat, jinak se může zobrazit zpráva „Nedostatek paměti“.

Použití tohoto typu mezipaměti má smysl pouze pro operace opakované více než jednou během vytváření stránky.

Pracuje s aplikací WordPress z verze 2.0.

To je pro tento tutoriál vše. Doufám, že vám to pomůže lépe cacheovat váš blog.