代码之家  ›  专栏  ›  技术社区  ›  Kirzilla

Smarty缓存文件无效

  •  2
  • Kirzilla  · 技术社区  · 14 年前

    我想稍微深入一点Smarty缓存,所以我有一些简单的问题。。。

    1. 为了操纵缓存失效,我想知道Smarty将其缓存存储在哪个目录中。例如,与 user_id=123 cache/users/123/ . 在哪里? cache 是smarty缓存目录。如何让smarty存储与之相关的缓存 缓存/users/123/

    2. 关于清理这个目录中的缓存有什么建议吗?我认为,如果某些访问者当前正在访问此页面,则仅从该目录中删除文件可能会导致一些错误(例如,当smarty看到找到模板缓存时,可能会发生错误,但由于子模板缓存已被删除,因此找不到子模板缓存)。

    如有任何建议和建议,我们将不胜感激。

    非常感谢。

    3 回复  |  直到 14 年前
        1
  •  0
  •   djn    14 年前

    看看Smarty docs:the“ Cache Groups “部分。确实如此。

        2
  •  1
  •   Vladislav Rastrusny    14 年前

    你应该 不是 手动清除缓存。为此,请使用clear\u cache()和clear\u compiled\u tpl()。您可以清除所有缓存,也可以对它们进行选择性清除。

        3
  •  0
  •   Ronn0    14 年前

    Use可以切换smarty cachedir,这取决于您想要的位置(您可以使用一些自己的if语句来检查)

    // Create smarty object
    $smarty = new Smarty();
    
    // Change smarty-dir is like this:
    if (isset($_GET['userId'])) {
        $smarty->compile_dir = '/path/to/dir/' . $_GET['userId'];
    } else {
        $smarty->compile_dir = '/path/to/dir/default';
    }
    

    第二点有点难,您必须遍历所有映射,并分配新的compile dir,然后运行以下命令:

    $smarty->clear_cache();
    

    但正如您所说,有可能在存在删除时请求该文件-(


    但不建议使用不同的缓存文件夹,Smarty不缓存输出,只缓存编译的PHP文件。