web-dev-qa-db-fra.com

le fichier d'exclusion wp-super-cache de la mise en cache

Existe-t-il un moyen d'exclure un fichier *.php de WP Super Cache ?
Dans ma page single.php, un include news.php, le fichier news.php contient dix liens vers mes derniers articles.

Donc, je veux mettre en cache single.php mais exclure news.php qui est inclus dans single.php.

C'est possible? Comment puis je faire ça?

2
ranell

Plutôt que d'incorporer le contenu dynamique dans les pages en cache , il est préférable d'utiliser AJAX pour extraire le contenu dynamique sur ces pages dans le navigateur.

Dans votre fichier news.php, ayez simplement un élément vide qui contiendra le contenu. Mieux encore, faites-le contenir un AJAX spinner qui indique que le contenu arrive.

<div id="late-load-news">
    <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/ajax-loader.gif" />
</div>

Ensuite, utilisez jQuery pour charger votre contenu d’actualités - ce code va dans le functions.php de votre thème:

/**
* AJAX handler to output an HTML fragment for news
*/
function wpse_70813_news() {
    // stop browser from caching output
    header('Pragma: public');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');

    //...output your news content here...

    exit;
}

add_action('wp_ajax_late-load-news', 'wpse_70813_news');
add_action('wp_ajax_nopriv_late-load-news', 'wpse_70813_news');

/**
* enqueue jQuery
*/
add_action('wp_enqueue_script', function() {
    wp_enqueue_script('jquery');
});

/**
* add footer script to load news
*/
add_action('wp_print_footer_script', function() {
    ?>

    <script>
    jQuery.ajax({
        type : "GET",
        url : "<?php echo admin_url('admin-ajax.php'); ?>",
        dataType : "html",
        data : { action: "late-load-news" },
        success : function(content) {
            jQuery("#late-load-news").html(content);
        }
    });
    </script>

    <?php
});

Cela chargera le contenu chaque fois qu'un visiteur accédera à une nouvelle page. Si votre contenu de nouvelles ne change pas beaucoup, je vous recommande d'utiliser sessionStorage pour mettre en cache le contenu de nouvelles dans le navigateur pendant la durée de la visite. Si vous souhaitez limiter la durée de cette antémémoire, voir Stockage de session avec délai d'expiration .

5
webaware

Suivez les étapes ci-dessous pour empêcher la mise en cache du fichier news.php:

  1. Visitez la page WP Paramètres du super cache dans votre tableau de bord d'administration WordPress (Paramètres> WP Super cache) .

  2. Visitez l'onglet "Avancé" en haut de cette page

  3. Faites défiler la liste jusqu'à Noms de fichiers acceptés et URI rejetés

  4. Recherchez la boîte avec la description de:

    Ajoutez ici les noms de fichiers pouvant être mis en cache, même s'ils correspondent à l'une des sous-chaînes rejetées spécifiées ci-dessus.

  5. Entrez news.php sur une nouvelle ligne dans la zone de texte sous la description.

  6. Cliquez sur Enregistrer les fichiers "

1
shea