我的静态化解决办法 [技术论坛 - 效率优化] imag1

正在浏览:   2 名游客




« 1 (2)


回复: 我的静态化解决办法
初级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 33 | 精华: 3
等级: 4; EXP: 50
HP: 0 / 87
MP: 11 / 102
离线
看来人与人之间需要理解和信任,这个论坛的贴不能编辑,所以补发这个回复:
对不起!可能是我没说清楚,更清楚的该是:

>> 这个方法其实是透明的,唯一能知道它请求的是实际的静态页的,只有页面的 URL 地址(有“/htmlshow.php?”前缀)。

2/15 10:49
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
初级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 33 | 精华: 3
等级: 4; EXP: 50
HP: 0 / 87
MP: 11 / 102
离线
引文:

胡争辉 写道:
我就是没看懂究竟实现了什么功能,能举个例子么?


通过“/htmlshow.php?/modules/article/view.article.php?id=4”之类的地址访问的网页其实载入的是一个静态页的内容,系统不需要再查询数据库和调用 Smarty 模板引擎。访问这个地址跟访问一个静态页的开销是差不多的(额外的开销极小——甚至可以忽略)

2/15 10:54
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
网站管理员
注册日期:
2004/6/25 19:16
所属群组:
网站管理员
注册会员
Dev+Hack
帖子: 5534 | 精华: 11
等级: 53; EXP: 44
HP: 1311 / 1311
MP: 1844 / 10226
离线
引文:

Tubz 写道:
这个论坛的贴不能编辑。


可以编辑的,但是有编辑时限
后台可以设置

2/15 11:02
_________________
XOOPS Project -- |自由|开源|共享|
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
初级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 33 | 精华: 3
等级: 4; EXP: 50
HP: 0 / 87
MP: 11 / 102
离线
文件中有几个地方的注释不是很准确,是后来修改代码时忘了更新
但代码实际可正常使用。请看代码的同志们注意一哈哈

另外 htmlupdate.php 第55行中“(http:\/\/[0-9\w\.:~-]+)”里的数字范围其实是可以删掉的(\w已经包括了),是我在一个含端口号的URL上使用时因为此处忘了冒号而失败后,添加冒号时没细想就把数字也加了进去,,,呵呵。当然不影响使用,但毕竟是多出了些废码 :(

2/15 11:21
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
高级会员
注册日期:
2004/11/15 20:01
来自 泉州
所属群组:
注册会员
帖子: 72
等级: 7; EXP: 40
HP: 0 / 160
MP: 24 / 1066
离线

2/15 13:23
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 477
等级: 20; EXP: 21
HP: 192 / 480
MP: 159 / 937
离线
引文:

Tubz 写道:
通过“/htmlshow.php?/modules/article/view.article.php?id=4”之类的地址访问的网页其实载入的是一个静态页的内容,系统不需要再查询数据库和调用 Smarty 模板引擎。访问这个地址跟访问一个静态页的开销是差不多的(额外的开销极小——甚至可以忽略)

我的观点是这样的,如果一个网站的访问量大到了需要用这个方法来解决的话,那么就不如架个前端的cache服务器了。

2/16 15:13
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2005/12/1 9:15
来自 GZ.CN
所属群组:
注册会员
Dev+Hack
帖子: 261 | 精华: 2
等级: 15; EXP: 11
HP: 70 / 352
MP: 87 / 1273
离线
引文:

Tubz 写道:
引文:

胡争辉 写道:
我就是没看懂究竟实现了什么功能,能举个例子么?


通过“/htmlshow.php?/modules/article/view.article.php?id=4”之类的地址访问的网页其实载入的是一个静态页的内容,系统不需要再查询数据库和调用 Smarty 模板引擎。访问这个地址跟访问一个静态页的开销是差不多的(额外的开销极小——甚至可以忽略)


这样的静态化还不彻底。假如你的htmlshow.php里面是包含了mainfile.php和common.php的话,那资源开销还是不小的!

2/16 21:27
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
初级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 33 | 精华: 3
等级: 4; EXP: 50
HP: 0 / 87
MP: 11 / 102
离线
引文:

scottlai 写道:
这样的静态化还不彻底。假如你的htmlshow.php里面是包含了mainfile.php和common.php的话,那资源开销还是不小的!


htmlshow.php 的代码很少,不包括 mainfile.php 和 common.php。
所包含的 html_common.php 里也只有3个小函数

htmlshow.php:
<?php
include "html_common.php";

$_inUrl $_SERVER['QUERY_STRING'];

if(isset(
$_inUrl) && strlen($_inUrl) < 256){  // 设定了一个长度限制
    
$_fpath html_get_name($_inUrl);
    if(isset(
$_fpath) && file_exists($_fpath)){
        include 
$_fpath;
        exit(
0);
    }else{
        
header('Location: ' _HTML_HOST $_inUrl);
    }
}
?>


html_common.php:
<?php

// 静态页目录,注意斜线后缀
define('_HTML_DIR''tmp_html/');
define('_HTML_SCRIPT''htmlshow.php');


// 系统常量:完整主机头,文档根路径
define('_HTML_HOST''http://'.$_SERVER['HTTP_HOST']);
define('_HTML_DOCROOT'$_SERVER['DOCUMENT_ROOT']);



// 根据请求串生成有效的文件名(备:a-zA-Z0-9_.~%-)
function html_make_fname($_str)
{
    if(isset(
$_str)) return preg_replace('/[/\\:*?"<>|]/'''$_str);
}


// 提取文件绝对路径、文件名、扩展名&请求串(对应数组[0][1][2])
// 如:"/path/file.php?id=3&xx" => "/path/", "file", "php?id=3&xx"
function html_pick_names($_url)
{
    
preg_match('/^(/([w~+%/.-]+/)?)([w~+%.-]+).(phpb[?/]?.*)$/i'$_url$_buf);
    
//!< 注意,后续的请求参数中不能带有独立的“.php”单词
    
if(! count($_buf)){
        return;
    }else{
           return array(
$_buf[1], $_buf[3], $_buf[4]);
    }
}


// 对传入的请求字符串,构造全路径的静态文件名
// $_url 应该是一个以‘/’开头的绝对路径
function html_get_name($_url)
{
    
// $_names: [0] => /path/, [1] => file, [2] => php?xx (or php/xx)
    
$_names html_pick_names($_url);
    if(! isset(
$_names)){
        return;
    }else{
        return (
_HTML_DOCROOT $_names[0] . _HTML_DIR $_names[1] . '/' html_make_fname($_names[2]) . '.html');
    }
}
?>


详细说明请看源文件

2/21 13:28
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
初级会员
注册日期:
2006/10/2 22:08
所属群组:
注册会员
帖子: 33 | 精华: 3
等级: 4; EXP: 50
HP: 0 / 87
MP: 11 / 102
离线
上面 html_common.php 中的模式代码串被自动修改了——被删除了一个反斜线。不知是不是论坛程序的bug?

查看实际代码请下载源文件查看。

2/21 13:40
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部


回复: 我的静态化解决办法
Support Team
注册日期:
2006/6/26 10:17
来自 北京
所属群组:
注册会员
Dev+Hack
帖子: 477
等级: 20; EXP: 21
HP: 192 / 480
MP: 159 / 937
离线
引文:

Tubz 写道:
上面 html_common.php 中的模式代码串被自动修改了——被删除了一个反斜线。不知是不是论坛程序的bug?

查看实际代码请下载源文件查看。

按照xoops的架构,整页的HTML缓存和依赖于状态的区块不一致,比如说用户菜单区块。

2/22 21:56
工具箱 短消息 Email 书签 打印 WordPress 举报 回顶部





可以查看帖子。
不可发帖。
不可回复。
不可编辑自己的帖子。
不可删除自己的帖子。
不可发起投票调查。
不可在投票调查中投票。
不可上传附件。
不可不经审核直接发帖。
不可使用主题类别。
不可以使用HTML语法。
不可以使用签名档。

[高级搜索]