2017-11-21 1 views
0

Ich habe einen Frühling Boot-2-Anwendung, wo statische Ressourcen sind:Cache und zip statische Ressourcen mit Frühlings-Boot-2

src 
|- main 
    |-resources 
     |-static 
      |-js/myjs.js 
      |-style 
       |-css/mycss.css 

In meiner Template-Datei:

<link rel="stylesheet" type="text/css" href="/style/css/mycss.css"> 
<script src="/js/myjs.js"></script> 

Dies funktioniert gut.

Allerdings möchte ich Browser-Cache und Gzip-Transfer aktivieren. Um dies zu tun ich habe folgende WebConfig erstellt:

@Configuration 
public class WebConfig implements WebMvcConfigurer { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry 
       .addResourceHandler("/static/**") 
       .addResourceLocations("/static/") 
       .setCachePeriod(3600) 
       .resourceChain(true) 
       .addResolver(new GzipResourceResolver()) 
       .addResolver(new PathResourceResolver()); 
    } 
} 

Die App noch funktionieren, aber keine statischen Inhalte zwischengespeichert werden noch gzipped:

enter image description here

Jede Idee, was ich falsch mache?

+0

Ist der Frühling nicht durch die Tatsache verwirrt, dass der ResourceHandler und der ResourceLocation beide als "statisch" gekennzeichnet sind? Was ich denke ist, dass Ihr logischer ResourceHandler "static" von der URL ResourceLocation "static" umgangen wird. Es verdient einen Versuch, den ResourceHandler "static" zu modifizieren. – Julien

+0

Mögliches Duplikat von: https://stackoverflow.com/questions/21123437/how-doi-i-use-spring-boot-to-serve-static-content-located-in-dropbox-folder – Julien

+0

Überprüfen Sie die Anforderungsheader auf Stellen Sie sicher, dass Sie gezippte Antworten akzeptieren. Sie sollten etwas wie 'Accept-Encoding: gzip, deflate' haben. – ESala

Antwort

0

Schließlich konnte ich es mit einfacher Anwendungskonfiguration lösen: Es wurde

server.compression.enabled=true 
spring.resources.cache-period=3600 

Der WebConfig Code aus dem Projekt entfernt.

Hinweis: Ich muss beachten, dass Chrome immer noch zeigt, dass Inhalt nicht komprimiert wurde, aber wenn ich den Netzwerkverkehr mit Fiddler überprüfe, dann zeigt es, dass alle CSS- und JS-Dateien komprimiert wurden.

Verwandte Themen