2017-12-09 1 views
1

Ich arbeite an einer lokalen Kleinanzeigen-Website und jetzt jedes Mal, wenn eine Seite lädt die Datenbank abgefragt wird.Zwischengespeicherte Version der Website nur

Ich habe festgestellt, dass andere beliebte Kleinanzeigen Websites eine im Cache gespeicherte Version ihrer Website, die die Ladezeit und Serverlast erheblich reduzieren würde.

Wie kann ich dies mit Spring Boot oder Tomcat erreichen? Ich möchte, dass der Cache der Website alle X Minuten aktualisiert wird.

ich Thymeleaf als mein Template-Engine bin mit

+0

Sie müssen weitere Details angeben. Verwenden Sie JSP, Thymeleaf, REST? –

+0

Ich benutze Thymeleaf – Arya

Antwort

0

Zuerst org.springframework.boot:spring-boot-starter-cache auf Ihre Abhängigkeiten in build.gradle oder pom.xml hinzufügen sollten.

Nehmen wir an, Sie verwenden DataService, um Daten für Ihre Ansicht zu erhalten. Sie können @Cacheable Annotation darauf setzen.

@Service 
class DataService { 

    @Cacheable("cache") 
    String compute() { 
     return "something" 
    } 

} 

Dann sollten Sie folgende Konfiguration hinzu:

@EnableCaching 
@Configuration 
public class CacheConfiguration { 

    public static final String CACHE_NAME = "cache"; 

    @Bean 
    public CacheManager cacheManager() { 
      ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager(CACHE_NAME); 
     return cacheManager; 
    } 

    @CacheEvict(allEntries = true, value = CACHE_NAME) 
    @Scheduled(fixedDelay = 10* 60 * 1000 , initialDelay = 500) 
    public void evictCache() {} 


} 

alle 10 Minuten Cache gelöscht wird.

+0

Dies ist einer meiner Dienste für den Erhalt von Anzeigen https://pastebin.com/zrZYCLNA, aber ich bekomme den folgenden Fehler, wenn es ausgeführt wird https://pastebin.com/LXYyfPqZ – Arya

+0

BTW ist es möglich, die zu speichern Cache auf der Festplatte statt RAM? – Arya

+0

Sie müssen den Namen des Cache in '@ Cacheable' hinzufügen. Ich habe das vergessen. Für Ihre Frage müssten Sie den Cache CacheManager bereitstellen. Sie können eine andere Frage dazu stellen. –

Verwandte Themen