Php模板缓存设计

时间:2010-03-04 12:36:00

标签: php caching

我想在我的应用设计中加入缓存。为初学者缓存模板。

到目前为止,我使用的设计非常模块化。我为所有

创建了一个ORM实现

我的表和每个表由相应的类表示。

所有请求都由一个控制器处理,控制器将它们路由到适当的webmethod函数。

我正在使用模板类来处理UI部件。

我对缓存的想法包括使用

实现单独的Cache类来处理缓存

存储文件,apc或memcache的灵活性。现在我正在测试文件缓存。

一些想法

  1. 我是否应该在Template类或
  2. 中包含检查缓存版本的逻辑

    在webmethods中处理传入的请求,最终调用Template类。

    在第一种情况下,事情非常简单,因为除了传递模板类之外我不需要更改任何内容

    额外参数(是否从缓存加载)。

    然而,在第二种情况下,我正在考虑在webmethod中立即检查缓存版本,如果找到则返回它。这将保存所有处理,直到逻辑到达模板(第一种情况senario)。

    然而,两个senarios都依赖于使缓存无效的准确机制,这带来了

    1. 使缓存无效

      正如我所看到的(并且您可以自由添加输入)模板缓存文件,如果符合以下条件,则会失效:

      一个。到期时间到了。

      湾模板文件本身已更新(即开发人员在添加新行时)

      ℃。处理请求更改的web方法(即开发人员在代码中添加/删除某些内容)

      d。来自数据库并以模板文件结尾的内容已修改

      我正在考虑在缓存文件中存储json编码数组。 第一个值是缓存的到期时间戳。 第二个值将是php文件的修改时间,其中代码处理请求(以处理上面的选项c) 第三个是内容本身

      根据上述情况,我正在考虑的验证过程是:

      一个。如果达到缓存文件(存储在数组中)的到期,请删除缓存文件

      湾如果缓存文件的mod时间小于模板的骨架文件mod时间,则删除缓存的文件

      ℃。如果php文件的mod时间比缓存中存储的mod时间长,则删除缓存的文件。

      d。这很棘手。在ORM实现中,我添加了事件处理程序(在添加,更新,删除对象时触发)。  每次修改提供模板内容的对象时,我都可以删除缓存文件。

      问题是如何跟踪哪些缓存文件与每个架构对象相对应。

      举个例子,用户有他的短信息页面和完整的个人资料页面(2个模板)

      可以缓存这些模板。现在,每次用户修改他的个人资料时,事件处理程序都需要知道哪个

      模板或缓存文件对应于用户,因此可以删除这些文件。我可以将它们存储在数据库中,但我

      寻找更好的方法

1 个答案:

答案 0 :(得分:0)

查看Zend_Cache

它提供了后端,用于许多缓存系统,其中包括APC和memcached。它还提供完整页面和部分页面缓存,以及函数调用缓存等。