-GWA2 更新增加对缓存的默认集成方法,使用额外指定缓存 Key 的方式可以激活缓存服务。
$cacheKey = ‘my-cache-key’;
$data = $gwa2->getBy(“field1, field2, ….”, “field1 like ?”, $withCache=array(‘key’=>$cacheKey));
或者
$data = $gwa2->execBy(“select * from tbl_a”, “field1 like ?”, $withCache=array(‘key’=>$cacheKey));
如此,则读取服务会首先根据指定的 $cacheKey 去读取缓存服务,若获得数据,则直接返回缓存中的服务;若没有获得数据,则进一步地调用读取外部数据如Database或者Filesystem, 也即
$data = $gwa2->getBy(“field1, field2, ….”, “field1 like ?”);
或者
$data = $gwa2->execBy(“select * from tbl_a”, “field1 like ?”);
经此被调用的读取方法,会在成功获得外部数据后,调用缓存的写方法,将数据写入到缓存中,已备下次相同请求数据 Key 的读取能够直接从缓存中获得。如此则实现了对缓存的默认集成,built-in cache.
大致流程及图例如下。
之所以使用集成的Built-in的方式,是因为如果启用缓存,在多个地方需要重复对GWA2::getBy/GWA2::execBy的反复调用,先使用缓存调用一遍,然后判断返回结果,若失败则再使用Db/Fs的读取一遍,再判断返回结果,如果是成功的则设置写入到缓存。大致流程如下。
$cacheKey = “my-cache-key”;
$data = $gwa2->getBy(‘cache:’, $args=array(‘key’=>$cacheKey));
if($data[0]){
# read cache succ
}
else{
# read cache fail
$data = $gwa2->getBy(‘field1, field2, …’, “field1 like ?”);
if($data[0]){
# read db succ
$gwa2->setBy(‘cache:’, $args=>array(‘key’=>$cacheKey, ‘value’=>$data[1]));
}
else{
# read db fail
}
}
上面的集成(Built-in)本质上就是对这些重复代码进行封装的操作,如此则让开发更快捷。随着实践的增多,或许稍后调用时,$withCache 的参数由一个带有 cacheKey 的数组变为一个 boolean值, 而 cacheKey 的生成则自动完成。也即,
$data = $gwa2->getBy(‘field1, field2, …’, ‘field1 like ?’, $useCache=true);
实现上面的操作,离不开 -GWA2 之前的更新操作,如
gwa2更新多数据库驱动支持
受益于此,基于 -GWA2 的 -gMIS 将首先使用该缓存服务。
-GWA2 是一套通用网络应用(软件程序)架构系统,基于 -GWA2 可以轻便构建各种网络应用程序, 包括复杂的在线购物商城、 旅游交易平台、社群或者社交网站和新闻资讯网站等, 也包括各种企事业单位网上门户,在线交互及服务作业系统等. 还可以包括为NativeApp做服务器端支持, 甚至是WebApp的全部。
逻辑图的制作,使用 -cacoo 在线完成.
Pingback引用通告: GWA2吉娃兔🐇升級基於事件驅動的緩存處理模塊 | -UFQI-Blog
Pingback引用通告: -GWA2 更新实现Filea和Perl版本的引入 | -wordpress-wadelau