+ -
当前位置:首页 → 问答吧 → 对smarty的改造--静态插件篇

对smarty的改造--静态插件篇

时间:2007-08-14

来源:互联网

原帖地址:http://hey-m.phpoo.cn/?p=93

首先使用smarty生成的缓存,也就是静态页面里最前面会有一大串东西,这样就不是纯的静态页面了 现在我把smarty改造了下,使其去掉前面一大堆乱码,但是可能会对缓存失去控制哦

这个是生成缓存并返回缓存名称的smarty插件

    <?php
  • /**
  • * 生成缓存并返回缓存名称的smarty插件
  • *
  • * @copyright edwardhey@2007-2008
  • * @param array $params
  • * @param object $smarty
  • * @return string
  • */
  • function
    smarty_function_getCacheName($params, &$smarty){

  • if(isset($params['file'])){

  • $smarty->caching = true;

  • $smarty->fetch($params['file'],null,null,false,true);

  • $_cache_file = $smarty->_get_auto_filename(
    $smarty->cache_dir, $params['file']);

  • return
    urlencode(basename($_cache_file));

  • }
  • }
然后对smarty核心进行改造
更改Smarty.class.php
查找:
  • function
    fetch($resource_name, $cache_id = null, $compile_id = null, $display = false)

更改成:
  • function
    fetch($resource_name, $cache_id = null, $compile_id = null, $display = false,$fullhtml = false)

查找:
  • smarty_core_write_cache_file($_params, $this)

更改成:
  • smarty_core_write_cache_file($_params, $this,$fullhtml);

查找:
  • function
    smarty_core_write_cache_file($params, &$smarty)

更改成:
  • function
    smarty_core_write_cache_file($params, &$smarty,$fullhtml=false)

查找:
  • $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results'];

更改成:
    if(!$fullhtml){

  • $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results'];

  • }

经测试,在分组清除缓存和有效期失效后自动更新缓存这两个功能失效。。。不过这点无所谓,哈哈~ 为了这点,损失点功能还是值得的~
好 基本上完工了


这样做的目的是让smarty能去解析并缓存外联样式表和外联js文件

[ 本帖最后由 edwardhey 于 2007-8-14 15:50 编辑 ]

作者: edwardhey   发布时间: 2007-08-14

作者: caiyuerui   发布时间: 2007-08-15

不错.希望LZ 加油
多发点好帖

作者: 逆雪寒   发布时间: 2007-08-17

引用:
原帖由 逆雪寒 于 2007-8-17 11:42 发表
不错.希望LZ 加油
多发点好帖
厉害哦 现在都成见习版主了。。。

作者: edwardhey   发布时间: 2007-08-17

:lol 我的成功需要大家的支持
谢谢

作者: 逆雪寒   发布时间: 2007-08-17