首页 | 摘要显示 | 上一页 1 2 3 4 5 6 7 8 9 下一页

Weblog Archives

September 12, 2006

请为RSS格式化一下你的网页

    向一些WordPress的Blog用户(eagle_fan, oraus.net等)建议格式化一下你们的内容后再贴上去, 这样的话在rss中就不会显示成一片了, 需要知道在HTML中回车一般是不会显示出来的, 需要用"<br />"来代替, 否则别人在rss订阅中就不能看了.

    下面是我用的一个格式化角本用的UltraEdit宏的定义, 可以用一用:

InsertMode
ColumnModeOff
HexOff
UnixReOn
TabsToSpaces
Find "&"
Replace All "&amp;"
Find ">"
Replace All "&gt;"
Find "<"
Replace All "&lt;"
Find "  "
Replace All "&nbsp; "
Find "^p"
Replace All "<br />^p"

    随便提点建议, 请不要责怪.

Lilina在显示RSS时的一个小问题, 修复了.

    在我的RSS页面上发现不能正确地显示一些基于WordPress的Blog的贴子, 以为是人家的问题, 还发了一个贴子来说他们, 看来是怪错他们了, 原来是Lilina在取贴子内容时没有取格式化(是订阅器提供的功能)后的内容, 而是取了原来的内容.

    如何改正呢, 只需要改index.php的一处地方, 原来的代码为:

$summary = $item['summary'];   
if (!$summary) $summary = $item['atom_content'];       

    需要改为:

$summary = $item['atom_content'];     
if (!$summary) $summary = $item['summary'];   

    怪不得Fenngcnoug.net没有用Lilina来做平台, 而选择了Planet. 除了速度以外, Lilina在这些显示上的错误也是一个问题吧.

    我的IamDBA.com变成了一个DBA的Blog的聚合了, 还是基于Lilina的, 一小时更新一次, 可惜放在DreamHost上访问速度有些慢.

September 13, 2006

控制Lilina中缓存文件是否过时的机制

    这个问题的关键是在PHP取得文件的最后修改时间, 其实很简单:

function mtime($filename)
{
        $fd = fopen($filename, "r");
        $fstat = fstat($fd);
        fclose($fd);
        return $fstat['mtime'];
}

    取得当前时间, 返回自从Unix纪元(格林威治时间1970年1月1日 00:00:00)到当前时间的秒数:

  $curtime = time();
  echo "Current Date:".date('Y-m-d', $curtime)."\n";

    两个时间相减得到的结果是秒数. 可以用如下方法确定缓存文件是否过时:

if ( (time() - mtime($filename)) > $CACHE_FILE_TIMEOUT) then
{
  ...
}

    以上是我在改动Lilina的缓存机制时学到的.

September 17, 2006

通过Cache提升MT基于Tag搜索的速度.

    MT-3.3x版本提供了方便的Tag功能, 也提供了按照Tag来进行搜索的功能. 不过MT的搜索功能在资源很紧张的DreamHost上使用时, 速度比较慢, 打开一个Tag的搜索需要4秒钟以上, 实在是一件不让人高兴的事情. 于是我想着如果以将Tag的搜索结果缓存起来, 访问起来就会比较快了, 这个想法是很合理的, 因为一个主页上的Tag数量不会很多, 按Tag搜索的结果变化不大, 除非是你一天内发布了大量的文章.

    通过研究Search.pm的代码, 我改写了一份新的Search代码, 取名为"NewSearch". 新的代码会将按Tag搜索的结果缓存起来, 缓存的有效期限为1天, 对于普通的直接搜索则不进行缓存. 这样改进后, 理论上每个Tag搜索一天只有一次会比较慢一点, 其他所有的占击都会从缓存中获得结果. 你可以试试本站上基于Tag的搜索速度.

    如果你想用这个功能, 只需要下载新的Search代码, 将解压后的文件放到MT_HOME/lib/MT/App目录下, 在MT_HOME下面建一个searchcache的目录, 并修改MT_HOME下的mt-search.cgi文件, 将下面一行代码:

use MT::Bootstrap App => 'MT::App::Search';

    变为:

use MT::Bootstrap App => 'MT::App::NewSearch';

    想试试就马上行动吧!

September 18, 2006

禁用Blog的直接搜索功能, 请按Tags进行查找.

    在成功地对Tag的搜索结果进行缓存加速后, 我今日又将默认的缓存1天有效改为2天有效了, 因为我发现自已两天更新一次是很正常的事情. 并且禁用了我网站上的直接搜索功能, 其实对直接搜索进行缓存也没有问题, 主要问题是直接搜索用的关键字太多了, 可能会造成缓存文件太多; 另外两个不同的人在访问时用相同的关键字去查询的机率应当比较小, 所以不值得去缓存它.

    可以根据你自已的需要去设置缓存更新时间, 你只要在"NewSearch.pm"找到下面这一行就行了:

if( (time() - ((stat $cachefile)[9])) < (3600 * 48))

    这儿的红字48表示四十八个小时, 你可以改成你自已需要的值. 如果你改了搜索的模板, 则可以到MT_HOME/searchcache目录下, 删除所有"tags*.txt"文件来马上起用新的搜索模板.

    其实很容易看出我改了那些地方, 欢迎其他人继续进行优化.

上一页 1 2 3 4 5 6 7 8 9 下一页

当前分类: Weblog

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql