用XML结合数据库,给服务器减负

作者:殷亮 时间:2007-10-31 09:40:00 

到了今天,数据库已经成了网站的灵魂,可以说,没有对数据进行集中管理就算不上是一个真正的网站。而ASP加数据库,更成了主流中的主流,网站里的用户登录,论坛,留言本都成了它们用武之地,从前用51个文件才能做成的事,现在用2个文件就可以了,但ASP加数据库,却并非完美,尤其是与服务器进行频繁的交互方面。

比如按ASP+数据库的方案,我们完全可以将那位敬业的站长的工作简化为两个文件:一个
数据库文件,记录小说的所有章节;另一个ASP文件,用来读取数据库的内容;当客户端点击“下一章”的时候便可以浏览下一章内容……的确,这看似很直观方便,但不可乎视的是,每当我们浏览下一章的时候,我们的浏览器都会自动自觉地去访问一次数据库,因此,当有访问者耐心地将这本小说读完的时候,我们的数据库已经与它亲密接触了49次了。

那如果同时有N个49次呢?谁还能保证自己的服务器仍然能从容地应付所有请求?特别是一
些提供了搜索数据,将数据分页显示的网站,服务器不堪重负的现象更应该重视,因为查询
结果有N页,就表示访问者遍览所有结果需要连接服务器打N次。

如果现在你说“N次就N次吧,咱无所谓”,那么你应该马上用鼠标点击浏览器的“后退”因为我下面将谈到一些垃圾内容。当然,如果你也想让你的数据库程序变成“N页记录,一次交互”的话,欢迎继续看下去,我们将一起探讨XML与数据库的整合运用。

其实XML并不像许多人想的那样空有名声,而无实际用途。我不知道你是不是也这么想,但在网上很难见到一些真正应用了XML的网站,这是事实。现在,我列出几条独有XML才能实现的案例,希望能够以此证明XML的实用与强大:

1. 1个XML文件 + 1个普通HTML文件 = 49章小说分章显示

适用于那些不支持ASP的普通主页空间,这种情况下XML完全代替了数据库,很经典地实现了数据与排版的分离。XML与HTML完全分工。

2. 1个XML文件 + 1到N个ASP文件 = 留言本/论坛

适用于那些禁用了文件组件FileSystemObject与数据库组件的ASP主页空间,不用文件存取与数据库,用XML照样可以做留言本与论坛,并实现数据库的所有功能。
(我在本论坛发表的“第三种途径-----基于XML的ASP留言板”中,详细地阐述了这一技术,有兴趣的话可以在论坛中搜索此文。)

3. 1个数据库 + 1个嵌入了XML的ASP文件 = “N页记录,一次交互”

可以说,这几种技术都体现了XML的精髓。特别是第2种技术,XML充分证明了自身的优势——
既有数据库的强大又具备文本文件的轻巧(一个.mdb文件上百K,而一个.xml文件才几k,而且数据库文件修改要借助专门软件或相对应的ASP程序,但xml文件,记事本足矣。)更让人兴奋的是,XML完全可以抛开文件存取组件与数据库组件实现数据的写入读取,甚至新建文件。而我们将要谈到的“N页记录,一次交互”则更是XML对数据库的全面超越。

先看下面这个XML文件:


<?xml version="1.0" encoding="gb2312"?>
<在线播放>
<歌曲>
<歌名>Hello Goodbye</歌名>
<URL>ftp://61.139.37.148/music/songs01/english/beatles/hellogoodbye.mp3</URL>
<演唱者>The Beatles</演唱者>
<歌词>You say yes, I say no</歌词>
</歌曲>
<歌曲>
<歌名>Yesterday</歌名>
<URL>http://www.mayia.com/beatlescom/beatles/mp3/mp3/yesterday.mp3</URL>
<演唱者>The Beatles</演唱者>
<歌词>Yesterday, all my troubles seemed so far away</歌词>
</歌曲>
</在线播放>

试试看,用记事本编辑一下这个文件,并保存文件名为songList.xml,然后用IE浏览器打开
这个文件,如果没有语法错误,即可在浏览器中显示XML所独有的树状页面。

标签:xml,数据库,asp,服务器
0
投稿

猜你喜欢

  • Django如何批量创建Model

    2022-12-29 15:40:39
  • pytorch中tensor的合并与截取方法

    2022-02-11 14:16:58
  • 在Python的web框架中中编写日志列表的教程

    2021-11-06 05:15:29
  • django中url映射规则和服务端响应顺序的实现

    2023-04-21 09:58:27
  • Python tkinter库图形绘制例子分享

    2023-05-29 13:19:51
  • Centos环境部署django项目的全过程(永久复用)

    2021-06-17 00:37:28
  • Python使用logging模块实现打印log到指定文件的方法

    2023-12-14 03:59:29
  • Python通过websocket与js客户端通信示例分析

    2021-03-23 08:35:49
  • 浅谈Python中eval的强大与危害

    2022-05-03 08:15:13
  • MySQL如何查询当前正在运行的SQL语句

    2009-02-13 13:40:00
  • Swift 3.0在集合类数据结构上的一些新变化总结

    2023-10-19 02:35:47
  • MySQL重置root密码提示"Unknown column ‘password"的解决方法

    2024-01-14 19:57:54
  • Tensorflow的DataSet的使用详解

    2021-03-19 18:18:04
  • php预定义常量

    2023-11-14 10:35:27
  • python检测文件夹变化,并拷贝有更新的文件到对应目录的方法

    2023-11-07 12:56:06
  • python发qq消息轰炸虐狗好友思路详解(完整代码)

    2023-08-06 15:13:19
  • pytorch 使用单个GPU与多个GPU进行训练与测试的方法

    2022-04-04 10:39:07
  • Python实例方法、类方法、静态方法的区别与作用详解

    2022-08-27 08:45:41
  • vue-admin-element项目突然就起不来了的解决

    2023-07-02 16:37:58
  • 10个ASP网页制作技巧

    2007-09-24 13:12:00
  • asp之家 网络编程 m.aspxhome.com