15208187678

为企业构建全球竞争力,行业信息化整体解决方案

For the enterprise to build the global competitiveness industry informatization overall solution

如何通过改善后端来优化您的网站速度
2021-03-16 146次 网站速度

网站速度很重要。根据百度等主流搜索引擎的说法,您的网站加载速度越快,您在搜索结果中获得的排名就越高,转化率也就越高。这就是网站建设时关心网站速度优化的原因。在之前的一篇文章中,我们讨论了可衡量您网站性能的工具,以及通过优化网站前端来提高网站加载速度的提示。在本文中,我们将讨论后端优化。我们将对加速网站的方式进行排名,向您展示哪些优化对加载时间的影响最大。这意味着我们将首先解决常见问题,例如未优化的查询,这些问题会降低网站的性能,并且易于识别和修复。我们将通过讨论查询和数据库优化,缓存,Web托管解决方案以及Content Delivery Network来跟踪这些简单的修复程序。

1.缓解N + 1查询问题

“ N + 1”问题减慢了许多应用程序的速度。当向数据库中的链接字段发出过多的查询而不是发出一个包含所有需要检索的记录的复杂SQL查询时,就会发生此问题。在上云的内置对象关系映射(ORM)工具中,N + 1问题通过急切的加载得以解决。急切加载时,将通过单个查询而不是使用多个查询来请求所有关联的实体,这会降低应用程序的性能。

此外,我们可以使用Bullet gem减少应用程序查询的数量。这个gem跟踪应用程序开发过程中的查询,并在需要添加紧急加载以解决N + 1问题时以及在最好不使用紧急加载时通知开发人员。

2.数据库优化

未优化的数据库也会降低您的网站速度。为了加速数据库,请考虑使用索引并对数据库进行规范化和非规范化。下面,我们将为您提供有关如何使用关系数据库执行此操作的示例。

规范化数据库

尽管在设计关系数据库时规范化是理所当然的事,但一些开发人员有时还是忽略了此过程。

数据库设计(包括表和列的结构以及它们之间的关系)涉及正常形式的概念,旨在优化数据库的结构。正常形式表示应用于数据库的线性规则集,这些规则用于数据库规范化。数据库规范化的目的是减少和消除冗余数据,并确保相关的数据依赖性,以避免在数据库字段中插入,更新或删除数据时出现问题。

总而言之,规范化可以帮助您减少数据库占用的空间,并有效地组织数据以提高数据库性能。

数据库索引

减慢查询速度的一个常见问题是根本没有使用或使用不正确的索引。数据库中的索引与书中的索引具有相同的功能:每个索引元素都包含所需对象的名称以及显示其位置的标识符。为数据库列创建索引,因此查询无需遍历所有列即可搜索匹配的数据。而是,数据库仅搜索索引。但是,请记住,索引可能会降低数据库的速度。尽管索引加快了数据返回的速度,但它们减慢了数据的插入,更新和删除的速度。

数据库的非规范化

非规范化是对规范化数据库的蓄意修改,因此它不符合规范形式。非规范化的主要目标是通过向现有表中添加多余的数据(例如额外的表或属性)来减少选择查询所需的时间,以使数据更易于访问。

数据库非规范化可以帮助您解决以下问题:

1、大量的表联接。我们经常需要将查询中的大量表连接到规范化数据库。尽管表联接是一项资源密集型操作,但此类查询会消耗服务器资源,并且需要花费一些时间来执行。为了加快这些查询的速度,请考虑通过对其中一个表添加一个额外的字段来进行非规范化。

2、计算值。通常,执行复杂计算的查询会降低数据库的性能。如果您的数据库定期执行复杂的计算,则有必要在表中添加其他列以容纳经常使用且难以计算的数据。创建包含预先计算的值的列可以节省查询执行期间的大量时间。但是,它还需要及时更新此列中的数据。

3、长田。如果数据库包含包含长字段(例如Blob和Long)的大表,则可以通过将长字段移到单独的表来加快查询处理。

3.缓存

缓存是将数据存储在缓存中并重新加载的过程,因此不会为每个用户一遍又一遍地呈现网页。缓存使用户可以在短时间内处理大量数据,同时使用最少的服务器资源。

可以在客户端和服务器端实现缓存。在上一篇文章中,我们讨论了客户端缓存(也称为浏览器缓存),其中包括图像,HTTP标头,网页等的缓存。在本文中,我们将更详细地讨论服务器端缓存。

服务器端缓存是对存储在服务器上的数据进行缓存;客户的浏览器无法使用此数据。尽管这些是常用的缓存机制,但是每个框架或CMS都有其自己的即用型缓存实现,用于缓存整个网页,网页片段和数据库查询。

SQL缓存

上云中的SQL缓存会缓存选择查询的结果。在上云遇到相同的查询请求的情况下,它将返回缓存的结果,而不是再次查询数据库。换句话说,当重复查询发送到数据库时,实际上并没有到达数据库。第一次返回查询时,结果存储在查询缓存(内存)中,第二次返回查询时,直接从内存中检索它。但是请记住,查询缓存仅是临时存储的,这就是为什么您应该选择低级缓存来长期存储查询结果的原因。

片段缓存

片段缓存是最普遍的缓存类型。使用片段缓存时,将缓存单独的页面块。页面块的缓存对于动态Web应用程序很有用,因为它们的内容通常会更新,并且缓存的结果可能很快变得无关紧要。此外,复杂的Web应用程序通常包含许多块和组件。因此,对网页块的任何更改都将需要重新呈现整个页面并再次存储该页面,这会使整个网页的缓存效率低下。这就是为什么缓存单独的片段是提高网站性能的首选方法的原因。

页面缓存和动作缓存

页面缓存是上云早期版本中的默认选项,但已从上云4中删除。现在,可以使用actionpack-page_caching gem来实现页面缓存。上云中的页面缓存是一种有效的缓存类型,它完全在Web服务器上完成,而无需遍历上云堆栈。这意味着Web服务器无需向上云应用程序发送请求即可返回缓存的静态内容。实际上,这意味着网页几乎是即时传输的,这使其成为缓存内容的最快方法之一。

但是请记住,页面缓存不适用于具有频繁更新的内容(如新闻源)的应用程序,因为在这种情况下,缓存的查询结果将返回用户以前见过的内容。

此外,在具有用于身份验证或错误消息生成操作的网页上,页面缓存不可用。但是,您可以实现操作缓存,这与页面缓存类似。区别在于动作缓存命中了上云堆栈,因此它在提供缓存之前运行所谓的“动作之前”。您可以使用actionpack-action_caching gem启用操作缓存。

缓存的好处

缓存可以提高您的网站速度。首先,它减少了数据库加载时间,因为一次发现的结果可能会重复使用。其次,缓存可以减少应用程序服务器的加载时间,因为一次缓存的网页可以多次传输给用户。最后,缓存可以提高服务器处理用户请求的速度,因为您可以立即将缓存的查询结果返回给用户,而不必查询数据库和呈现数据。

4.虚拟主机解决方案

Web托管公司拥有服务器‒存储和运行Web应用程序,数据库和软件的计算机。此外,Web主机还提供诸如备份和服务器管理之类的服务。您的网站速度直接取决于您所依赖的虚拟主机服务,并且虚拟主机具有不同的容量和可伸缩性选项。最常见的Web托管类型包括共享Web托管,虚拟专用服务器(VPS),云托管和专用托管。

尽管共享的虚拟主机是最便宜和最受欢迎的解决方案,但我们不会在本文中考虑它,因为它没有提供足够的功能来确保稳定的网站和一致的速度。相反,我们将专注于VPS,云和专用托管,并解释为什么您可能会选择其中一个。

虚拟专用服务器

虚拟专用服务器是极其便宜的共享Web托管程序包和昂贵的专用托管之间的黄金分割。VPS提供商为每个客户端提供了一个个人虚拟服务器,它比共享主机更具可配置性和可扩展性,因为您的配置不会影响其他客户端(与共享主机一样)。

同样,VPS价格是可以承受的,尽管如果您的网站扩展并需要其他服务,它们的价格可能会上涨。VPS是平均流量网站的最佳解决方案。由于其可扩展性,虚拟专用服务器也非常适合希望在特定时期内流量激增的电子商务网站。Amazon Web Services(AWS)和DigitalOcean是常见的云计算服务的示例,它们为在线业务提供托管,存储,计算和其他解决方案。

云托管

您可能会质疑VPS和云托管之间是否有任何区别,因为两者均基于云基础架构。但是,它们是不同的:通过云托管,计算资源可以分布在多个服务器上。这使云托管具有高度可扩展性-您可以根据应用程序面临的负载来增加或减少应用程序的计算资源。许多云托管提供商都提供自动扩展功能,这意味着在流量激增的情况下,平台会自动为您的应用分配更多资源。此外,云托管是可靠的-计算资源位于多个物理服务器上,因此,如果其中一个发生故障,您的应用程序将继续运行。

定价是云托管的另一个优势。由于计算资源是灵活的,因此使用云托管时,您只需为使用的资源付费。供应商提供月费和小时费,并为您的应用程序可能使用的其他资源收费。因此,借助云托管,您无需为网站不需要的资源付费。不利的一面是,如果您的网站出现长时间的流量高峰,您最终可能会收到巨额账单。

对于运行流量无法预测的中小型企业(这对于电子商务网站是常见的),云托管是一个不错的选择。提供商可以提供针对特定类型的应用程序量身定制的云托管计划。例如,如果您需要托管在Magento平台上运行的电子商务网站,则可以选择Magento虚拟主机,它将帮助您更好地管理应用程序并提高其性能。

专用主机

专用托管为您提供了专用服务器-仅属于您的物理服务器。这是一个昂贵的解决方案。首先,您需要支付租用服务器的费用(通常,价格起价为每月150美元)。其次,您需要系统管理员来维护和管理服务器。但是,通过专用主机,您将获得所有属于您的资源和力量。此外,您可以基本上自定义所有内容,从操作系统到内存类型。对于那些对稳定性和速度至关重要的企业级网站和高流量网站,建议使用专用托管。

底线

那么,您应该选择哪种Web托管软件包?答案很简单:考虑您的业务需求。

对于需要高度可扩展,灵活和可靠的平台来托管其应用程序的企业,云托管是一个绝佳的选择。同时,与VPS或专用托管相比,云托管提供的管理和配置机会更少。

VPS是网站访问者数量众多的中小型企业的最佳解决方案。例如,流行的网络托管服务提供商Hostgator提供了VPS计划,使您每天可以处理9,000至35,000个访问者,这使VPS成为专用托管的真正竞争对手。除了提供必要的计算资源(内存,存储,处理)基线以保持网站的全面稳定运行之外,您还可以随时间添加任意数量的其他资源,以随着业务的增长而扩展托管。此功能在季节性流量激增期间非常有用,当您的网站被大量访客访问时。

VPS和专用托管每个月可以处理超过一百万的访问者,这就是为什么仅在需要更大灵活性来调整托管环境并需要员工维护自己的服务器的情况下,专用托管才是合理的。

5.内容交付网络(CDN)

内容交付网络(CDN)是世界各地的分布式代理服务器的系统。这些服务器也称为“边缘服务器”:它们的功能是缓存静态内容,例如图像,JavaScript和CSS文件(某些CDN,例如Akamai也缓存动态内容)。

网站的页面加载速度取决于其服务器的位置:服务器离用户越近,页面加载速度就越快。CDN背后的主要思想是提供有利的地理位置,使最终用户可以更快地下载内容。通过使用CDN服务,您可以解决以下问题:

降低延迟

CDN的存在点(POP)均匀分布,以使用户能够更快地检索所请求的内容。例如,如果来自日本的访问者试图从位于美国的服务器检索内容,则CDN将通过提供来自位于日本的服务器(尽可能接近最终用户)的数据来减少等待时间。

降低成本

您的网站越受欢迎,就会有更多的人尝试访问它。为了确保网站的快速页面加载,您需要在多个位置提供服务器。但是,处理和操作服务器(尤其是在各个位置)非常昂贵。许多企业主认为,使用CDN提供程序比建立和维护自己的服务器系统便宜得多,也更方便。

更高的稳定性

CDN的优点之一是提高了稳定性。如果一台服务器出现故障,用户的请求将自动重定向到最近的可用服务器,因此用户甚至不会注意到延迟。

改进的可扩展性

所有企业都试图获得尽可能多的流量。但是,由黑色星期五之类的假期引起的流量激增(突然的流量激增)或仅是成功的营销策略都可能导致不良的网站速度,甚至导致错误。单个服务器可能会由于流量高峰而关闭,但是传统的CDN(例如Akamai,Amazon CloudFront和KeyCDN)可以通过分配负载来缓解此问题。

综上所述

网页加载速度对于吸引和留住客户很重要。通常,我们区分前端和后端技术来提高您的网站速度。后端或网站的服务器部分对最终用户不可见,但是对于网站的速度而言,这至关重要。上面讨论的某些技术甚至可以由非技术人员实施,尽管其中一些需要具有深厚技术背景的专家。但是,为提高网站速度所做的一切努力都是值得的。



推荐阅读