想必很多朋友都是使用虚拟主机空间放置论坛的,空间和CPU占用率都有限。 如果论坛访问量水量很大,比如200人在线(20分钟超时设置),每日贴数5000+,这种情况下,ACCESS数据库会很快增加到100M左右,上传图片文件也会很快到400MB+。 这样以来,空间马上就紧张了。而且由于ACCESS的特点,系统对ACCESS的每个操作都要先锁定整个数据库,操作结束后再解锁。因此,当ACCESS库大小到了100M左右,论坛就会发生LAG,也就是非常卡,打开一个帖子常常要几十秒。 为此,要克服这种LAG,最好的办法当然是换用SQL SERVER类型的企业级产品。SQL SERVER这类产品进行操作的时候,只是锁定单条记录,而不是锁定整个库,且有多任务和多线程能力,所以,效率会提高很多,再也不会有lag。 可是,我们一般小网站,没有这个能力花费巨资搞自己的主机,也租不起SQL SERVER,只能用ACCESS+asp空间,又该怎么办呢? 下面我简单介绍一下我的经验,并附上我的作品。 1. ACCESS库不能超过90M,否则必然会出现LAG;如果不想超过90M,那么必 须定期删除无价值的旧贴;想必很多朋友已经这么做了。 2. 帖子要分数据表保存,建议分为2个数据表,可以提高一部分效率;数据表也不宜过多,否则管理难度加大;旧贴都存放于数据表1,新贴存放于数据表2,定期把数据表2的前面的记录向数据表1转移。这样删除旧贴都是删除数据表1里的帖子,新贴都发在数据表2,形成动态平衡,可以保证数据库稳定和运行效率。 3. 旧贴删完,可以用后台管理,先备份数据库,再压缩备份库,再把压缩过的备份库恢复,就可以达到数据库减肥的目的。 4. 数据库里的旧帖子旧短信删除完压缩完,论坛速度应该就能提起来了。我个人经验ACCESS库在90M以下,论坛速度还可以忍受。 5. 关于上传图片文件,长期无人访问的旧图旧文件,也可以删除了,以节约论坛空间。 下面问题就集中在下面2个方面: 旧短信、旧ID、旧论坛事件在DVBBS6.1.0里都已经提供了删除功能,但是如何删除无人访问的旧贴呢?如何删除长期无人访问的上传文件呢? 1. 如何删除旧贴? 旧贴的定义是什么?个人认为,超过一定时间(我的论坛)无人再次回复的帖子,就是旧帖子。比如我的论坛,某主题超过15天无人再次回复,那么这个主题就算是旧帖子。如果某个帖子一直有人顶,无论它的发布时间多么早,都不算旧贴。 置顶贴和精华贴无论是否有人顶都不能算旧贴。 很遗憾,DVBBS没有提供删除这种旧贴的功能。 2. 如何删除旧上传文件? 超过一定时间,无人再次访问的上传文件(尤其是图片文件),就是旧文件。 很遗憾,DVBBS也没有提供这类文件的删除功能。 最后,嘿嘿,隆重介绍我自己的2个作品: 一个是我修改的DVBBS6.1.0的文件ADMIN_ALLDEL.ASP,我给里面加入了删除旧贴的功能,能够删除上面提到的超期无人再次回复的旧贴。 另一个是我自己的原创作品MYUPFILEDEL.ASP,可以删除超期无人访问的上传文件。 使用方法很简单,解压后直接上传到BBS所在文件夹,覆盖原有的ADMIN_ALLDEL.ASP(你自己可以先备份一个)。然后到后台的批量删除帖子里就可以看到多了一个删除旧贴的功能。 MYUPFILEDEL.ASP可以直接在地址栏里打开,然后按照提示操作即可。这个文件我没有加管理员认证,所以使用时上传即可,使用完最好删除。