2016-04-12 46 views
1

Bazı önbelleğe alma sorunlarıyla karşılaşıyorum; çünkü Wildfly 8.2, yalnızca statik dosyaları sunarken varsayılan olarak Last-Modified yanıt üstbilgisini içerir konuşlandırılmış bir savaş dosyasından. Wildfly'nin, önbellekleme sorunlarını çözecek olan, yanıt başlığını içeren ETag'ı dahil etmesini istiyorum. Herkes standalone.xml dosyasında yapılandırmak için mümkün olup olmadığını biliyor mu?Wildfly 8.2, statik dosyalar için ETag yanıt başlığını içerecek şekilde nasıl yapılandırılır (html, js, css, vb.)

+0

bir göz atın: Burada "app" dizinden tüm kaynakları sunma doğru önbelleğe için örnektir http://stackoverflow.com/questions/34133039/browser-cache-expiration-for-js- ve-css-dosyaları-ile-wildfly –

+0

Zaten bir göz vardı, ama cevap görmedim. Ancak, Undertow 1.2.x statik dosyalar için etags desteklemiyor gibi görünüyor. Https://github.com/undertow-io/undertow/blob/07d0ccb1eefb04a3b712af4e2c8f3a303081b0b1/core/src/main/java/io/undertow/server/handlers/resource/PathResource.java ve https://github.com/undertow sayfasına bakın. -io/undertow/blob/07d0ccb1eefb04a3b712af4e2c8f3a303081b0b1/core/src/main/java/io/undertow/sunucu/işleyicileri/resource/ResourceHandler.java –

+0

@FedericoSierra Nasıl bir etag dahil etmek için ve hakkında herhangi bir fikir değişken boyut, örneğin Bir dosyanın içeriği üzerinde biraz karma. –

cevap

0

ETag başlığı ile savaş kaynaklarına hizmet veren özel "kaynak" sunucu uygulamasıyla geçici bir çözüm gerçekleştirdim.

Servlet, Omnifaces kitaplığında (http://showcase.omnifaces.org/servlets/FileServlet) uygulanan FileServlet sınıfından genişler. FileServlet uygulaması, tüm HTTP önbellek başlıklarını doğru şekilde ele alır, ihtiyacınız olan şey, kaynak kaynak dosyalarını sunmak için getFile() kaynak yükleme yöntemini uygulamaktır.

@WebServlet(value = {"/app/*"}) 
public class ApplicationResourceServlet extends FileServlet { 

    @Override 
    protected File getFile(HttpServletRequest request) throws IllegalArgumentException { 
    final String pathInfo = request.getPathInfo(); 
    if (pathInfo == null || pathInfo.isEmpty() || "/".equals(pathInfo)) { 
     return null; 
    } 
    final String realPath = getServletContext().getRealPath("/app" + pathInfo); 
    if (realPath != null && Paths.get(realPath).toFile().exists()) { 
     return new File(realPath); 
    } 
    return null; 
    } 
} 
İlgili konular