首页 / 缓存 / php – MVC框架中的缓存策略?
php – MVC框架中的缓存策略?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – MVC框架中的缓存策略?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2909字,纯文字阅读大概需要5分钟。
内容图文
![php – MVC框架中的缓存策略?](/upload/InfoBanner/zyjiaocheng/752/c942dcac446c4107b7c7d966dbaa1c48.jpg)
我编写了自己的小PHP MVC框架,现在我在PHP MVC框架中探索缓存策略.我在想什么可以缓存,在哪里以及如何.
我拥有的框架是简单的MVC框架.我有前置控制器,启动应用程序,注册类自动加载,设置php运行时指令……最后分析URL并将请求分派给适当的控制器,方法,动作控制器,如何调用它.从控制器,我可以访问域对象和数据映射器,它们可以将域对象持久保存到某个存储,大部分时间是关系数据库.
从控制器我可以访问域对象和数据映射器.
因此,就缓存而言,这些是我所知道的事情,我知道我现在可以做的事情.
使用PHP,我可以使用作为操作码缓存的APC缓存,但我也可以使用它将变量保存到RAM中.然后我可以使用Memcache和Memcahed作为APC缓存工作,但我可以从不同的服务器访问存储的缓存如果我必须扩展.而这两个不是操作码缓存.
据我所知,我可以做这些事情:
>当在控制器中时,我可以将域对象保存到缓存中,因此如果我已经在缓存中已经拥有该域对象,则每次都不必打开与数据库的连接.
>我可以构建我的缓存系统,它将分析引导程序中的URL,然后在存在具有该页面URL的缓存时获取该URL的已解释页面,如果不存在则处理请求,然后将该页面保存到缓存中并将其与当前关联网址
所以,正如你所看到的,我真的不知道如何在我的MVC中实现缓存,我应该在哪里缓存内容,如何以及存在哪些可能性.
那么有人可以更好地解释这一点,或者将我重定向到一些我可以学习缓存的好文章吗?
谢谢!
解决方法:
The opcode cache is there to offset the cost of interpreting your PHP code for each request. It’s related to server infrastructure. Kinda like load balancing. Leave it to your admin(s). Or someone who has used *NIX distro, that is not ubuntu.
在MVC应用程序中,有3个点可以缓存内容:
>周边:
应用程序的一部分与MVC模式本身并不相关,但涉及到MVC:路由机制和(如果使用它)DIC.
您可以为路由机制缓存的内容取决于实现.如果您使用更可读的模式生成一些正则表达式,那么您可以缓存生成的表达式.并且还可以缓存通常由路由产生的部分参数.这两个在中/大型站点都是合理的,对于小型站点来说完全没有意义.
如果您决定使用DIC(我个人认为它是反模式,但所有酷孩子都不同意),那么缓存几乎是强制性的,因为正确编写的DIC将利用反射.反思很慢.
>回应
有时应用程序的某些部分需要大量资源才能创建.如果您的MVC解释具有完全实现的视图,则可以缓存一些用于生成输出的模板.
例如,像StackOverflow一样获取网站.如果您决定在侧边栏上创建“过去24小时内的顶级标记”块,则无法为每个页面视图重新生成该标记.解决此限制的一种方法是仅在每小时左右重新计算标记,并将生成的结果存储在HTML片段中.然后可以重复使用该片段.如果缓存的片段是XHR使用的某些JSON,您甚至可以添加客户端expire头以进一步降低服务器负载.
您可以只缓存页面片段或整个事物.这基本上是如何在具有MVC-imbued架构的站点中处理具有静态内容的部分.
>模型层
这是棘手的一点.
首先,您必须了解缓存只是另一种存储形式,这意味着缓存由特殊的映射器处理.
$user = new User;
$cache = new UserCacheMapper;
$user->setId( 42 );
if ( ! $cache->fetch( $user ) )
{
$storage = new UserDbMapper( $pdo );
$storage->fetch( $user );
$cache->store( $user );
}
// the $user object has been initialized
缓存映射器也是缓存失效的地方,这样您就可以在项目的任何阶段添加缓存机制.
虽然,我建议停止使用控制器来处理域对象和存储之间的交互.您基本上是在表示层中泄露域业务逻辑.我建议创建包含此部分应用程序的服务,并让您将控制器与域逻辑隔离开来.
内容总结
以上是互联网集市为您收集整理的php – MVC框架中的缓存策略?全部内容,希望文章能够帮你解决php – MVC框架中的缓存策略?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。