我的网站流量很高,我需要确保我的网站足够快,以便快速向所有人显示我的网页。
我在Google上搜索了很多关于速度和优化的文章,这是我发现的:
在内存中缓存页面:
这非常快,但如果我需要更改页面内容,我必须将其从缓存中删除,然后将文件重新保存在磁盘上。
将其保存到磁盘
这很容易维护,但每次访问页面时我都要在磁盘上阅读。
我应该选择哪种方法?
答案 0 :(得分:41)
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或Redis。
<强> Memcached的:强> 免费&amp;开源,高性能,分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态Web应用程序。 Memcached是一个内存中的键值存储,用于存储来自数据库调用,API调用或页面呈现结果的小块任意数据(字符串,对象)。
<强> Redis的强> Redis是一个开源的高级键值存储。它通常被称为数据结构服务器,因为键可以包含字符串,散列,列表,集和排序集。
两者都是缓存内容或变量的非常好的工具。
以下是一些基准测试,您可以选择自己喜欢的基准:
Redis VS Memcached (slightly better bench)
On Redis, Memcached, Speed, Benchmarks and The Toilet
<强>清漆强>: Varnish是一个HTTP加速器,专为内容丰富的动态网站而设计。与其他HTTP加速器(例如Squid,它开始作为客户端缓存)或Apache(主要是源服务器)相比,Varnish从头开始设计为HTTP加速器。
<强> nginx的强> nginx(发音为?engine-x?)是一种轻量级,高性能的Web服务器/反向代理和电子邮件(IMAP / POP3)代理,在类似BSD的许可下获得许可。它可以在Unix,Linux,BSD变体,Mac OS X,Solaris和Microsoft Windows上运行。
<强> G-WAN 强> G-WAN是一个带有ANSI C脚本和键值存储的Web服务器,其性能优于所有其他解决方案。
以下是一些基准测试,您可以选择自己喜欢的基准:
Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN
Web Server Performance Benchmarks
Nginx+Varnish compared to Nginx
答案 1 :(得分:4)
你有一个好主意,这与我自己做的很接近。如果我有一个100%静态的页面,我将保存它的html版本并将其提供给用户,而不是每次都再次生成内容。在某些情况下,这会保存mysql查询和几个io操作。每次我做一些更改,我的管理界面只是删除html文件并重新创建它。
事实证明,这种方法在我的服务器上快了大约100倍。
答案 2 :(得分:3)
网站性能的一个重要问题是“您是否提供静态页面,还是提供动态页面?”。
静态页面
加速静态页面的最佳方法是将它们缓存在您的网站之外。如果你有能力,可以从CDN(Akamai,Cotendo,Level3)为他们服务。在这种情况下,流量永远不会到达您的网站。有几种方法可以控制缓存 - 从固定持续时间到标准HTTP缓存指令。
即使您无法通过CDN提供HTML,在CDN上存储图像,javascript和其他静态资产也可以加速您的网站 - 您可以使用像亚马逊这样的云服务。
如果您无法承担HTML的CDN,您可以使用自己的缓存代理层,正如Zeus所建议的那样。我在Varnish上取得了不错的成绩。理想情况下,您可以在自己的硬件上运行缓存代理 - 但您可以在现有服务器上运行它。
动态网页
动态页面难以缓存 - 因此您需要专注于使页面本身尽可能高效。这基本上意味着寻找瓶颈 - 在大多数系统中,瓶颈是数据库(但绝不是总是如此)。
如果你确信你的瓶颈是数据库,有几种方法可以缓存选项 - 你可以缓存HTML的“片段”,或者你可以缓存数据库查询。使用加速器有助于此 - 我不会从头开发一个。这可能意味着重新构建(部分)应用程序。
答案 3 :(得分:2)
您必须先分析您的网站。
而不是疯狂猜测,必须确定某些瓶颈,然后解决某个问题。
Cahing不是银弹,也不是优化的同义词
有时缓存不适用(例如广告),有时候它没有任何帮助,因为网站缓慢的原因可能在某些不相关的地方。
您的网站可能内存不足。因此,内存缓存会使事情变得更糟。
我无法相信有人拥有高流量网站,并且说了之前的分析。你怎么能不知道它的内部结构呢? CPU负载,内存负载,磁盘I / O等。
答案 4 :(得分:1)
我可以补充一下:
缓存您可以使用的所有内容
最小化包含数量
使用加速器
请调查,是什么让您的网站变慢。不要忘记YSlow和类似的东西,它们可以帮助你很多。
此外,如果你有大量的计算,你可以为他们写php扩展,但我不认为这是你的情况