web-dev-qa-db-ja.com

W3トータルキャッシュ、CDN、テーマファイル

私は最近私のWordPressインストールのstyle.cssファイルを更新しました。変更は効果的でした:管理者としてログインしたとき(私のブログは管理者がそのサイトのキャッシュされたバージョンを決して提供されないように設定されていますが、「ライブ」のもの)。

しかし、私のブログはCDNを通じて配信されています(W3 Total Cacheを使用)。 CDNを通じて、変更は有効ではありません:CDNは私のテーマから変更されたファイルを提供していません。変更後にアップロードしましたが(ダッシュボード>パフォーマンス> CDN>テーマファイルのアップロード)。

私のCDNはAmazonCloud Frontで動作します。そして、W3 Total CacheではMinifyが無効になっています。

私のCDNを通して提供されているテーマファイルは圧縮されたバージョンです:style.css.gzip

CDNからオブジェクトを「パージ」するか、もう少し待つ必要があります(1週間以上かかります)。そして、はい、私は変更が反映されているのを見るために使用しているブラウザのキャッシュを空にします。それとも私が逃している何か他のものはありますか?

ありがとう、

P.

10
Parneix

どちらかが必要です

  1. ファイルをバージョン管理し(style.css?ver=xxx.xxxを呼び出して)、CloudFrontディストリビューションで "Forward Query strings"がオンになっていることを確認します。これは、クエリ文字列の数を増やすことだけが必要であり、CloudFrontがこのファイルを自動的に取得することを意味するので、これはより良いオプションです。

  2. AWSコンソールを使用してファイルを手動で無効にする(ディストリビューションを編集するときに無効化タブがあります)

「Forward Query Strings」をオンにするには、次の手順に従います。

  • 'i'の左側にあるチェックボックスをクリックしてCloudfrontディストリビューションを編集してから、ツールバーの[配信設定]ボタンをクリックします。
  • [動作]タブに移動します
  • 行を選択して[編集]をクリックします
  • "forward query strings"をYesに変更します
  • [はい、編集]をクリックします
10
anu

ファイルの内容が変更されたときにキャッシュを防ぐための非常に単純な「トリック」があります。バージョン番号を追加します。これはファイルを変更した最新の日時に設定されます。

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

これにより、ヘッダのstyle.css参照リンクに?ver=0123456789が追加されます。バージョン番号は、ファイルの内容が変更されたときにのみ変更されます。したがって、a)サーバー側のキャッシュ、b)ブラウザのキャッシュ、および自動的に更新されるソリューションで完璧に機能するソリューションがあります。

8
kaiser