网站性能优化对于大型网站来说非常重要。网站的打开速度影响着用户的体验。网站访问速度慢会导致跳出率高,对于小型网站来说很容易解决。然而,对于大型网站来说,由于栏目较多,图片和图像都比较大,那么如何优化整体性能呢?本文为您提供大型PHP网站性能和并发访问优化方案。
1、大型网站性能提升策略:
当门户网站等大型网站面临大量用户访问和高并发请求时,基本解决方案集中在以下几个环节:使用高性能服务器、高性能数据库、高效编程语言、高性能性能 Web 容器。这些解决方案在一定程度上意味着更大的投资。
Web 容器是一个服务程序。服务器的某个端口上有一个程序提供相应的服务,这个程序处理来自客户端的请求。比如JAVA中的容器、ASP的IIS或者PWS都是这样的容器。一个服务器可以有多个容器。
1.HTML静态化
其实大家都知道效率最高、消耗最少的就是纯静态的HTML页面,所以我们网站的页面尽量使用静态页面。这个最简单的方法实际上也是最有效的方法。
2、图像服务器分离
众所周知,对于Web服务器来说,无论是IIS、IIS还是其他容器,图片消耗的资源最多,所以我们有必要将图片与页面分离。这是大型网站基本采用的策略。他们都有独立的,甚至很多的图像服务器。这样的架构可以减轻提供页面访问请求的服务器系统的压力,并且可以保证系统不会因为图像问题而崩溃。
在应用服务器和图片服务器上,可以进行不同的配置优化。比如可以支持尽可能少的配置,以保证更高的系统消耗和执行效率。
3.数据库集群、数据库表哈希
大型网站有复杂的应用程序,而这些应用程序必须使用数据库。当面对大量的访问时,数据库的瓶颈很快就会显现出来。这个时候数据库很快就无法满足应用了,所以我们需要使用数据库。簇或库表哈希。
在数据库集群方面,很多数据库都有自己的解决方案,常用的MySQL提供的/Slave就是类似的解决方案。
集群通常使用CDN、GSBL和DNS负载均衡技术。每个区域都有一个前端服务器组。例如:网易、百度采用DNS负载均衡技术,每个频道都有一组前端服务器。一搜采用DNS负载技术。所有通道共享一个前端服务器集群。
库表散列是一种常见且最有效的解决方案。
我们在应用中安装业务和应用或者功能模块来将数据库分开。不同的模块对应不同的数据库或表,然后使用一定的策略对某个页面或功能进行更小的数据库哈希,比如用户表。根据用户ID对表进行哈希,可以以较低的成本提高系统的性能,并且具有良好的扩展性。
搜狐的论坛就采用了这样的结构,将论坛的用户、设置、帖子等信息分离到一个数据库中,然后将帖子和用户按照版块和ID散列到数据库和表格中。最后在配置文件中简单配置即可。这使得系统可以随时添加低成本的数据库来补充系统性能。
4、缓存
任何从事技术工作的人都遇到过缓存这个术语,并且缓存用在很多地方。缓存在网站架构和网站开发中也非常重要。这里我们先说两个最基本的缓存。高级缓存和分布式缓存将在后面介绍。
关于架构方面的缓存,熟悉的人都会知道,它提供了自己的缓存模块,也可以使用额外的Squid模块来进行缓存。这两种方法都可以有效提高访问响应能力。
网站程序开发中的Cache,Linux上提供的Cache是常用的缓存接口,可以在Web开发中使用。比如用Java开发时,可以调用它来缓存一些数据并进行通信。一些大型社区使用这种架构。另外,在使用Web语言开发时,每种语言基本上都有自己的缓存模块和方法。 PHP 有 Pear 的缓存模块,Java 有更多。我对.net不是很熟悉,但我相信它一定在那里。
5.镜子
镜像是大型网站经常使用的一种方法,用于提高性能和数据安全性。镜像技术可以解决不同网络接入提供商和地区造成的用户访问速度的差异。例如,和之间的差异促使许多网站在教育网络上运营。站点内建立镜像站点,数据定期或实时更新。
6.负载均衡
负载均衡将是大型网站解决高负载访问和大量并发请求的高端解决方案。
负载均衡技术已经发展多年,有很多专业的服务商和产品可供选择。我个人遇到过一些解决方案,其中两个可以作为参考。
2.php代码编写优化:
1.echo比打印快得多。
两种方法都会在页面上打印一些内容,但 echo 不返回任何值,而 print 在成功或失败时返回 0 或 1。
2. 比花费更多的时间。
因为它需要检查你想要包含的类是否已经被包含了。
3. 对于长段落字符串,请务必使用单引号而不是双引号。
因为双引号会在字符串中搜索变量。例如: echo 'This is long '.$name 比 echo "This is long $name" 快得多。
4.不要在循环内使用for循环
5.如果函数可以定义为
然后不要将其定义为成员函数。静态函数比成员函数快 33%。
6.如果不用正则表达式也能解决问题
那么就不要使用正则表达式。正则表达式比 PHP 的本机函数慢。
例如使用替换。
7.尽量不要使用相对路径包含文件
在相对路径中搜索文件时,会先在当前目录中搜索,然后按顺序搜索。这使得查找文件非常慢。最好先定义这样一个常量,然后使用这个常量来包含该文件。
8. 全等符号 === 比相等 == 更快
并且 if(1 =='1′) 将返回 true,if(0 ==”) 也会返回 true,当使用全等符号时,if(1 ==='1′) 和 if(0= == ") 将返回 false。因此,当您需要检测程序中的某些布尔变量时,最好使用同余符号。
3、有以下几种方法:
1.关闭调试模式
关闭调试模式后,系统会自动生成项目编译缓存并关闭日志写入,这样可以减少大量的IO加载和日志写入开销。
2.开启页面压缩输出
从3.1版本开始,增加了配置参数来控制页面压缩输出。
3.开启缓存
在网站部署环境中安装APC或缓存可以有效提高网站性能和内存使用率。
它是一个开源缓存/优化器,这意味着它可以提高服务器上 PHP 的性能。它通过将编译后的PHP数据缓冲到共享内存中来避免重复编译过程,并且可以直接使用缓冲区中的编译数据。因此,该代码提高了速度。它通常可以将您的页面生成率提高 2 至 5 倍并减少服务器负载。
PHP Cache(APC)是一个开源的PHP缓存工具,可以缓存PHP中间代码。
4. 字段缓存
默认情况下,字段缓存是自动生成的。开发完成后,对数据库的改动基本上就比较少了。因此,可以考虑将字段缓存合并到对应的模型类中,这样可以减少每次读取字段缓存的IO开销。 。合并的方法是在/Data/下找到对应的字段缓存文件
4. 数据库优化
1.选择合适的存储引擎
以MySQL为例,有两种存储引擎,每种引擎都有优点和缺点。
适合一些需要大量查询的应用。趋势将是一个非常复杂的存储引擎,对于一些小型应用程序来说,它会比 .但它支持“行锁”和事务。
2.优化字段的数据类型
请记住,作为一条规则,较小的列会更快。对于大多数数据库引擎来说,硬盘操作可能是最重要的瓶颈。因此,在这种情况下,压缩数据会非常有帮助,因为它减少了对硬盘驱动器的访问。
如果一个表只有几列(比如字典表、配置表),那么我们没有理由使用INT作为主键。使用起来会更经济,或者更小一些。如果不需要记录时间,使用DATE会好得多。当然,还需要留有足够的扩展空间。
3. 为搜索字段添加索引
索引不一定用于主键或唯一字段。如果表中有一个字段您将始终用于搜索,那么最好对其建立索引。除非您要搜索的字段是大型文本字段,否则您应该创建全文索引。
4. 避免使用*。从数据库读取的数据越多,查询就会变得越慢。而且,如果你的数据库服务器和WEB服务器是两个独立的服务器,这也会增加网络传输的负载。即使要查询数据表中的所有字段,也尽量不要使用*通配符。善用内置的字段排除定义可能会带来更多便利。
5.使用ENUM代替
ENUM 类型非常快速且紧凑。事实上,它被保存了,但它显示为一个字符串。这样一来,利用这个字段来做一些选择列表就变得相当完美了。例如,性别、种族、部门、身份等字段的值是有限且固定的,因此应该使用 ENUM 来代替。
6. 尽可能使用 NOT NULL
除非您有非常具体的原因使用 NULL 值,否则您应该始终保持字段不为 NULL。 NULL实际上需要额外的空间,并且当你进行比较时你的程序会更加复杂。当然,这并不意味着不能使用NULL。现实情况很复杂,仍然会有需要使用NULL值的情况。
7.固定长度的表会更快
如果表中的所有字段都是“固定长度”,则整个表被视为“”或“固定长度”。例如表中没有以下类型的字段:TEXT、BLOB。只要包含其中一个字段,那么该表就不是“定长静态表”,因此MySQL引擎会使用另一种方法来处理它。
固定长度的表将提高性能,因为 MySQL 的搜索速度更快。因为这些固定的长度可以很容易计算出下一个数据的偏移量,读取自然会更快。而如果该字段不是固定长度的,那么每次要查找下一个字段时,程序都需要查找主键。
此外,固定长度的表更容易缓存和重建。然而,唯一的副作用是固定长度字段浪费了一些空间,因为无论您是否使用它们,固定长度字段都需要很大的空间。
使用“垂直拆分”技术,您可以将表分成两部分,一张具有固定长度,一张具有可变长度。
8、垂直拆分“垂直拆分”是一种将数据库中的表按列变成若干表的方法,可以减少表的复杂度和字段数量,从而达到优化的目的。
例如:User表中有一个字段是家庭地址。该字段是可选的。相比之下,除了操作数据库时的个人信息外,不需要经常读取或重写该字段。那么为什么不把他放在另一张桌子上呢?这将为您的表提供更好的性能。想一想,很多时候,对于用户表来说,只有用户ID、用户名、密码、用户角色等会被频繁使用。较小的表总是具有更好的性能。
另外,需要注意的是,您不会频繁地连接这些分隔字段形成的表。否则,性能会比不划分的时候还差,而且会很极端。水平下降。
9. 您的询问;
使用关键字可以让您了解 MySQL 如何处理您的 SQL 语句。这可以帮助您分析查询语句或表结构的性能瓶颈。查询结果还会告诉你你的索引主键是如何使用的,你的数据表是如何搜索和排序的......等等。
通常我们可以在比较复杂的语句前面添加关键字,尤其是涉及多表的语句。您可以使用 来执行此操作。详细信息请参见附件.doc。
5.前端优化
优化完后端和数据库之后,接下来我们要做的就是优化你的前端页面和输出页面的资源文件,主要包括图片、JS和样式文件的优化。
我们推荐使用以下网页性能测试工具进行检测和分析,并会给出相关的优化建议:
开发的工具
网站管理员和网络开发人员可以使用它来评估其网页的性能并获得有关如何提高性能的建议。
yslow Y慢
它可以分析网站的页面,并告诉您如何根据一定的规则对其进行优化,以提高网站的性能。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。