1

プロジェクトの開発中はキャッシュされず、実稼働中はキャッシュされるように、条件付きで画像に期限切れヘッダーを設定したいと思います。理想的には、これは単に apache conf ファイルの変更です。プロジェクトのステータスを返す perl スクリプトがあります。これは、次のように mod_rewrite で使用できます。

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/run/$site/p(\d+)/(\w+) /logout.pl/$2 [NS,L]

次のようなことができればいいのですが:

rewritecond ${PSTAT:$site:$1} =devel
ExpiresByType image/jpg "now plus 1 second"

もちろん、それはうまくいきませんが。

解決策はありますか?

4

2 に答える 2

1

私にとってうまくいったトリックは、最初にヘッダーを無条件に設定することです。

ExpiresByType image/jpg "now plus 1 second"
...

そして、devel モードの場合に備えてヘッダーの設定を解除します。

Header set Cache-control "no-cache" env=devel
Header unset expires env=devel

develこれには、モードに基づいて以前に初期化されたブール値の env が必要です。私たちの場合、devel にするかどうかをホスト名で決定します (devel.domain.com と www.domain.com)。

于 2011-06-16T15:36:12.210 に答える
0

エイリアンハードが言ったことから始めて、私は自分の問題に対する答えを思いつくことができました.

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/images/(\d+)/(\w+) - [E=devel:1]

header set cache-control "no-cache" env=devel
header unset expires env=devel

(/images/(\d+)は特定のプロジェクト番号の画像のフォルダーです(\d+))

Eフラグをrewriterule使用すると、ルールが一致する場合に環境変数を設定できます。 -実際には何も書き直していません。したがって、これはrewritecondからプロジェクト番号を送信してスクリプトの出力をチェックしrewriterule、両方の条件が一致する場合に環境変数を設定します。次にheader、その環境変数の存在に基づいて条件付きで設定されます。

于 2011-06-16T18:30:31.033 に答える