我们网站高访问量情况下的解决方案,我觉得是可行的,在这里分享下,同时接受批评指导

foxidea 发布于 2012/02/10 14:58
阅读 621
收藏 3

只考虑了程序方面,其实数据库配置成同步的也是可以解决问题的

如果数据库配置成同步的再加上我下面的方案 我想是没什么问题的

我们当前服务器 的页面都是生成静态,每天生成,有些页面每隔几个小时就要生成

改版一次生成一次,很不灵活,很费劲,真是牵一发而动全身

下面说说我的方案:我是写给领导的,他们不是技术人员,但是他们是我领导,我争取让他们接受我的方案,我们的工作也好做一点

++++++++++++++++++分割++++++++++++++++++++++++++

 

 

之前说过用动态页面的

 

【有人认为 会对 SEO  不好,其实是没必要的】

 

比如:文章页面的地址是 http://www.xx.com/abc/abc_123.html 

 

我用动态页面后,页面地址仍然可以 用这样的(伪静态),

 

甚至更友好的地址,地址可以更灵活 如:http://www.xx.com/abc/123/

 

也就是说对seo 没任何影响的

 

 

【因为是动态页面,有人认为这样网页打开速度会慢】

 

(1)首先说下网页会慢的原因:

 

因为是动态网页,数据都存放在数据库,数据库是文件形式的,虽然 微软数据库很强大,能够把常用数据放到内存中

 

但是 仍然要遍历数据,遍历数据就会占用 cpu 和 内存

 

比如:获取软件ID 为 12700 的数据,如果数据是存储在硬盘上的,

 

1、计算机 首先要检索 硬盘上的数据,找到需要的数据之后复制到 一块 内存中

 

2、然后 计算机 从 这块内存中 去找 ID 为 12700 的数据块 一个个的去对比,1==12700  2==12700

 

直到 12700==12700 它才找到了 对应的数据,然后返回,如果有大量的数据,当然会很慢

 

当然,软件可能会智能的把常用数据 缓存到内存中(省去了第一个步骤),但是第二个步骤还是要进行

 

 

(2)再说下静态页面快的原因

 

如果是静态的 HTML 就省去了上面的 两个步骤,因为我们已经提前把用户需要的数据处理好了,iis 直接拿 这些静态页面 返回给用户,所以会快

 

我们目前 存在的麻烦是什么?就是生成需要手工的去生成,或者配置计划任务,全部去生成,又慢又不容易更改,更改一次需要生成一次太麻烦了

 

 

【解决方案上次我已经说过可能表达的不太好 我再重新写下:】

 

方法就是全部用动态页面

 

动态页面在执行的时候,会去判断是否有缓存文件,如果没有, 则获得当前动态页面的 html,把这个html 保存到一个地方(缓存到html 文件中)

 

如果 有缓存文件,就直接交给 iis 返回给 用户

 

* 说明下 不是每次每个用户访问一次就要生成一次缓存,是:只要缓存生成过一次,在一定时期内就不会再去生成缓存

 

 

【问题】

 

1、比如:改版了,或者网页做了小的改动,该如何去更新掉这些缓存文件呢?

 

因为我们的页面都是动态的,这样我们就可以去判断这个缓存文件的信息,缓存文件有修改日期 等信息,

 

我们改版之后可以设定个日期,去判断,如 缓存文件日期 小于 我们定义的日期,那么重新生成缓存文件

 

这样我们根本就不用去关心 生成的问题了

 

 

2、比如:修改了软件页面的信息,或者 有了新的评论, 评论信息需要 查看源代码能看到,让搜索引擎去收录

 

程序仍然可以去判断 文件信息 每天更新一次 缓存 

 

 

 

 

【还有说,有些地方需要实时 的去显示最新的信息,比如新闻】

 

我们的缓存生成的可能是 每天只生成一次,这样当天加的就 不是最新的

 

我们可以借助 ajax 把要实时显示的 填充上去

 

 

 

 

 

我觉得上面方法是可行的,美中不足的地方就是 需要 去判断文件的信息是否生成缓存,

 

也就是需要时不时的去写磁盘(还是有办法解决的)

 

 

 

 

 

 

【最后还有,我们的网站 有热门资源,有冷门资源,可以把热门与冷门分别使用两种方法】

 

热门的资源我们 缓存到内存中(memcached),

 

冷门资源 使用生成静态缓存的方法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

加载中
1
Yisen
Yisen

非技术型领导不看这些的

你要写现在这种架构的缺点,以及你的解决方案的优点。
重点是改用你这种方案所需的时间成本,人力成本,以及新方案能带来的收益,运维成本的降低等等

领导同意之后,你再给你的团队搞技术方案

0
一行
一行
反正不是数据库就i/o请求.
0
weilingfeng98
weilingfeng98
把也面分成很多块,拼接起来,该动一块,更新一块就可以了,具体细节还要思考
景愿
景愿
@kinglynn : 动态include
vema
vema
ssi么?
0
蟋蟀哥哥
蟋蟀哥哥

开始考虑MVC吧,硬件成本算起来比人工成本低的。而且数据量大的话,生成页面确实个问题。

你说的速度问题可以解决

0
JiJacky
JiJacky
写的还不够,充分利用硬件资源没有考虑么
返回顶部
顶部