簡體   English   中英

使用緩存配置嵌入(以編程方式)的 jetty 9.3.0

[英]configure jetty 9.3.0 embedded (programmatically) with caching

我似乎無法讓我的碼頭使用緩存。 我有一個僅顯示 html 的碼頭服務器。 我在那里有 JavaScript 和很多我不想每次都加載的圖像。 例如,我的應用程序需要在 10 秒內在 3 個頁面之間切換。 加載 jQuery 3 次非常耗時,加載徽標圖片和所有這些都需要更長的時間。 這就是為什么我要啟用緩存。

這是我得到的:

server = new Server(); //new Jetty Server
//setting up a ssl connection
try
{
    SslContextFactory cf = new SslContextFactory();
    cf.setKeyStorePath(keystore);
    cf.setKeyStorePassword("password");
    
    HttpConfiguration config = new HttpConfiguration();
    config.addCustomizer(new SecureRequestCustomizer());
    config.setSecureScheme("https");
    config.setSecurePort(8443);
    
    HttpConfiguration sslConfiguration = new HttpConfiguration(config);
    sslConfiguration.addCustomizer(new SecureRequestCustomizer());
    
    httpConnector = new ServerConnector(server);
    httpConnector.addConnectionFactory(new HttpConnectionFactory(config));
    httpConnector.setPort(suggestHttpPort());
    httpConnector.setName("unsecured");
    sslConnector = new ServerConnector(server, 
            new SslConnectionFactory(cf, HttpVersion.HTTP_1_1.toString()), 
            new HttpConnectionFactory(sslConfiguration));
    sslConnector.setPort(suggestHttpSSLPort());
    sslConnector.setName("secured");
    
    server.setConnectors(new Connector[] { httpConnector, sslConnector });  
}
catch (Exception e)
{
    log.error("setting up Jetty failed", e);
}
// This is where i want to enable caching, at least that is what i have figuged out so far but its not working
DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holder = new ServletHolder(defaultServlet);
holder.setInitParameter("cacheControl", "max-age=120, public");
ServletContextHandler bb = new ServletContextHandler();
bb.addServlet(holder, "/");
server.setHandler(bb);
server.start();

我做錯了什么? 我想為所有內容啟用緩存...

不要像那樣直接對啟動的 Servlet 使用ServletHolderServletHolderServletHolder創建和初始化類引用。

您需要一個ServletContextHandler和一個DefaultServlet也可以使用的已定義基本資源(這應該是指向靜態文件內容根的 URI)

示例:

ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.setBaseResource(Resource.newResource(webRootUri));

ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class);
holderPwd.setInitParameter("dirAllowed", "true");
holderPwd.setInitParameter("cacheControl", "max-age=3600,public");
context.addServlet(holderPwd,"/");
server.setHandler(context);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM