问题描述
对于一个网站,首页或模块首页一般都会做的相当复杂,如果每一部分的数据都在访问的时候从数据库获取,那么整个页面将会访问数据库七八十次甚至更多。最要命的是,这个页面得数据量也超大。这个时候,针对流量比较大的大型网站来说,如何设计或者说如何实现首页最好?1.生成静态页是个方式,如何做?生成的静态页放在那里?如何生成?2.如果这个页面再次分成各个等级的小模块然后用标签的方式表达,这些标签对应的内容提前放置在另一个地方是否也可以间接解决这个问题,又如何解决?还有没有其他方式,您采用的什么模式,请各位大神说具体点,十分感谢
解决方案
解决方案二:
超重了10块1公斤
解决方案三:
用Cache啊。
解决方案四:
比如说一个页面上有5个地方都需要访问“当前用户所在的工作组的最新消息数量”这个数据,并且假设有100万次访问,那么当然不需要查询数据库1000万次啦,只需要查询数据库一次,以后当然就是从数据缓存中读取。难道你还没有学过数据缓存技术?数据缓存技术中最关键的,不使用内存变量去保存数据,而是知道如何设置cache的缓存依赖属性从而使得当后台数据改变时及时清除缓存数据的技术,这样才能保证不是脏数据。
解决方案五:
除了数据缓存,假设仅仅是为了页面展示(而不是作为后台数据),那么当然也可以使用片断缓存技术,让页面上许多部分(许多用户控件)分片自动缓存。并且片断缓存也可以指定好几个缓存参数,例如根据用户提交参数、共根据内部子控件的改变、根据SQLServer数据库表记录被修改、甚至自定义的“万能”条件表达式。
解决方案六:
该回复于2012-01-29 09:22:49被版主删除
解决方案七:
使用页面输出缓存和片断缓存,是比较简洁的。我建议在你不了解数据缓存时优先使用页面缓存技术。但是有时候往往也需要求助于数据缓存技术。单单就数据缓存来说,它让你无需纠结于必须“重新”设计程序逻辑,你完全可以以搭积木的方式来设计程序数据查询的了逻辑,然后用数据缓存技术来提高性能。对于许多不懂数据缓存技术的人来说,很容易就认为只能重新从头彻底推倒原来的数据查询逻辑才能提高页面数据查询的效率,这个结论显然是比较原始的(只追求一次性把文档写“完美”式的)函数式思维,而无法支持现代的用敏捷和灵活地重构的设计思维。
解决方案八:
不太清楚缓存机制,当时考虑到缓存会占用内存资源,还会有生命周期就直接否定了,而且生命周期并非人动态控制,所以总觉得不大好。有没有相关资料介绍一下缓存机制?是否有其他方式可以实现,比如静态页的方式到底好不好,如何实现?
解决方案九:
该回复于2012-01-29 09:19:33被版主删除
解决方案十:
引用楼主loundar2的回复:
对于一个网站,首页或模块首页一般都会做的相当复杂,如果每一部分的数据都在访问的时候从数据库获取,那么整个页面将会访问数据库七八十次甚至更多。最要命的是,这个页面得数据量也超大。这个时候,针对流量比较大的大型网站来说,如何设计或者说如何实现首页最好?1.生成静态页是个方式,如何做?生成的静态页放在那里?如何生成?2.如果这个页面再次分成各个等级的小模块然后用标签的方式表达,这些标签对应的……
那么整个页面将会访问数据库七八十次甚至更多!可以返回个DATASET临时数据库然后再从里面再查询!这样就只用访问数据库一次了!然后再加缓存
解决方案十一:
该回复于2012-01-29 09:11:24被版主删除
解决方案十二:
可以使用缓存生成html也行
解决方案十三:
可以把关键查询做cache,用不习惯微软的,你用memcache也一样。你指的生命周期是指导缓存的时间限制吧,用sqlserver的话,可以根据数据库变动自动更新缓存。当然用shtml或ajax加静态页也没问题,但你需要一个维持这些静态页的机制,这可能导致你再多开发一个静态页发布服务来发布这些静态页。目前我是采用的静态页的这种方式。