缓存
缓存是提升 Web 应用性能简便有效的方式。通过将相对静态的数据存储到缓存并在收到请求时取回缓存,应用程序便节省了每次重新生成这些数据所需的时间。
缓存可以应用在 Web 应用程序的任何层级任何位置。在服务器端,在较的低层面,缓存可能用于存储基础数据,例如从数据库中取出的最新文章列表;在较高的层面,缓存可能用于存储 一段或整个 Web 页面,例如最新文章的渲染结果。在客户端,HTTP 缓存可能用于将最近访问的页面内容存储到浏览器缓存中。
SF支持以下几种缓存机制:
- 数据缓存
- 页面缓存
- HTTP缓存
数据缓存
数据缓存目的将数据库查询结果存储到缓存中,下次请求数据直接从缓存读取,不需要再从数据库查询,从而减少数据库压力。
SF支持memcache、memcached和redis三种适配缓存,缓存配置:
;适配器 memcache、memcached或redis
resources.cache.adapter = memcached
resources.cache.host = 127.0.0.1
resources.cache.port = 11211
memcache和memcaced支持多缓存:
;适配器 memcache或memcached
resources.cache.adapter = memcached
resources.cache.multi_cache = true
resources.cache.server.0.host = 127.0.0.1
resources.cache.server.0.port = 11211
resources.cache.server.1.host = 127.0.0.1
resources.cache.server.1.port = 11212
resources.cache.server.2.host = 127.0.0.1
resources.cache.server.2.port = 11213
如下代码是常用的缓存demo:
//从缓存读取数据
$data = Star_Cache::get($key);
if ($data === false)
{
//重新拉取$data数据
//写入缓存
Star_Cache::set($key, $data);
}
页面缓存
页面缓存指的是在服务器端缓存整个页面的内容。随后当同一个页面被请求时,内容将从缓存中取出,而不是重新生成。
页面缓存实例:
<?php
class IndexController extends Star_Controller_Action
{
public function init()
{
}
public function indexAction()
{
//开启缓存 有三个参数1.缓存key,默认action 2.缓存时间,默认60秒 3.是否强制刷新 默认false
$this->openCache();
//是否存在缓存
if ($this->hasCache() == true)
{
//显示缓存
return $this->showCache();
}
//业务逻辑
}
}
?>
提示:页面缓存开启会写入缓存文件,application/caches 目录需要可写入权限。
HTTP缓存
除了服务器端缓存外, Web 应用还可以利用客户端缓存去节省相同页面内容的生成和传输时间。通过向客户端发送 Last-Modified
和 Cache-Control
头指定了页面的常规缓存策略:
//指定缓存时间
Star_Http_Response::setBrownerCache(600);
当前内容版权归 starframework 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 starframework .