?> 这就是 Smarty 引擎编译生成的结果。 为了启用缓存,可以在 TestSmarty.php 文件中加入这么一行(当然必须在 display 方法 之前) : $Smarty->caching = 1; 重新访问该页面,然后检查存放缓存文件的子目录(默认是./cache) ,可以找到一个名 叫%%65^650^65099D8B%%TestSmarty.tpl 的文件,内容如下: 136 a:4:{s:8:"template";a:1:{s:14:"TestSmarty.tpl";b:1;}s:9:"timestamp";i:1186888266;s:7:"expires
";i: 1186891866;s:13:"cache_serials";a:0:{}}This is a string from Smarty: Hello, world 这就是生成的缓存文件,在静态的 HTML 文件之前,包含了已经序列化的 PHP 信息。 虽然这些信息无法被直接阅读,但是多少还是能够猜测出来:模板的子目录,模板文件名, 时间戳, 生存期(过期时间) 等等。 , 如果读者有兴趣研究它们的详细定义, 可以阅读 Smarty 的源代码。 注意,上述信息中包含了一项:生存期,即当前缓存在多长时间以后过期。Smarty 默 认的生存期是 1 小时,即 3600 秒。可以通过修改 Smarty 属性来设置生命期,代码如下:
$Smarty->cache_lifetime = 1800; 时间单位是秒,设置为 1800 表示当前缓存半小时后过期。 Smarty 还支持为同一个模板创建多个缓存实例,这在实际应用中是非常常见的。举例 来说, 假设某个博客
系统中, 显示 article 的页面为 Article.php, 对应的模板文件为 Article.tpl。 但是,article 页面的内容根据不同的 article ID 而不同,因此,必须为同一个页面创建不同的 缓存实例。Smarty 可以轻松做到这一点: $Smarty->display("Article.tpl", $ArticleId); 只要将一个唯一标识符(在这个例子中是 article 的 ID)作为第二个参数传给 display 方法,Smarty 就会自动完成一切。 Smarty 出现的时间虽然较老牌的 PHPLib Template 和 FastTemplate 为晚,但是发展非 常迅速,而且已经成为 PHP 的官方子项目,拥有二级域名 smarty.php.net/。正如它的 官方站点上所说,与其说 Smarty 是一个模板引擎,不如说它是一个表现层的 Framework。 这句话极为重要。 作者个人认为,Smarty 诞生和逐渐取得主流地位的意义,不仅仅是提供了一个优秀的 模板引擎,而是表示 PHP 在解决更大规模的应用上迈出了坚实的一步。如果说
Java 是一开 始就将解决大规模应用作为自己的设计目标的话,那么 PHP 就是在开源社区的推动下,在 不断的改进中逐渐接近这一目标。当一个 PHP 应用采用了 Smarty 这样优秀和成熟的表现层 解决方案,以及其他一些类似的技术(例如好的 ORM 解决
方案)以后,它能够解决的问题 的规模就比过去大得多了。通过这些现象,我们可以看到,PHP,或者说 LAMP,正在以稳 健而持续的步伐,向企业级应用迈进。