我有一个高流量的网站,我需要确保我的网站是足够快显示我的网页给大家迅速。
我在Google上搜索了许多关于速度和优化的文章,下面是我发现的:
在内存中缓存页面:
这是非常快,但如果我需要改变我的网页内容,我必须从缓存中删除它,然后重新保存在磁盘上的文件。
将其保存到磁盘
这很容易维护,但是每次访问页面时,我都必须在磁盘上阅读。
我该用哪种方法?
发布于 2011-11-24 16:15:22
Jan & idm是对的,但以下是如何:
缓存(页面或内容)是性能的关键。无论内容是静态的还是动态的,向数据库或文件系统请求的最小调用都会更好。
如果需要运行动态内容,可以使用PHP加速器:
我的建议是使用Alternative PHP Cache (APC)
以下是一些基准:
What is the best PHP accelerator to use?
PHP Accelerators : APC vs Zend vs XCache with Zend Framework
Lighttpd – PHP Acceleration Benchmarks
缓存内容的,甚至可以使用的页面: 或
Memcached:免费开放源码、高性能、分布式内存对象缓存系统,本质上是通用的,但目的是通过减轻数据库负载来加速动态web应用程序。Memcached是一个内存中的键值存储,用于存储来自数据库调用、API调用或页面呈现结果的小块任意数据(字符串、对象)。
Redis Redis是一个开源的、高级的键值存储.它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集和排序集。
两者都是缓存内容或变量的非常好的工具。
下面是一些基准,您可以选择您喜欢的基准:
Redis vs Memcached
Redis vs Memcached
Redis VS Memcached (slightly better bench)
On Redis, Memcached, Speed, Benchmarks and The Toilet
您还可以安装 、 或
清漆:清漆是为内容密集的动态网站设计的HTTP加速器.与其他HTTP加速器不同,如Squid (最初是客户端缓存),或者Apache (主要是原始服务器),Varnish是作为HTTP加速器从头开始设计的。
nginx nginx(发音为-x?)是一个轻量级的、高性能的Web服务器/反向代理和电子邮件(IMAP/POP3 3)代理,使用类似BSD的许可证进行授权。它运行在Unix、Linux、BSD变体、Mac、Solaris和Microsoft上。
G-WAN G-WAN是一种具有ANSI脚本和键值存储的Web服务器,其性能优于所有其他解决方案。
下面是一些基准,您可以选择您喜欢的基准:
Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN
Web Server Performance Benchmarks
Nginx+Varnish compared to Nginx
Apache, Varnish, nginx and lighttpd
G-WAN vs Nginx
发布于 2011-11-24 14:28:01
你有个好主意,这和我自己做的很接近。如果我有一个100%静态的页面,我将保存它的html版本并将其提供给用户,而不是每次都生成内容。在某些情况下,这节省了mysql查询和几个io操作。每次我做一些更改时,我的管理界面只需删除html文件并重新创建它。
这个方法在我的服务器上被证明是大约快100倍。
发布于 2011-11-24 17:45:29
网站性能的最大问题是“您是为静态页面服务,还是为动态页面服务?”
静态页面
加速静态页面的最好方法是将它们缓存在网站之外。如果你负担得起,可以从CDN (Akamai,Cotendo,Level3)为他们提供服务。在这种情况下,流量永远不会访问您的网站。有几种方法来控制缓存--从固定的持续时间到标准的HTTP缓存指令。
即使不能从CDN中提供HTML,在CDN上存储图像、javascript和其他静态资产也可以加快站点的速度--为此您可以使用像Amazon这样的云服务。
如果您买不起HTML的CDN,您可以使用自己的缓存代理层,就像Zeus书中所建议的那样。我的清漆效果很好。理想情况下,您可以在自己的硬件上运行缓存代理,但可以在现有服务器上运行它。
动态页面
动态页面更难缓存,所以您需要集中精力使页面本身尽可能高效。这基本上意味着寻找瓶颈--在大多数系统中,瓶颈是数据库(但绝不总是如此)。
如果您确信您的瓶颈是数据库,那么有几种缓存选项--您可以缓存HTML的“片段”,也可以缓存数据库查询。使用加速器对此有帮助--我不会白手起家地发明一个。这可能意味着重新设计(部分)应用程序。
https://stackoverflow.com/questions/8258567
复制相似问题