10 关于DTCore的缓存

DTcms Core 更新至6.0.1版本 - 团队日志 - 动力启航官方网站一文中提到:

      在AOP切面编程的时候我们花了大量的时间在Service层做缓存试验,但是在生成Key的时候我们遇到了很大的问题,由于Service层参数使用的是表达式目录树,要提取参数时浪费了很大的性能,所以最终不得不放弃在Service层做缓存的决定。最后通过资源过滤器来做缓存,性能得到了很大的提升。

var cacheKey = $"{context.HttpContext.Request.Host}{context.HttpContext.Request.Path}{context.HttpContext.Request.QueryString}";

其实我也不懂,感觉这个想法非常不错,但想提问一下:

1.key这么长,会影响查找效率吗?

2.后面的QueryString是否有顺序可言?比如我id=1&act=a和act=a&id=1是否会用到同一个缓存?还是说是会创建两个?

3.最大的问题是:如何即时更新缓存?比如我在获取分类api上添加了CachingFilter属性,我后台更新了分类,那如何去更新数据到api?等缓存时间到?不科学吧,比如分类,频道这些常用数据,在没有变动的情况下,是常驻缓存较好吧,就是说没有过期时间,但如果后台更改了源数据,则需要更新缓存(一般做法是直接删除缓存,等取的时候自动获取最新的),但是这样加上属性后,key是自动生成的,就不知道哪个key用了此缓存。


请先 登录 后评论
  • 0 关注
  • 0 收藏,1409 浏览
  • imadmin 提出于 2022-02-23 23:51

相似问题