5

CSS がブラウザ側にキャッシュされないようにしたい。埋め込まれた Jetty インスタンスでどうすればよいですか?

xml 構成ファイルを使用していた場合は、次のような行を追加します。

<init-param>
  <param-name>cacheControl</param-name>
  <param-value>max-age=0,public</param-value>
</init-param>

それをコードに変換するにはどうすればよいですか?

今、私は Jetty を次のように起動します:

BasicConfigurator.configure();

Server server = new Server();
SocketConnector connector = new SocketConnector();
// Set some timeout options to make debugging easier.
// 1 hour
connector.setMaxIdleTime( 1000 * 60 * 60 );
connector.setSoLingerTime( -1 );
connector.setPort( 8081 );
server.setConnectors( new Connector[] { connector } );

WebAppContext bb = new WebAppContext();
bb.setServer( server );
bb.setContextPath( "/" );
bb.setWar( "src/webapp" );

server.addHandler( bb );

WebAppContext の責任領域のどこかで setControlCache を検索する必要があると思います。

これに関するアドバイスはありますか?

4

4 に答える 4

4

私は通常、次のように ServletHolder を使用します。

WebAppContext context = new WebAppContext();
ServletHolder servletHolder = new ServletHolder(MyServlet.class);
servletHolder.setInitParameter("cacheControl","max-age=0,public"); 
context.addServlet(servletHolder, "myservletpath");

これはあなたのコードと完全には一致しません、そこから理解できるはずですか?

于 2009-03-30T11:07:34.160 に答える
2

当たり前ですが、逆にどうやってJettyのweb.xmlで静的リソースのキャッシュを設定するのですか? ?

于 2009-12-19T17:18:21.877 に答える
1

そして、ここにあるのは、理解、推測、試行する必要のないただの作業コードです。これは、問題のコードと jetty 6 に関して提供されます。jetty 7 以降では、Context を ServletContextHandler に変更する必要があります。

BasicConfigurator.configure();

Server server = new Server();
SocketConnector connector = new SocketConnector();
// Set some timeout options to make debugging easier.
// 1 hour
connector.setMaxIdleTime( 1000 * 60 * 60 );
connector.setSoLingerTime( -1 );
connector.setPort( 8081 );
server.setConnectors( new Connector[] { connector } );

//--- The difference with code in question starts here

DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holder = new ServletHolder(defaultServlet);
holder.setInitParameter("useFileMappedBuffer", "false");
holder.setInitParameter("cacheControl", "max-age=0, public");

Context bb = new Context();
bb.setResourceBase("src/webapp");
bb.addServlet(holder, "/");

//--- Done. Caching is off!

server.addHandler( bb );
// Run server as usual with server.run();

私のサンプルでは、​​何らかの理由で Wi​​ndows で開発している場合に、ディスク上のファイルをブロックしないために必要な useFileMappedBuffer を false に設定しています。

于 2013-05-28T20:41:16.077 に答える