ブラウザの「戻る」をクリックした際に表示されないケースがあった
キャッシュを無効化することで、強制読込になるので、functions.phpに下記の処理を追加した。
// キャッシュ制御を無効化
function disable_browser_cache() {
if (!is_admin()) {
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
}
}
add_action('send_headers', 'disable_browser_cache');
ちなみに下記の場合は、ダメだった
function disable_cache() {
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
}
add_action('send_headers', 'disable_cache');
違いの要点
最初のコード (disable_cache): Cache-Control: no-cache と Expires: 0 でキャッシュを無効化しようとしていますが、no-cache はキャッシュが存在しても確認を行うため、戻るボタンでキャッシュが再利用される可能性があります。
2番目のコード (disable_browser_cache): Cache-Control: no-store を使っており、これによりキャッシュが完全に保存されず、ブラウザは常に新しいコンテンツをリクエストするようになります。また、post-check と pre-check も追加されており、特に古いブラウザへの対応が強化されています。
Cache-Control: no-store を使った方が確実にキャッシュを無効化でき、ブラウザが常に最新のページをリクエストするため、戻るボタンを使った際に問題が発生しにくくなります。
no-cache ではキャッシュが確認されるため、意図した結果が得られにくい場合があります。
したがって、disable_browser_cache の方が問題を解決しやすいと言えるでしょう。
