私は、人々が自分の Web サイトでページを作成し、コンテンツを編集できるオンライン Web サイト エディターを書いています。システムは実際の .html ページと実際の .css ページを書き込みます。問題は 2 つあります。編集中はサイト上のすべてのキャッシュを無効にして、常にすべての最新バージョンを取得したいのですが、全員に対してキャッシュを完全に無効にしたくありません。サイトのパフォーマンスは良好です。ログインしているユーザーを識別する Cookie を探し、それを .htaccess で使用して、キャッシュを無効にするタイミングを判断しようと考えました。Cookieに基づいて特定のリクエストヘッダーを設定することを扱うstackoverflow、askapache、Googleなどには何も見つかりませんでしたが、これらのリソースを通じて、次のことをまとめることができました:
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !^.*mode=.*$ [NC]
RewriteRule ^(.*)$ - [env=CACHECONTROL:max-age=604800]
RewriteCond %{HTTP_COOKIE} ^.*mode=.*$ [NC]
RewriteRule ^(.*)$ - [env=CACHECONTROL:no-cache]
Header set Cache-Control "%{CACHECONTROL}e" env=CACHECONTROL
これは、Cookie が検出され、要求ヘッダーが変更されているという意味では機能しますが、ユーザー エクスペリエンスに違いはないようです。テンプレートに変更を加えて公開し、ページに移動してそこで編集すると、古いバージョンのテンプレートがまだ表示されます。
ログインせずに Web サイトにアクセスして max-age キャッシュを取得した場合、ログイン後に .htaccess ファイルがチェックされていないということですか? これに設定するより良い変数はありますか? 私は機知に富んでおり、これについて他の目玉を実際に使用できます。
前もって感謝します!マイク
編集これは私が今使っているものです:
Header set Cache-Control "must-revalidate, private"
Header set Expires "-1"
タイムアウト期間を指定するよりも「再検証が必要」の方が重要であるように思われ、それが助けになっているようです。また、すべてのユーザーに同じヘッダーを使用できるのも良いことです。つまり、サーバー側のプログラミングが減り、静的に提供されるファイルが増えます。とはいえ、まだ完全ではありません。キャッシングに関する苦情が時折寄せられています。