Cache


Module de cache intégré

Le module WebMVC a intégré le module de cache. Le cache de la méthode du contrôleur peut être facilement implémenté via l'annotation @Cacheable. Les portées APPLICATION et SESSION peuvent être prises en charge en configurant le paramètre scope_processor_class du module de cache ;

# 设置缓存作用域处理器
ymp.configs.cache.scope_processor_class=net.ymate.platform.webmvc.support.WebCacheScopeProcessor

Exemple de code : mettre en cache les résultats de l'exécution de la méthode au niveau de la session (SESSION) pendant 180 secondes ; la méthode du contrôleur et ne peut pas mettre en cache la vue IView Le résultat final de l'exécution de Sur les classes et méthodes du contrôleur annoté par ResponseCache

Description
 : Le framework fournit une implémentation par défaut de l'interface IWebCacheProcessor net.ymate.platform; webmvc.support.WebCacheProcessor pour mettre en cache les résultats d'exécution de la vue,
Mais il convient de noter que lors de son utilisation, veuillez vérifier le filtre DispatchFilter de web.xml et ne pas configurer <dispatcher>INCLUDE</dispatcher>, sinon une boucle infinie se produira ;

@ResponseCache description du paramètre d'annotation :

cacheName : nom du cache, paramètre facultatif, la valeur par défaut est par défaut ;
key : clé de cache, paramètre facultatif, s'il n'est pas défini, il sera implémenté par l'interface IWebCacheProcessor. Généré automatiquement ;
processorClass : processeur de cache de vue personnalisé, paramètres facultatifs, s'il n'est pas fourni, la configuration par défaut des paramètres de l'interface IWebCacheProcessor est utilisé ;

scope : portée du cache, paramètres facultatifs, les valeurs facultatives​​sont APPLICATION, SESSION et DEFAULT , la valeur par défaut est DEFAULT

timeout : délai d'expiration des données du cache, paramètre facultatif, la valeur doit être supérieure ou égale à ; 0, 0 signifie que le cache par défaut est de 300 secondes ; useGZip : s'il faut utiliser la compression GZIP, la valeur par défaut est truenet.ymate.platform.webmvc.support.WebCacheProcessor用以缓存视图执行结果,
但需要注意的是当使用它时, 请检查web.xml的过滤器DispatchFilter中不要配置<dispatcher>INCLUDE</dispatcher>,否则将会产生死循环;

@ResponseCache注解参数说明:

cacheName:缓存名称, 可选参数, 默认值为default;

key:缓存Key, 可选参数, 若未设置则由IWebCacheProcessor接口实现自动生成;

processorClass:自定义视图缓存处理器, 可选参数,若未提供则采用默认IWebCacheProcessor接口参数配置;

scope:缓存作用域, 可选参数,可选值为APPLICATION、SESSION和DEFAULT,默认为DEFAULT;

timeout:缓存数据超时时间, 可选参数,数值必须大于等于0,为0表示默认缓存300秒;

useGZip:是否使用GZIP压缩, 默认值为true

默认IWebCacheProcessor接口参数配置:

    @Controller
    @RequestMapping("/demo")
    @Cacheable
    public class CacheController {

        @RequestMapping("/cache")
        @Cacheable(scope = ICaches.Scope.SESSION, timeout = 180)
        public IView doCacheable(@RequestParam String content) throws Exception {
            // ......
            return View.textView("Content: " + content);
        }
    }

框架默认提供了该接口的实现类:net.ymate.platform.webmvc.support.WebCacheProcessor

    Configuration des paramètres de l'interface IWebCacheProcessor par défaut :
# 缓存处理器,可选参数
ymp.configs.webmvc.cache_processor_class=demo.WebCacheProc

Le framework fournit la classe d'implémentation de cette interface par défaut : net.ymate.platform.webmvc.support.WebCacheProcessor
Basé sur le module de mise en cache du cache pour en faire la portée Scope.DEFAULT dans l'annotation @ResponseCache prend en charge les configurations liées au navigateur tels que Last-Modified, et prend en charge des fonctionnalités telles que la compression GZIP

Exemple de code :

package demo;

import net.ymate.platform.webmvc.*;
import net.ymate.platform.webmvc.view.IView;

public class WebCacheProc implements IWebCacheProcessor {
    public boolean processResponseCache(IWebMvc owner, ResponseCache responseCache, IRequestContext requestContext, IView resultView) throws Exception {
        // 这里是对View视图自定义处理逻辑...
        // 完整的示例代码请查看net.ymate.platform.webmvc.support.WebCacheProcessor类源码
        return false;
    }
}

@Controller
@RequestMapping("/demo")
public class CacheController {

    @RequestMapping("/cache")
    @ResponseCache
    public IView doCacheable(@RequestParam String content) throws Exception {
        // ......
        return View.textView("Content: " + content);
    }
}
🎜🎜🎜🎜🎜Description🎜 : Cette méthode d'interface renvoie une valeur booléenne, utilisée pour indiquer au framework WebMVC s'il doit continuer à traiter le vue du contrôleur ; 🎜🎜🎜