有这样一个场景,
数据不需要实时更新,且网站访问量又大,如果每条数据都要从数据库里查询数据的话,将对数据库造成很大的压力,之前的解决办法是使用YzmCMS生成静态HTML插件,这个插件确实解决了数据库压力问题,但需要经常手动生成静态HTML文件,比较麻烦,而且生成的HTML文件又占用大量的服务器空间,有没有一个功能是介于动态和静态两者之间的呢?即不经常查询数据库,又不需要经常手动更新HTML,这个解决方法来了。
系统的所有的标签都支持做数据缓存,但主要还是用在不需要实时更新的数据上,例如栏目排行榜、评论排行榜等场景,举个例子:
之前的栏目点击排行标签:
{m:hits field="title,url,color,inputtime" catid="$catid" limit="10"} {loop $data $v} <li><span class="date">{date('m-d',$v['inputtime'])}</span><a href="{$v[url]}" title="{$v[title]}" target="_blank">{title_color($v['title'], $v['color'])}</a></li> {/loop}
做数据缓存的栏目排行标签:
{m:hits field="title,url,color,inputtime" catid="$catid" limit="10" cache="3600"} {loop $data $v} <li><span class="date">{date('m-d',$v['inputtime'])}</span><a href="{$v[url]}" title="{$v[title]}" target="_blank">{title_color($v['title'], $v['color'])}</a></li> {/loop}
仔细看就会发现,其实标签加了一个 cache 属性,该属性的值是一个缓存时间,单位为秒,例如以上的实例数据则是3600秒内使用缓存数据,过期之后将自动读取数据库生成新的缓存数据,该缓存数据根据缓存配置可生成到文件file、redis、memcache里,非常的简单方便,如果网站访问人数比较大、或数据量大的话,使用缓存效果很明显的,可以提高页面响应速度,减少数据库压力。
生成静态HTML文件、标签数据缓存、动态实时更新,这些功能合理使用可以使YzmCMS搭建的网站承受更大的负载!
关于YzmCMS百万数据负载测试,请看另外一个文章:https://blog.yzmcms.com/php/157.html