Frage

Ich mag meine CSSs verhindern, dass auf der Browser-Seite im Cache gespeichert werden. Wie kann ich es in eingebetteten Jetty-Instanz?

Wenn ich XML-Konfigurationsdatei verwendet haben, möchte ich hinzufügen, Zeilen wie:

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

Wie kann ich mich wenden, dass in den Code?

Im Moment beginne ich Jetty auf diese Weise:

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 );

ich glaube, ich setControlCache irgendwo im WebAppContext Verantwortungsbereich suchen soll.

Alle Hinweise auf das?

War es hilfreich?

Lösung

ich normalerweise eine ServletHolder verwenden, wie folgt aus:

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

Dies ist zwar nicht genau Code übereinstimmen sollten Sie in der Lage sein, es von dort zu verstehen?

Andere Tipps

Und hier ist nur ein Arbeitscode ohne Notwendigkeit Vermutung, herauszufinden, und zu versuchen. Es ist in Bezug auf Code in Frage und Steg 6. Für Anlegesteg 7 und höheren Bedarf Kontext zu ServletContextHandler ändern.

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();

Meine Probe setzt auch useFileMappedBuffer auf false, die für nicht blockierenden Dateien auf einem Datenträger benötigt, wenn Sie unter Windows aus irgendeinem Grunde entwickeln.

Ich verwende resourceHandler für statische Inhalte. Hier ist ein Code adaequat auf Jetty 9.

    ResourceHandler rh = new ResourceHandler();
    rh.setResourceBase([your_resource_base_dir]);
    rh.setCacheControl("no-store,no-cache,must-revalidate");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top