几个月前去腾讯面试,总监的面试题,当时答的不好,这个题看起来简单,要回答好并不容易。
优化主要从几个方面进行:
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异步读取,避免整个页面刷新,比较大的图片也可以用异步刷新
暂时想到这么多