1

ユーザーがコンテンツ(テキスト、画像、swfs、mp3など)を追加/編集/置換/削除できるようにするアプリケーションがあります。管理者は、キャッシュなしのヘッダーを使用して常に最新の更新ファイルを入手し、ユーザーがアプリケーションを実行すると、すべてがキャッシュを取得/使用するようにします。

私は解決策を調べ、次のようなhtmlメタタグを使用してみました。

<meta http-equiv="expires" content="0" />
<meta http-equiv="cache-control" content="no-cache, no-store" />
<meta http-equiv="pragma" content="no-cache" />

ただし、これはヘッダーが作成された後に発生し、メディア(画像、swfs、mp3など)ヘッダーを変更しないため、これは適切な解決策ではないようです。

私はapacheを使用してヘッダーを設定したかったので、このサイトのこのコードに出くわしました:

<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>

これは優れたソリューションのようですが、キャッシュが必要な場合とキャッシュすべきでない場合の唯一の本当の違いはURL(preview.jspとrun.jsp)であるため、ファイルタイプで一致させることはできません。ほとんどのファイルは同じです。

誰かがこのタイプのシナリオに適した解決策を持っていますか?

ありがとう。

編集:

Preview.jspとrun.jspは基本的に同じですが、jspとjsの処理が異なります。彼らはiframeを介して同じコンテンツとメディアを読み込みます。たとえば、それぞれ次のようになります。

<%
//Some JSP
%>
/* HTML Headers, JS, ETC */
<iframe id="contentFrame" seamless="1" src="http://somedomain.com/template.html"></iframe>
/* End HTML */

Preview.jspとrun.jspは同じディレクトリに表示され、すべて同じリソースを使用します。何もキャッシュしないpreview.jspと、キャッシュするrun.jspを持つソリューションを探しています。

サーバーはApacheTomcatでセットアップされています。

4

2 に答える 2

1

SetEnvIfとの組み合わせでHeaderうまくいくかもしれません:

# Image, CSS and JavaScript requests normally contain the Referer header
# which tells apache which page is requesting the resource
# Use SetEnvIf directive to set a flag for internal uses

SetEnvIf Referer preview\.jsp force_no_cache

# Header directive optionally accepts env= argument
# If present, the directive is fired if the flag is set

Header unset ETag env=force_no_cache

# repeat for other headers
于 2012-04-10T21:08:50.833 に答える
1

Java サーブレットで対応するヘッダーを設定できます。Apache mod_headers は、ほとんどの場合、Apache によって管理される静的リソースに対して機能することになっています。アプリケーションサーバーによって提供されるものはすべて AS 側で管理されます。

通常、この目的にはフィルターを使用できます。以下に例を示します: http://www.tidytutorials.com/2009/11/adding-headers-to-requests-in-filters.html

于 2012-04-09T19:57:01.910 に答える