从smarty.class.php文件中的下列代码可以看出来:
/**
* test if resource needs compiling
*
* @param string $resource_name
* @param string $compile_path
* @return boolean
*/
function _is_compiled($resource_name, $compile_path)
{
if (!$this->force_compile && file_exists($compile_path)) {
if (!$this->compile_check) {
// no need to check compiled file
return true;
} else {
// get file source and timestamp
$_params = array('resource_name' => $resource_name, 'get_source'=>false);
if (!$this->_fetch_resource_info($_params)) {
return false;
}
if ($_params['resource_timestamp'] <= filemtime($compile_path)) {
// template not expired, no recompile
return true;
} else {
// compile template
return false;
}
}
} else {
// compiled template does not exist, or forced compile
return false;
}
}
首先会看,是否设置了force_compile,如果为true,那么每次都要进行重新编译。
然后看是否要compile_check,如果为false,那么永远不会进行编译。
如果为true,那么进行检查,检查什么呢?检查文件的修改时间,
如果编译结果的时间>=原模板文件的修改时间,那么不进行重新编译,否则进行编译。
关键在于这个“等号”,我们应该将这个“=”去掉呢?还是他真的有必要?
有事,待续...
分享到:
相关推荐
本资源包包含了"Smarty PHP Template Programming and Applications"这本书的随书源代码,这将帮助读者深入理解和实践Smarty模板引擎的使用。 Smarty的核心概念是模板、配置文件和编译后的PHP代码。模板是HTML文件...
2. **编译型模板**:Smarty在运行时会将模板编译成PHP代码,生成的文件混合了HTML和PHP,使得执行更加高效。只有当源模板文件有改动时,才会重新编译。 3. **缓存机制**:Smarty支持缓存技术,可以将最终的HTML页面...
2. **预处理和编译**:Smarty会先将模板文件编译成PHP代码,然后执行这个编译后的代码,以提高性能。模板的编译结果会被缓存,下次请求时可直接使用,避免了重复编译。 3. **安全机制**:为了防止模板注入,Smarty...
2. 模板编译:Smarty会先将模板编译成PHP代码,再执行,提高执行效率。 3. 自动缓存:开启缓存后,Smarty会在首次渲染后保存结果,下次请求时直接读取缓存,减少服务器负载。 4. 版本控制:通过在模板URL中加入...
Smarty的最新版本可能会随着时间的推移而更新,文中提到了Smarty 2.6.x系列的几个版本,例如2.6.18、2.6.17和2.6.16等。要获取最新的Smarty版本,开发者应访问其官方网站或通过GitHub等开源平台进行下载。安装过程...
6. **配置文件**:配置文件用于设置Smarty的全局属性,如模板目录、编译目录等。配置可以通过`config_load`函数加载,并在模板中使用`{config_load}`访问配置变量。 7. **控制台调试**:Smarty提供了一套调试工具,...
6. **模板编译**:Smarty会将模板文件编译成PHP代码,然后执行这些编译后的代码,提高了模板处理的效率。 7. **配置选项**:Smarty有许多可配置的选项,比如模板目录、编译目录、缓存目录等,可以根据项目需求进行...
6. **编译与安全**:Smarty首先会将模板文件编译为PHP代码,然后执行生成的PHP文件。这样既提高了性能,也提供了额外的安全层,因为模板中的PHP代码不会直接被执行。同时,Smarty还提供了一些安全设置,如`secure_...
2. **配置系统**:Smarty 3.0提供了一个强大的配置系统,允许开发者定义模板目录、编译目录、缓存目录等。这使得项目配置更加灵活,可以根据不同环境进行定制。 3. **模板继承**:通过使用`{extends}`指令,模板...
8. **预编译和编译优化**:Smarty会预先编译模板文件为PHP代码,然后执行这些代码,提高了运行效率。 9. **模板调试**:提供详细的错误报告和调试模式,帮助开发者找出模板中的问题。 在解压"smarty-3.1.30"文件后...
- Smarty特点:Smarty使用了独特的变量语法,如`{$variable}`,并支持缓存、预编译、模板继承等特性,有效提高了开发效率和性能。 2. **Smarty-3.1.19的特性** - 更新与修复:这个版本可能包含了错误修复、性能...
5. **缓存(Caching)**:Smarty可以缓存编译后的模板,提高页面加载速度。对于不经常变动的内容,缓存机制能大大提高性能。 6. **预处理和后处理(Pre- and Post-Processing)**: Smarty 提供了预处理器和后...
5. **编译与缓存(Compilation & Caching)**:Smarty会将模板编译成PHP代码,提高执行效率。同时,它还支持缓存机制,对于不常变动的数据,可以直接从缓存中读取,减少数据库查询。 6. **安全控制(Security ...
在这个文件中,开发者通常会初始化Smarty类,设置模板目录,编译目录等参数,并加载模板文件,然后渲染并输出到浏览器。通过查看`demo1.php`的代码,我们可以学习如何配置和使用Smarty实例。 `smarty.txt`可能是一...
其次,描述中的“也不需要指定templates_c文件夹,会自动生成”,指的是Smarty现在自动处理编译结果的存储位置。通常,Smarty会将模板文件编译成PHP代码,然后存储在templates_c目录下,以提高后续请求的执行速度。...
4. **fis-smarty插件**:这个插件可能扩展了Smarty的功能,使其能够理解和处理fis的构建规则,比如对Smarty模板进行预处理、编译和优化。 5. **自动化构建**:结合fis,开发者可以设置构建脚本,实现模板文件的自动...
2. Smarty初始化:引入Smarty类库,创建实例,并配置相关参数,如模板目录、编译目录等: ```php require_once 'path/to/Smarty.class.php'; $smarty = new Smarty(); $smarty->template_dir = 'path/to/...
- 显示模板:`$smarty->display('template_file.tpl');` - 清除缓存:`$smarty->clearAllCache();` - 自定义函数:通过`register_function`或`register_block`注册自定义的模板函数或块。 5. **示例代码** ``` ...
Smarty的核心理念是"分离视图(模板)和控制器(逻辑)",这是一种常见的MVC(Model-View-Controller)设计模式的应用。 Smarty-2.6.18.tar.gz 是Smarty的一个特定版本,即2.6.18版的源码压缩包。.tar.gz格式是一种...