使用 PHP 查看缓存

Posted

技术标签:

【中文标题】使用 PHP 查看缓存【英文标题】:View Caching with PHP 【发布时间】:2011-12-16 22:19:11 【问题描述】:

我有一个关于视图缓存的问题,假设我有以下代码块:

<?php
    class View           
        public function render ( $template , $path = null )   
            // ...  
        

这是我的“MainView”,该类在所有其他视图中都得到了扩展,例如“ClientsView”等。

但是,我想实现一种方法来拦截投降的请求,通过缓存,当我将这个参数传递给render方法时,我对缓存说,或者什么..我只是想保持控制..所以我有一个“ViewCacheStorage”,您将在其中存储缓存的文件,以及每个缓存到期的剩余时间,在我不必动摇主视图的情况下,最好的方法是什么?

【问题讨论】:

reocities.com/tablizer/myths.htm “无需摇动主视图”是什么意思? 不添加代码在主视图中创建视图缓存。 为什么render方法是视图的时候有参数? 因为这个方法是渲染模板,所以被其他视图调用 【参考方案1】:

一个简单的选择:

class CachingView extends View 

    protected $cacheStorage;

    public function render($template, $path = null) 
        if (! $this->getCacheStorage()->has($template)) 
           $this->getCacheStorage()->store(parent::render($template, $path));
        

        return $this->getCacheStorage()->get($template);
    

    public function getCacheStorage() 
        if (empty($this->cacheStorage)) 
            $this->cacheStorage = new ViewCacheStorage();
        
        return $this->cacheStorage;
    

然后所有其他视图都从 CachingView 扩展。

【讨论】:

在这种情况下,我需要缓存的类,是吗? 我不太明白你的问题,但我已经更新了我的代码以包含一个 CacheStorage 类 - 也许现在对你来说更清楚了。

以上是关于使用 PHP 查看缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何使用控制缓存标头?

php 中如何使用缓存,使用哪种缓存机制最好;

PHP缓存

php文件缓存类汇总

使用结果缓存和不使用结果缓存来计时我的 php 函数

php可选缓存APC