我想在我的应用设计中加入缓存。为初学者缓存模板。
到目前为止,我使用的设计非常模块化。我为所有
创建了一个ORM实现我的表和每个表由相应的类表示。
所有请求都由一个控制器处理,控制器将它们路由到适当的webmethod函数。
我正在使用模板类来处理UI部件。
我对缓存的想法包括使用
实现单独的Cache类来处理缓存存储文件,apc或memcache的灵活性。现在我正在测试文件缓存。
一些想法
在webmethods中处理传入的请求,最终调用Template类。
在第一种情况下,事情非常简单,因为除了传递模板类之外我不需要更改任何内容
额外参数(是否从缓存加载)。
然而,在第二种情况下,我正在考虑在webmethod中立即检查缓存版本,如果找到则返回它。这将保存所有处理,直到逻辑到达模板(第一种情况senario)。
然而,两个senarios都依赖于使缓存无效的准确机制,这带来了
使缓存无效
正如我所看到的(并且您可以自由添加输入)模板缓存文件,如果符合以下条件,则会失效:
一个。到期时间到了。
湾模板文件本身已更新(即开发人员在添加新行时)
℃。处理请求更改的web方法(即开发人员在代码中添加/删除某些内容)
d。来自数据库并以模板文件结尾的内容已修改
我正在考虑在缓存文件中存储json编码数组。 第一个值是缓存的到期时间戳。 第二个值将是php文件的修改时间,其中代码处理请求(以处理上面的选项c) 第三个是内容本身
根据上述情况,我正在考虑的验证过程是:
一个。如果达到缓存文件(存储在数组中)的到期,请删除缓存文件
湾如果缓存文件的mod时间小于模板的骨架文件mod时间,则删除缓存的文件
℃。如果php文件的mod时间比缓存中存储的mod时间长,则删除缓存的文件。
d。这很棘手。在ORM实现中,我添加了事件处理程序(在添加,更新,删除对象时触发)。 每次修改提供模板内容的对象时,我都可以删除缓存文件。
问题是如何跟踪哪些缓存文件与每个架构对象相对应。
举个例子,用户有他的短信息页面和完整的个人资料页面(2个模板)
可以缓存这些模板。现在,每次用户修改他的个人资料时,事件处理程序都需要知道哪个
模板或缓存文件对应于用户,因此可以删除这些文件。我可以将它们存储在数据库中,但我
寻找更好的方法
答案 0 :(得分:0)
查看Zend_Cache
:
它提供了后端,用于许多缓存系统,其中包括APC和memcached。它还提供完整页面和部分页面缓存,以及函数调用缓存等。