你会推荐什么适合高流量的Ajax密集型网站?

7 投票
5 回答
1716 浏览
提问于 2025-04-11 17:37

对于像reddit这样的网站,它有很多的点赞和点踩,还有很多评论,每个话题都很热闹,我应该选择什么呢?

是用Lighttpd配合Php,还是用Lighttpd配合CherryPy、Genshi和SQLAlchemy呢?

还有,关于数据库,哪个更适合大规模使用,速度更快呢?是MySQL(4.1还是5呢?)还是PostgreSQL?

5 个回答

3

关于数据库的问题,我觉得PostgreSQL在扩展性和数据完整性方面比MySQL更好。对于一个小网站来说,MySQL可能会更快,但我听说当数据库变大时,它的速度会明显变慢。(注意:我从来没有用MySQL处理过大数据库,所以你可能需要再听听别人的意见,看看它的扩展性如何。)不过,PostgreSQL的扩展性确实很好,适合高流量的网站。

8

理想的设置大概是这样的:这个

caching

简单来说,nginx 是一个快速且轻量的网页服务器/前端代理,它有一个特别的模块,可以直接从memcached的内存中获取数据,而不需要访问硬盘或任何动态网页应用。当然,如果请求的URL还没有被缓存(或者已经过期),请求就会像往常一样发送到网页应用。聪明的地方在于,当网页应用生成了响应后,它会把这个响应的副本存到memcached中,以便下次可以直接使用。

这些方法不仅适用于网页,也适用于AJAX的查询和响应。

在文章中提到的“后端”服务器是http,特别提到了mongrel。如果后端使用FastCGI或其他(更快的?)框架,那就更好了;不过这并不是特别关键,因为nginx和memcached的组合已经承担了大部分的负载。

需要注意的是,如果你的AJAX流量的URL设计得很好(我认为REST是最好的),你可以把大部分数据库直接放在memcached中,任何POST请求(这些请求会传递给应用)都可以提前更新缓存。

8

我对MySQL和PostgreSQL的问题不太了解,因为我对Postgres的经验有限。不过,我的硕士研究项目是关于使用CherryPy构建高性能网站的,我相信如果你选择CherryPy来做你的网站,绝对不会失望。它可以轻松支持成千上万的用户同时访问,且不需要特别昂贵的硬件。

当然,PHP也可以做到这一点,我不知道有没有合理的测试来比较PHP和CherryPy的性能。不过,如果你在想CherryPy能否处理高流量的网站,每秒有很多请求,答案肯定是可以的。

撰写回答