转载请注明出处

这是一篇翻译自stackOverflow的文章,由于水平有限难免出错,如果您在阅读的时候发现了,请帮我更正。

如何优化PHP网站

问题如下(原文:PHP website Optimization): 我拥有一个高访问量的网站,需要保证每个访问我站点的用户,都能够在最短的时间内显示出他们请求的页面。 我通过Google搜索大量关于网站访问速度和优化方法的文章,并得出如下几个方案:

    1. 对页面缓存
        通过对页面缓存,我可以让访问更加快速。但是如果我变更了页面的内容,我则必须把页面的内容从缓存中删除并重新对文件进行缓存。
    2. 页面静态化(把页面保存在磁盘中)
        通过页面静态化,我可以比较简单的对它进行维护。只是这样的话我必须每次访问它所在的目录来进行维护工作。

那么究竟如何才能够达到我想要的目的呢?

------------------------------------------------------------------------------------------

来自Book Of Zeus的回答:

Book Of Zeus

对于网站的性能来说,当我们需要获取静态或动态的内容时,减少访问数据库或文件系统的请求数,启用缓存(缓存页面或部分内容)是很重要的一个环节。

在运行动态内容的时候,我们可以使用加速PHP处理的软件:

(一)在这我推荐使用Alternative PHP Cache(通过手册了解更多关于APC信息)。

推荐几篇关于APC的好文章给你:

  1. 1.What is the best PHP accelerator to use?

  2. 2.PHP Accelerators : APC vs Zend vs XCache with Zend Framework

  3. 3.Lighttpd – PHP Acceleration Benchmarks

(二)如果是缓存内容或整个页面的话,最好使用MemcachedRedis进行缓存。

  1. 1.memcached 一个高性能的分布式内存对象缓存开源系统。用于降低数据库负载,提升动态web程序的访问速度。memcached是通过把从数据库中返回的结果集、调用API返回的结果集或者呈现的页面。在内存中以键值对的形式进行缓存。

  2. 2.Redis 一款高性能键值对存储数据库开源项目。当值为字符,哈希表,列表,集合或排序集合时,它被视作一种数据结构服务程序。

这两个(Memcached和Redis)项目都是用于缓存内容和变量的绝好工具。

推荐几篇有关Memcached和Redis的相关文章:

  1. 1.Redis vs Memcached

  2. 2.On Redis, Memcached, Speed, Benchmarks and The Toilet

  3. 3.Redis vs Memcached

  4. 4.Redis VS Memcached (slightly better bench)

(三)使用varnish,nginx或G-Wan

  1. 1.Varnish 一款专为有大量动态内容web网站设计的HTTP加速器。与其它HTTP加速器相比,如squid在客户端缓存;Apache则仅仅是服务器软件。Varnish则一开始就被设计成为HTTP加速器。

  2. 2.Nginx 是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。起初是供俄国大型的门户网站及搜索引擎Rambler(俄语:Рамблер)使用。此软件BSD-like协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行

  3. 3.g-wan C编写的Web服务器,比其它采用键值对存储的解决方案更加快速

一些文章:

  1. 1.Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN

  2. 2.Web Server Performance Benchmarks

  3. 3.Nginx+Varnish compared to Nginx

  4. 4.Apache, Varnish, nginx and lighttpd

  5. 5.G-WAN vs Nginx

(to be continued)