腾讯面试题-一个论坛帖子浏览时有点慢,如何优化

几个月前去腾讯面试,总监的面试题,当时答的不好,这个题看起来简单,要回答好并不容易。

优化主要从几个方面进行:

1。数据库优化

1)索引

一般论坛都会将最近回复最多的帖子做为热帖放在首页,需要对帖子的发帖时间和回复数建索引

浏览帖子的内容和回复时,一般都是按时间排列,因此需要对回复指向帖子的外键和回复时间建索引

2)数据库设计反模式

一般帖子都和发贴人同时出现,回复和回复人也会同时出些,因此可以利用数据库设计的反模式,

将帖子和回复显示时需要用到的用户信息存在帖子和回复表中

2。web服务器缓存

将热帖和热帖的排在前面的回复进行缓存,以免每次访问都去数据库取数据

3。浏览器缓存

利用http协议设置cache,将论坛常用图片,css,js进行缓存

4。web服务器静态缓存

对于每个帖子的内容和前面的回复,可以在服务器端生产静态页面

5。合并文件

将多个图片,css,js合并成大文件,减少http请求次数

6。key value数据库

帖子和回复是天然的key-value关系

7。用户头像的优化

将用户头像文件命名为用户id的hash值,头像url也能够用用户id生成,这样只要将用户id保存在帖子和回复中,用户头像也就确定了,然后在浏览器端对用户头像进行缓存

8。使用Ajax异步加载内容

读取帖子回帖时可以使用ajax异步读取,避免整个页面刷新,比较大的图片也可以用异步刷新

暂时想到这么多

猜你喜欢

转载自supermarshal.iteye.com/blog/1669788