Skip to main content

WordPress托管最佳实践 – 性能

本节将介绍如何提高网站性能的基础知识。

高速缓存

WordPress可以处理很多复杂的功能,但这需要付出代价。诸如处理PHP,查询数据库和从外部API收集信息等任务都需要资源和时间。缓存只是简单地保存这些潜在的繁重任务的结果,并重用这些结果,而不是再次计算它们。缓存通常会在一段时间后过期并重新生成以显示最新的内容。当项目从缓存中提供时,它们的响应时间更快,通常来自内存,并从服务器上卸载。

全页面缓存

你的WordPress网站做了很多工作。他们处理PHP,创建外部API请求,从数据库获取内容等。 WordPress所做的所有工作都是输出HTML,CSS和JavaScript以供浏览器加载。生成此浏览器视图需要时间。

整页缓存只是简单地将所产生的HTML,CSS和JavaScript为一个页面生成并保存结果,因此无需为下一个网站访问者重复该工作。

如果您的WordPress网站上的页面没有针对每个访问者进行更改,则最好实践一个完整页面缓存。一些例子可能是关于页面或联系页面。如果您的网站是针对每个用户量身定制的,例如只显示对每个用户感兴趣的新消息的论坛,则整页缓存可能不是最合适的。

如果完整页面缓存正确实现,WordPress将不必进行任何工作,直到缓存过期,此时WordPress会为浏览器生成HTML,CSS和JavaScript – 整个页面缓存将保留这些新结果,直到指定为止时间到期。

在使用缓存时,根据网站的需求或个别页面的需求调整缓存持续时间非常重要。例如,显示最畅销产品的电子商务模板可能需要较短的缓存,因此列表每分钟更新一次。或者,单个产品页面不经常更改,可以有更长的缓存。

即使尚未过期,缓存也可以被清除。如果您发布新内容,应该这样做。如果可能的话,只清除缓存中的新内容效果,而不是清除整个缓存。

对象缓存

在2005年,WordPress引入了内部对象缓存 – 这是一种在PHP内存中自动存储来自数据库的任何数据(不仅仅是对象)的方式,以防止不必要的查询。然而,开箱后,WordPress会在请求结束时放弃所有这些对象,要求它们从头开始重新构建下一页加载。

来源:scalewp.io

这是什么意思?想想一个显示最新帖子的标准WordPress主页。这些帖子中的每一个都有很多与WordPress相关的信息,例如作者,类别,标签,摘录等等。开箱即用WordPress会在每次请求后将这些信息扔掉,然后再次抓取它访问者的网站。

持久对象缓存为WordPress提供了一个存储数据以供重用的地方。像其他形式的缓存一样,这些数据将在给定时间后过期。然而,当这些对象被缓存时,PHP执行时间得到了改善,同时减轻了数据库的负担。

由于对象高速缓存存储完整对象,因此高速缓存的项目可在多个页面之间重复使用,并用于验证流量 – 整页缓存无法提供此功能。

通过缓存插件,瞬态会自然加速,而正常的选项则不是。例如,一个memcached插件可以让WordPress将瞬态值存储在快速内存中而不是数据库中。出于这个原因,应该使用瞬变来存储任何预计到期的数据,或者可能随时过期的数据。瞬变也不应该假设在数据库中,因为它们可能根本不存储在那里。

来源:WordPress Codex

社交媒体小部件就是一个很好的例子。一个插件可能会呼叫第三方API来获取最新的社交内容。而不是在每次加载页面时都会将结果存储在瞬态中。 WordPress将在数据库中存储瞬态信息,这些形式的过期选项。在大多数情况下,从数据库获取最新的社交帖子比向社交媒体API发出调用要快,但对象缓存可以进一步提高这一点。而不是将这些项目存储在数据库中WordPress将使用持久对象缓存,通常是快速内存存储。

持久对象缓存可以加速WordPress,并提供我的许多托管WordPress主机或可以独立设置。您还需要一个插件来将WordPress连接到对象缓存。插件目录中有许多可用的

操作码缓存(又名服务器端缓存)

正如整页缓存部分所述,WordPress将PHP脚本处理为生成HTML,CSS和JavaScript以供浏览器加载的一部分。 Web服务器需要花时间阅读WordPress需要的每个PHP脚本,编译脚本并运行PHP脚本。默认情况下,Web服务器必须为每一次访问每一页都执行此过程。完整页面缓存可以减少Web服务器执行此操作所需的时间,具体取决于所使用的完整页面缓存类型,但仍可能有一些PHP脚本必须在每次访问时都被读取,编译和运行。例如,WordPress缓存插件仍然需要检查是否需要重建缓存。 PHP脚本也必须被读取,编译和运行,才能生成任何动态的,未缓存的内容,如评论或WooCommerce商店的页面,以及用于显示管理仪表板的WordPress。使用操作码缓存可以帮助加快服务器速度,因为它可以运行WordPress,而无需为每一次访问页面读取和编译PHP脚本。

Op-code缓存将每个PHP脚本的编译副本存储在服务器的内存(RAM)中。当Web服务器开始处理WordPress的PHP脚本时,Web服务器会检查操作码缓存中的PHP脚本的缓存副本。如果存在缓存副本,则Web服务器可以直接跳过使用缓存副本运行PHP脚本,而不必再次读取和编译脚本。跳过阅读和编译PHP脚本可以极大地提高Web服务器的资源使用率,并使WordPress能够提供比其他方式更多的请求。

运行代码缓存可以使Web服务器在运行WordPress时使用更少的资源;然而,就像整页缓存一样,操作码缓存可能会导致WordPress的更改,例如安装或移除插件和主题或更新WordPress,从而立即显示。在对构成WordPress的PHP文件进行任何更改后,手动清除操作码缓存会很有用。

PHP

PHP(PHP:超文本预处理器)是互联网上流行的编程语言。 PHP将动态内容(如WordPress中的内容)转换为Web浏览器可以读取的HTML,CSS和JavaScript。 WordPress是用PHP编写的。它的所有核心文件和脚本都是PHP脚本,并且服务器必须具有PHP以便WordPress能够运行。

PHP是一种解释型语言。用PHP编写的WordPress和其他程序不必提前编译,然后才能运行。这意味着相同的PHP代码可以运行在任何可以运行PHP的平台上。解释型语言的性能往往比编译语言要慢;然而,在这方面已经做了很多工作来改进PHP。

PHP的配置对WordPress运行的程度以及WordPress是否可以运行都有非常大的影响。例如,许多旧版本的PHP不再与WordPress兼容。另外,正确配置PHP对确保WordPress能够正常运行至关重要。

版本

目前PHP的主要版本是PHP 7.如果可能的话,应该使用PHP 7来运行WordPress。在撰写本文档时,PHP 7是唯一仍在接受主动开发和支持的PHP主要版本。 PHP的制造商最终退出了PHP版本,因为他们继续向PHP添加新功能。有时添加的功能使得新版本的PHP与旧版本显着不同。它是PHP成长为编程语言的一部分。较新版本的PHP也具有性能改进和安全补丁,而旧版本的PHP没有并且可能永远不会收到。

如果可能的话,运行旧版本PHP的服务器应该升级到最新版本的PHP。但是,升级PHP版本时必须格外小心。构建为使用旧版本PHP的旧版网站通常也不易与新版PHP兼容。如果使用的是最新版本的WordPress,则不应该与WordPress存在任何兼容性问题;但是,第三方插件或主题可能与最新版本的PHP不兼容。

如果可能,请始终在非生产环境中测试您的PHP网站。在非生产环境中进行测试可以让您发现任何问题,而不会导致您的网站在用户访问您的网站时不可用或出现错误。

根据托管服务器的配置,升级PHP可能是一个相当耗时的过程,如果在升级后发现问题,升级也往往不能轻易逆转。

如果您对PHP不熟悉或不知道如何升级,请联系您的托管服务提供商。主机提供商通常可以帮助升级到更新版本的PHP。

如果不能立即升级到PHP 7,应尽快升级到PHP 5.6。 PHP 5.6是PHP 5的最老版本,仍在接收安全补丁。老版本的PHP没有修补它们的错误和漏洞。他们应该被认为是不安全的,可以使网站更容易受到攻击。应该继续开发升级到PHP 7的计划。与PHP 5相比,PHP 7在性能上有显着提高。它还接收主动更新和安全补丁,并将在未来几年得到发展。 PHP 5.6的安全补丁在2018年结束。有关PHP支持版本的更多信息可以在PHP支持的版本页面上找到