1

Spring コントローラーによって動的に生成された CSS ファイルがあります。ハンドラー メソッドで応答ヘッダーを設定しCache-Controlましたが、何らかの理由で、キャッシュされたバージョンを使用する代わりに、CSS ファイルへの参照を持つ HTML ファイルを要求するときに、FireFox が CSS ファイルを要求し続けます。

これがコードです。

@Controller
@RequestMapping("/foo.css")
public class FooController {
    @RequestMapping(method = RequestMethod.GET)
    public void show(HttpServletResponse response) {
        try {
            response.setHeader("Cache-Control", "max-age=3600");
            response.getWriter().println("this is a test.");
        }
        catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println(new Date());
    }
}

そして、HTML ファイルは通常の方法で CSS ファイルを参照します。

<link rel="stylesheet" type="text/css" href="/foo.css" />

ここで何が間違っていますか?

4

3 に答える 3

2

私はOPですが、さらに調査した結果、これを自分で実装する必要があると判断しました。キャッシュされたリソースを使用するには、サーバーでクライアントブラウザの304応答コードを生成する必要がありますが、SpringもTomcatもこの標準をサポートしていません。

于 2011-03-05T22:08:21.797 に答える
1

まず第一に、ブラウザとプロキシ サーバーは、ヘッダーに設定された HTTP キャッシュ コントロールに準拠する必要はありません。それらは単なる助言です。ブラウザがキャッシュ リクエストを無視し、設定に従っている可能性があります。

これを行う別の方法は、javascript によって生成された URL にランダムな属性を配置することです。何かのようなもの:

<link type="text/css" href="/foo.css?d=328943298432" />

このテーマに関する素晴らしい記事は次のとおりですhttp://code.google.com/speed/page-speed/docs/caching.html

于 2011-03-04T01:07:08.013 に答える