在Pylons 1.0中禁用(mako)模板缓存

1 投票
2 回答
1164 浏览
提问于 2025-04-16 00:16

我最近开始参与一个使用Pylons的项目。虽然我对Python和Pylons都不太熟悉,但我发现上手还算顺利。

在Pylon项目中,默认情况下,模板会无限期地缓存,而我找不到清除这些缓存模板的方法(这些模板默认存储在/data/templates中),除了手动删除它们并重启服务器。

更好的是,能不能关闭模板缓存呢?

关于模板缓存的页面,http://wiki.pylonshq.com/display/pylonsdocs/Caching+in+Templates+and+Controllers,似乎没有什么帮助,还有一个简短的提及,说可以通过在.ini文件中设置来全局禁用缓存:

cache_enabled = false

但这似乎不起作用。

这应该相对简单吧,对吧?

2 个回答

1

false 这个词应该写成大写的 False。如果你这样改了还是不行,可以在那个页面上留言,指出文档里的错误或者bug,这样做是合适的。可能是因为mako的模板缓存没有使用beaker,这样的话文档就不够清晰了。

根据 Mako的文档,你还可以通过缓存对象的 invalidate 方法来使缓存失效,或者在模板中用 <%page cached=False%> 来禁用缓存。

2

问题其实是别的原因。

Pylons会一直缓存模板,但它会通过比较模板的最后修改时间和缓存版本的时间,自动更新这个缓存。问题出在服务器的时钟没有和真实时间同步上。

服务器的时钟快了几分钟,而我电脑上的时钟是同步的,所以从我电脑上传的文件会把模板的时间往回拉几分钟;Pylons就会把这个模板看作比缓存的版本旧,因此不更新缓存。

撰写回答