W3 Total Cache、CDN、テーマファイル[終了]


10

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

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

私のCDNはAmazonCloudフロントで実行されます。また、W3 Total CacheではMinifyが無効になっています。

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

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

おかげで、

P

回答:


10

あなたはどちらかをする必要があります

  1. (を呼び出してstyle.css?ver=xxx.xxx)ファイルにバージョンを付け、 CloudFrontディストリビューションで「Forward Query strings」がオンになっていることを確認します。これは、クエリ文字列の数値をインクリメントするだけでCloudFrontがこのファイルを自動的にフェッチすることを意味するため、より優れたオプションです。

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

「Forward Query Strings」をオンにするには、次のようにします。

  • 「i」の左側にあるチェックボックスをオンにしてCloudfrontディストリビューションを編集し、ツールバーの「配布設定」ボタンをクリックします
  • [動作]タブに移動します
  • 行を選択し、「編集」をクリックします
  • 「前方クエリ文字列」を「はい」に変更します
  • [はい、編集します]をクリックします

1
@kaiserうん、バージョンとしての日時は、ファイルをバージョン管理するための最良の方法です。ただし、CloudFrontで「Forward Query Strings」オプションがオンになっていることを確認する必要があります。そうしないと、巧妙に作成されたバージョン番号が無視されます:P
anu

ありがとうございました。この手順に慣れていないので、2つの質問があります。1)「バージョン管理された」ファイルの名前は、与えられた例に正確に従う必要があります(疑問符と等号を使用し、すべての「x」を私の選択した番号に置き換えます)。2)CLoudFrontのAWSコンソールで、ブログ用に作成したディストリビューションの横にある表の左側の「I」をクリックします。これにより、ディストリビューションの設定にアクセスできます。「Forward Query strings」が「false」であることがわかります。この「動作」を同じ値で、ただし「
For。Q.

1
1.はい、または@kaiserの適切な意味を使用できますが、ファイルに名前を付けるには不完全な回答を使用できます。2.答えをプロセスで更新します
anu

8

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

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

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


わかりました。これは本当に興味深いオプションです。style.css変更するたびに手動でファイルにバージョンを付ける必要がなくなります(いつか忘れてしまいます)。さて、質問があれば、このコードをどこに追加すればよいですか?私は自分のfunctions.phpファイルを推測しますか?
Parneix 2012

どこにこのコードを追加する必要があるかわかりません。テーマファイルを検索して、style.cssファイルへの「通常の」呼び出しを置き換えるだけです。短い更新を投稿するので、functions.phpファイルに追加できます(これは、元の呼び出しを削除する必要があることを意味します)。ところで、これは@anuの回答への追加にすぎません。(賛成投票はまだあります:)
カイザー

1
問題ない!このコードの場所は、使用するテーマによって変わる可能性があることを完全に理解しています。なんとかfunctions.phpファイルに追加します。それでも、@ anuが提供するソリューションを十分に補完すると思います。助けてくれてありがとう。
Parneix 2012

-1

短い答え...

  1. すべてのテーマファイルを削除して、再度アップロードします。削除アクションによってCDNがクリアされることがある

  2. はい、パージを試すことができますが、通常、削除と再アップロードの方が高速です。

  3. また、W3TCとAmazonの設定も確認してください。W3TCのデフォルトのキャッシュは通常365日です。これは31536000秒です:)

Amazonでは、エンドポイントがCDNを再クエリするための設定があります。Rackspaceのデフォルトは24時間です。


1
これよりもそれを行うためのより良い方法がありますが、私の答えを参照
ANU

「すべてのテーマファイルを削除して、再度アップロードしてください。削除アクションによってCDNがクリアされることもあります」私のWebサイトで削除するということですか?次に、WordPressインストールにそれらを再度アップロードします。それから、W3 Total Cacheダッシュボードから「テーマファイルのアップロード」をもう一度行うと思いますか?
Parneix 2012

1
@Parneixは真剣に、する必要がない限り、すべてを削除しないでください。CDNからもすべて削除しない限り、ほぼ確実に機能しません。古くなったCSSファイルを無効にするより良い方法があります
anu

1
はい、ありがとう!私はあなたの提案をよく覚えました。ここに来てくれて本当に助かりました。私は自分の問題を解決しているだけでなく、新しいことも学んでいます。
Parneix 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.