我有一个高流量的网站,我需要确保我的网站足够快,以快速显示我的网页给每个人。PHP网站优化
我搜索在谷歌关于速度和优化许多文章和这里是我的发现:
- 缓存的页面
- 将其保存到磁盘
在内存中缓存的页面:
这是非常快,但如果我需要改变我的网页的内容,我必须从缓存中删除它,并且然后将该文件重新保存在磁盘上。
保存到磁盘
这是很容易维护,但每次访问页面时我必须在磁盘上读取。
我应该使用哪种方法?
我有一个高流量的网站,我需要确保我的网站足够快,以快速显示我的网页给每个人。PHP网站优化
我搜索在谷歌关于速度和优化许多文章和这里是我的发现:
在内存中缓存的页面:
这是非常快,但如果我需要改变我的网页的内容,我必须从缓存中删除它,并且然后将该文件重新保存在磁盘上。
保存到磁盘
这是很容易维护,但每次访问页面时我必须在磁盘上读取。
我应该使用哪种方法?
月& 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: 免费&开源的,高性能的,分布式内存对象缓存系统,通用的性质,但拟用于减少数据库负载,加快动态Web应用程序。 Memcached是内存中的键值存储,用于从数据库调用,API调用或页面呈现结果中为任意数据(字符串,对象)创建小块。
Redis Redis是一个开源的高级键值存储。它通常被称为数据结构服务器,因为密钥可以包含字符串,哈希,列表,集合和有序集合。
两者都是缓存内容或变量的非常好的工具。
下面是一些基准,你可以选择你喜欢哪一个:
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)代理服务器,下一个类似BSD许可证授权。它运行在Unix,Linux,BSD变体,Mac OS X,Solaris和Microsoft Windows上。
g-wan G-WAN是一个Web服务器,其ANSI C脚本和Key-Value存储性能优于所有其他解决方案。
下面是一些基准,你可以选择你喜欢哪一个:
Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN
Web Server Performance Benchmarks
Nginx+Varnish compared to Nginx
我使用nginx + redis,它们超快速+1 – Gabriel
你有一个好主意,这是接近我自己。如果我有一个100%静态的页面,我将保存它的html版本并将其提供给用户,而不是每次都重新生成内容。这在一些情况下可以同时保存mysql查询和多个io操作。每次我进行一些更改时,我的管理界面都会简单地删除html文件并重新创建它。
此方法已被证明在我的服务器上快100倍左右。
这是最好的缓存方法之一,只需重新创建静态html页面的变化。 –
这个过程可以很容易地自动化。 –
我可以添加:
缓存一切你能
最小数量的包括
使用加速器
请调查,是什么让你的网站慢。不要忘记YSlow和类似的东西,他们可以帮助你很多。
此外,如果你有大量计算,你可以写PHP扩展他们,但我不认为这是你的情况
网站性能的一个大问题是“您是否提供静态页面,或者您是否提供动态页面?”。
静态页面
加快静态页面的最佳方法是对其进行缓存您的网站之外。如果你能负担得起,从CDN(Akamai,Cotendo,Level3)提供服务。在这种情况下,流量不会触及您的网站。有几种方法可以控制缓存 - 从固定持续时间到标准的HTTP缓存指令。
即使您无法从CDN提供HTML,将图片,JavaScript和其他静态资产存储在CDN上可以加速您的网站 - 您可以使用像Amazon这样的云服务。
如果您无法承受您的HTML的CDN,那么您可以使用自己的缓存代理层,如Zeus建议的那样。我用清漆取得了很好的效果。理想情况下,您可以在自己的硬件上运行缓存代理 - 但可以在现有服务器上运行它。
动态网页
动态网页更难缓存 - 那么你需要把精力集中在自己的网页尽可能高效。这基本上意味着寻找瓶颈 - 在大多数系统中,瓶颈是数据库(但绝不总是)。
如果您确信自己的瓶颈是数据库,那么缓存选项有多种方法 - 您可以缓存HTML的“片段”,也可以缓存数据库查询。使用加速器有助于此 - 我不会从头开始创建一个。这可能意味着重新设计(部分)您的应用程序。
您必须首先对您的网站进行简介。
而不是疯狂猜测一个人必须确定某些瓶颈,然后解决某个问题。
Cahing不是一颗银子弹,也不是优化的同义词。
有时缓存不适用(例如广告),有时它不会有任何帮助,因为网站缓慢的原因可能在某个不相关的位置。
您的网站可能会耗尽内存。所以,内存缓存会让事情变得更糟。
我不能相信某人有一个高流量的网站,并说nmot一个先前的分析的话。你怎么能知道它的内部结构? CPU负载,内存负载,磁盘I/O等。
你应该添加更多关于你的网站的细节:os,server,cms?...etc – soju
我使用apache + php + mysql + centos - 没有cms或框架 – ana
你有什么类型的托管?共享?专用? –