奇技淫巧 - 阅读主题
<<  <  1  >  >>

动态网页中慢数据的延迟输出

好(0) 差(0) 阅读(1327) 评论(0)
Wen 给 Wen 发消息 给 Wen 发email
poster face
等级:◆◆◆◆◇◇


做猪窝2时遇到一个问题:首页需要显示“热门帖子”和“新发帖子”,这两项的sql语句都非常复杂,对于几万张帖子的猪窝数据库,查询需要秒的数量级,而两项都放在同一个页面,就更慢了。由于用php做猪窝2时使用了模版类作页面、代码分离并实现换肤功能,所以页面显示前要求所有数据都填充好页面模版,于是首页的显示变得非常慢,代码执行时间要数秒。

想起博客网中打开一个blog时,边上的小栏目起初会显示“数据读取中...”,片刻后才显示出来,使慢速数据不至于拖慢整个页面。遂研究此网页的代码。不过只能研究输出后的静态代码,动态部分虽然猜想是用ASP.NET做,但也看不到程序代码,于是也研究不出结果。次日欲在科大bbs的网页版上发帖求助,却无意看到一不相干的帖子,受到启发,想通了处理方法。

首先,在原模版欲延迟输出处写:

<div id="data">正在读取数据...</div>

在</html>标签后写:

<div id="data_load" style="display:none;"><script language="javascript" src="data.php"></script></div>
<script language="javascript">if (document.getElementById("data") != null) document.all("data").innerHTML = document.all("data_load").innerHTML;</script>

要注意的是,如果上段代码写在了</html>标签之前,则整个页面仍在数据完全读取后才显示,达不到目的。

如果模版是大小嵌套的(或曰子母模版),则可在大模版(母模版)的</html>标签后加一数据域{loaddata},在此动态php网页中用上段代码填充{loaddata}域。

此时可以把原动态页中的慢速查询移到data.php中,而模版中对应的内容则移到新建的模版data.tpl中,或嵌入data.php中,且每句均要改成javascript写文本格式document.write('原句')。

注意过滤原句中的引号。

其它动态网页语言可类推使用。

Share/Save/Bookmark
最后修改:Wen 于 2007-07-16 23:55:15

发表于 2005-02-24 22:24:46
奇技淫巧 - 阅读主题
<<  <  1  >  >>
发表评论
评论将以 过客 的名义发表
你的名字/昵称:
为减少垃圾评论,请准确回答问题:

注意:不超过 65535 字节,不支持HTML,支持NN Code

| | | 注册 | 忘记密码
分类浏览: 足迹 | 美食 | 开心 | 奇技淫巧 | 科学 | 音视 | 琐事 | WENSH事务 | 过客留言 | 前梦想国度 |
English categories: Footprints | Recipes | Fun | Tech | Science | Entertainment | Life | WENSH Affairs | Guests' Msgs |
| 链接 | 服务 | 留言 | 关于 NetNest |
Valid XHTML 1.0 | Valid CSS2 | WAI-A WCAG 1.0
LinkReferral | Multiply the traffic to your website... FREE
W3Csites.com Listed | Travel blogs | Travel | Top Blogs | blogarama.com
Directory of Travel Blogs | Travel Blogs - Blog Top Sites | Web Hosting Directory by Blog Flux | | Blog Ratings
Copyright 2005-2008 WEN'S Horizon [32/0.031]
Powered by NetNest 2.1.0.081019 © 2004-2008 NetNest Group