首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP网站优化

PHP网站优化
EN

Stack Overflow用户
提问于 2011-11-24 14:24:32
回答 5查看 4.5K关注 0票数 26

我有一个高流量的网站,我需要确保我的网站是足够快显示我的网页给大家迅速。

我在Google上搜索了许多关于速度和优化的文章,下面是我发现的:

  • 缓存页面
  • 将其保存到磁盘

在内存中缓存页面:

这是非常快,但如果我需要改变我的网页内容,我必须从缓存中删除它,然后重新保存在磁盘上的文件。

将其保存到磁盘

这很容易维护,但是每次访问页面时,我都必须在磁盘上阅读。

我该用哪种方法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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

票数 41
EN

Stack Overflow用户

发布于 2011-11-24 14:28:01

你有个好主意,这和我自己做的很接近。如果我有一个100%静态的页面,我将保存它的html版本并将其提供给用户,而不是每次都生成内容。在某些情况下,这节省了mysql查询和几个io操作。每次我做一些更改时,我的管理界面只需删除html文件并重新创建它。

这个方法在我的服务器上被证明是大约快100倍。

票数 4
EN

Stack Overflow用户

发布于 2011-11-24 17:45:29

网站性能的最大问题是“您是为静态页面服务,还是为动态页面服务?”

静态页面

加速静态页面的最好方法是将它们缓存在网站之外。如果你负担得起,可以从CDN (Akamai,Cotendo,Level3)为他们提供服务。在这种情况下,流量永远不会访问您的网站。有几种方法来控制缓存--从固定的持续时间到标准的HTTP缓存指令。

即使不能从CDN中提供HTML,在CDN上存储图像、javascript和其他静态资产也可以加快站点的速度--为此您可以使用像Amazon这样的云服务。

如果您买不起HTML的CDN,您可以使用自己的缓存代理层,就像Zeus书中所建议的那样。我的清漆效果很好。理想情况下,您可以在自己的硬件上运行缓存代理,但可以在现有服务器上运行它。

动态页面

动态页面更难缓存,所以您需要集中精力使页面本身尽可能高效。这基本上意味着寻找瓶颈--在大多数系统中,瓶颈是数据库(但绝不总是如此)。

如果您确信您的瓶颈是数据库,那么有几种缓存选项--您可以缓存HTML的“片段”,也可以缓存数据库查询。使用加速器对此有帮助--我不会白手起家地发明一个。这可能意味着重新设计(部分)应用程序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8258567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档