Det finns olika sätt att göra din webbplats mer effektiv: specialiserade plugins låter dig cachelagra sidor för statiskt HTML-innehåll, andra låter dig cache-ca alla SQL-frågor och uppgifter, och slutligen vissa låter dig förminska JavaScript- och CSS-filer och till och med server-side-lösningar.

mise-en-hide-on-wordpress

Men även om du använder dessa plugins, med hjälp av metoder för caching internt för databasobjekt och resultat uppgifter kommer att vara bra utvecklingspraxis, eftersom din plugin inte är beroende av vilken cachningslösning slutanvändaren har. Din plugin bör vara snabb i sig och bör inte förlita sig på andra plugins för att göra det smutsiga arbetet. Och om du tycker att du ska skriva din egen cachehanteringskod har du fel. WordPress kommer med allt du behöver för att snabbt implementera olika caching de uppgifter. Du behöver bara identifiera de delar av din kod som kommer att dra nytta av optimering och välja en typ av caching i enlighet därmed.

WordPress implementerar två olika metoder för caching:

inte ihållande

Uppgifterna förblir i cachen medan sidan laddas. (WordPress använder det för att cache de flesta frågeställningarna från databasen.)

Beständig

Detta beror på hur databasen fungerar, och cachedata kan själv upphöra att gälla efter en viss tid. (WordPress använder det för att cache RSS-feeds, uppdateringar, etc.).

I denna handledning kommer vi bara att ta hänsyn till den icke-beständiga cachen.

Så här ställer du in "icke-beständig" icke-beständig cache

När du använder funktioner som " get_posts () "Eller" get_post_meta () WordPress kontrollerar först om de data du behöver är cachade. I så fall får du data från cachen; I annat fall kommer en databasfråga att köras för att erhålla dessa data. När data har återställts kommer den också att cachas. En icke-beständig cache rekommenderas för databasresultat som kan återanvändas när du skapar en sida.

Den interna icke-beständiga cache-koden för WordPress finns i filen " cache.php "I katalogen" wp-includes ", och den hanteras av" WP_Object_Cache ". Vi måste använda två grundläggande funktioner: " wp_cache_set () "Och" wp_cache_get () Samtidigt som tilläggsfunktionerna " wp_cache_add () "" wp_cache_replace () "" wp_cache_flush () "Och" wp_cache_delete () ". Den cachelagrade lagringen är organiserad i grupper, varvid varje post behöver sin unika nyckel. För att undvika att blanda WordPress-standarddata är det bästa sättet att använda unika namn.

Exemple

För det här exemplet ska vi skapa en funktion med namnet "d4p_get_all_post_meta ()", som hämtar alla metadata som är associerade med en artikel. Denna första version inkluderar inte cachning.

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;
}

Varje gång du kallar denna funktion för samma artikel, kommer en SQL-fråga att köras. Här är den modifierade funktionen som använder den icke-persistenta WordPress-cachen:

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;
}

Här använder vi en cache-grupp med namnet " d4p_post_meta ", Och" post_id "som är nyckeln. Med denna funktion kommer vi att kontrollera om vi behöver alla data i minnet. Annars kommer vi att köra den normala koden för att få lite data och sedan lägga till den i cachen i rad 13. Så om du ringer till den här funktionen mer än en gång kommer bara den första att utföra en SQL-fråga. Alla andra samtal hämtar data från cachen. Här använder vi funktionen " wp_cache_add ", Så om kombinationen" nyckel-grupp "redan finns kommer den inte att ersättas. Jämför det med " wp_cache_set Som alltid kommer att ersätta ett befintligt värde utan att kontrollera.

Som du kan se gjorde vi bara en liten ändring av den befintliga koden men sparade potentiellt många databassamtal som potentiellt gjorde laddningen snabbare.

Viktiga anteckningar

Den ohållbara cachen är endast tillgänglig medan den aktuella sidan laddas. När nästa sida laddas, kommer den att vara tom igen.

Lagringsstorleken är begränsad av det totala minnet som finns tillgängligt på PHP tilldelat av servern. Spara inte en stor uppsättning data, annars får du meddelandet "Minnet är slut".

Användningen av denna typ av cache är endast meningsfull för operationer som upprepas mer än en gång under skapandet av en sida.

Det fungerar med WordPress från 2.0-versionen.

Det var allt för denna handledning. Jag hoppas att det hjälper dig att cache bättre din blogg.