在分页查询的时候可以指定是否从缓存中获取数据,框架中开始设定的是ajax不走缓存,而非ajax才走缓存,这样做在后期做复杂业务的时候会有一定的局限性,所以编写了过滤器缓存依赖,用来指定根据提交的数据而进行自动判断是否从缓存中后期query数据。
<?php namespace common\caching; use yii\caching\Dependency; use common\base\Filter; /** * Filter缓存依赖,根据指定的“get”、“post”、“request”的值,到提交的数据中进行查询返回对应的值,如果请求的数据发生变化则缓存失效 * * @author niqingyang <niqy@qq.com> * */ class FilterDependency extends Dependency { public $post = []; public $request = []; public $get = []; public $defaults = []; protected function generateDependencyData ($cache) { $data = []; foreach((array)$this->get as $name) { $data[$name] = Filter::get($name, $this->defaults[$name]); } foreach((array)$this->post as $name) { $data[$name] = Filter::post($name, $this->defaults[$name]); } foreach((array)$this->request as $name) { $data[$name] = Filter::request($name, $this->defaults[$name]); } return $data; } }
可以用在pageList函数中:
/** * 获取商品分页列表 * * @param string $read_cache * @param array $params */ public static function pageList ($read_cache = false, $params = [], Dependency $dependency = null) { // 分页设置 $filter = Filter::getInstance($read_cache); if(isset($filter->query) && $filter->query instanceof Query) { $filter->page($filter->query); return $filter; } $defaults = [ 'shop_id' => null, 'goods_status' => null, 'goods_audit' => null ]; $params = ArrayHelper::merge($defaults, $params); $query = new Query(); $query->select('*')->from(static::tableName())->orderBy([ 'goods_id' => 'desc' ]); // 状态 if(($goods_status = Filter::get('goods_status', $params['goods_status'])) !== null) { $query->andWhere([ 'goods_status' => $goods_status ]); } // 加上缓存依赖 // 此处根据查询条件进行判断是否需要从缓存中读取数据 // 一旦指定的查询条件发生变化,则刷新缓存 $filter->page($query, new FilterDependency([ 'get' => 'goods_status' ])); return $filter; }
通过下面的代码指定了,获取fitler的条件,一旦get提交的goods_status值发生变化则自动刷新缓存,这样无论是ajax还是非ajax都可以默认从缓存中读取数据了
// 加上缓存依赖 // 此处根据查询条件进行判断是否需要从缓存中读取数据 // 一旦指定的查询条件发生变化,则刷新缓存 $filter->page($query, new FilterDependency([ 'get' => 'goods_status' ]));
相关推荐
AspNetAdditional.dll , AspNetTheCall.dll两者缺一不可 功能介绍: DataPath =传入IP库的...CreateDataSetCache =创建缓存依赖 GetAllCache =创建缓存依赖项 PostSet = POST传值 JudgeNumber = 判断是否是数字
GWTCacheControlFilter基于GWTCacheControlFilter将适当的缓存属性添加到GWT生成的文件中。 和.nocache。 命名模式。 如果文件系统上存在一个PreEncodedGzipFilter它将提供静态文件的gzip变体,并且请求指定“ ...
computed:监控已有的属性,一旦属性的依赖发生了改变,就去自动调用对应的方法 filter:js中为我们提供的一个方法,用来帮助我们对数据进行筛选 watch与computed的区别: 1.watch监控现有的属性,computed通过现有的属性...
036.NET5_支持依赖注入扩展.mp4 037.NET5_Filter的生效范围控制执行顺序.mp4 038.NET5_Resource扩展定制支持缓存.mp4 039.NET5_自定义Filter匿名.mp4 040.NET5_ExceptionFilter.mp4 041.NET5_ExceptionFilter....
关于使用这个 nginx 配置,我们可以检查用户设备的类型(iPhone、iPod、iPad、Android 手机、Android ...nginx 的依赖ngx_http_image_filter_module ngx_let_module ngx_eval_module 配置nginx ./configure --with-...
缓存空值、BloomFilter 缓存雪崩: 缓存层不能提供服务,所有的请求都会达到存储层,存储层的调用量会暴增,造成存储层挂掉。解决方案: 缓存集群、本地缓存、限流、降级 算法和协议 数据一致性 容器与devops goLang ...
用于net6+Swagger+JWT+MemoryCache缓存+redis缓存+捕获全局异常Filter+ token过滤器+定时任务Job+Atuoface容器依赖注入 配置和使用
本项目结 构上分为表现层、业务层和数据访问层,层次间的依赖关系自下到上。采用的技术有Struts,Spring,Hibernate,Log4J,JDom 等。其中表现层采用Struts框架开发;...为提高性能,采用Servlet Filter实现了缓存代理
处理复杂逻辑,基于依赖缓存,当依赖发生改变时会重新取值。用methods也可以实现同样的效果,但methods在重新渲染的时候会重新调用执行,在性能上computed优于methods,当不需要缓存时可用methods。 实例1:computed...
spring-web.jar(必须) :这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。...
# 依赖环境 JDK8、 Maven、 Mysql、 Redis 、nacos 注册中心采用阿里巴巴 nacos 缓存使用的是redis oauth2数据存储在数据库中 username: test password: 123456 phone: 13100000000 verifyCode: 1000 //数据库...
puput-demo 使用Puput的示例博客应用设定值puput-demo广泛依赖于环境设置,该环境设置不适用于Apache / mod_wsgi设置。 它已与Gunicorn / Nginx甚至uWSGI / Nginx一起成功部署。 出于配置目的,下表将“ puput-demo...
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar 这个...
其实Spring本身就有提供对redis的支持,就是spring-session,我们只需将这个在pom.xml添加如下代码,maven便会自己下载所需的jar包及依赖包。 1 <dependency>2 <groupId>org.springframework.session</groupId>3 ...
有网络问题重新启动MySQL服务器重新启动托管MySQL服务器的服务器长时间关闭了托管MySQL服务器的服务器无限期等待就绪MySQL(重新)连接以处理操作无状态,不保留任何内容,依赖于MySQL缓存可以使用set()Pipelet...
RDD的特性(RDD的解释) 1.RDD可以看做是⼀些列partition所组成的 2.RDD之间的依赖关系 3.算⼦是作⽤在partition之上的 4.分区器是作⽤在kv形式的RDD上 5.partition提供的最佳计算位置,利于数据处理的本地化即计算...
用法Rememo的默认导出是一个接受两个参数的函数:选择器函数,其返回值将被缓存,第二个函数返回选择器派生所依赖的引用或引用数组。 返回值是一个新函数,该函数接受与选择器相同的参数。 import createSelector ...
product_purchase广泛依赖于环境设置,该环境设置不适用于Apache / mod_wsgi设置。 它已与Gunicorn / Nginx甚至uWSGI / Nginx一起成功部署。 出于配置目的,下表将“ product_purchase”环境变量映射到其Django设置...
具有零依赖关系的严肃 OData 查询 url 构建器。 ##为什么这个? OpenQuery 提供了一种将过滤、选择、展开和其他命令链接在一起的方法。 没有缓存,没有复杂的客户端框架。 OpenQuery 构建 URL,您可以选择如何...
您可能要讲的内容: Ruby版本3.0.0 系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明... RuboCopの设定エラーの影响范囲が大きいCopを无效化して,个别のエ...