*.php
ファイルを WP Super Cache に除外する方法はありますか?
私のsingle.php
ページにinclude news.php
があります。ファイルnews.php
には、私の最後の記事への10個のリンクが含まれています。
だから私はsingle.php
をキャッシュしたいがnews.php
に含まれているsingle.php
は除外したい。
可能です?どうやってやるの?
動的コンテンツをキャッシュされたページに組み込む ではなく、AJAXを使用して動的コンテンツをブラウザのそれらのページにプルする方が得策です。
あなたのnews.php
ファイルに、内容を含む空の要素を単に持ってください。さらに良いことに、コンテンツが来ていることを示す AJAXスピナー が含まれているかどうか。
<div id="late-load-news">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/ajax-loader.gif" />
</div>
それからjQueryを使ってあなたのニュースコンテンツをロードします - このコードはあなたのテーマのfunctions.phpに入ります:
/**
* 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
});
訪問者が新しいページに移動するたびにコンテンツが読み込まれます。ニュースの内容がそれほど変わらない場合は、 sessionStorage を使用して、訪問中にニュースの内容をブラウザにキャッシュすることをお勧めします。キャッシュの持続時間を制限したい場合は、 有効期限付きのセッションストレージ を参照してください。
news.php
ファイルがキャッシュされないようにするには、以下の手順に従ってください。
WordPress管理ダッシュボードのWP Super Cache設定ページにアクセスしてください (Settings> WP Super Cache) 。
そのページの上部にある[詳細]タブにアクセスしてください。
承認されたファイル名と拒否されたURI 見出しまでスクロールします。
次の説明が記載されたボックスを探します。
上記で指定された拒否された部分文字列の1つと一致する場合でも、キャッシュできるファイル名をここに追加します。
説明の下のテキストボックスの新しい行にnews.php
を入力します。
をクリックしてファイルを保存"