Kinsta-博客中文翻译-十-

Kinsta 博客中文翻译(十)

原文:Kinsta Blog

协议:CC BY-NC-SA 4.0

微服务与 API:了解差异

原文:https://kinsta.com/blog/microservices-vs-api/

微服务和 API 在软件开发领域正变得越来越出名,越来越需要以更快的周转时间生产可伸缩、安全和灵活的应用程序。

客户需求瞬息万变,他们期望软件解决方案能够减轻他们的任务并为他们提供便利。

单一架构的传统方法限制了开发人员的创新。由于其僵硬的组成,在应用程序中进行更改可能会很困难。

但是,如果您希望您的应用程序努力,您必须添加新的、改进的特性和功能来满足客户的需求。

这就是微服务架构和 API 可以提供帮助的地方。

Microservices vs. APIs- what's the difference, and how do they work? 🤔 Learn more here ✅Click to Tweet

但是很多人在他们之间混淆不清,在开发一个软件应用的时候,不知道什么会适合他们。

本文将比较微服务和 API,目的是消除您的困惑,以便您可以决定构建和部署应用程序的最佳方式。

让我们开始比较。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

什么是微服务?

微服务是较小的、松散耦合的服务,可以独立部署。这里,“服务”指的是应用程序的不同功能。

因此,在微服务架构中,应用程序的功能被划分为许多服务于特定目的的较小组件。这些组件或服务是细粒度的,通常有独立的技术栈、数据管理方法和数据库。它们可以通过 REST APIs、消息代理和流与应用程序的其他服务进行通信。

微服务架构是构建应用程序的有效方法。因为服务是松散耦合和分布式的,所以即使其中一个服务发生了什么,也不会影响系统的其他部分,这与传统方法不同。
松耦合有助于降低应用程序的复杂性和依赖性。因此,开发团队可以加快开发新应用程序组件的过程,并满足不断增长的业务需求。

这里,术语“微服务”和“微服务”是彼此不同的。微服务代表应用程序的核心功能,并且独立运行。另一方面,术语“微服务”表示构建应用程序的完整架构。它超越了核心功能和松散耦合——它还重构了您的开发过程和通信,以支持新功能的集成,提供可伸缩性,并为失败和问题做好准备。

微服务的组件

微服务的主要组件有 API、业务逻辑、数据访问层、数据库。让我们看看不同组件的扩展版本:

  • 客户端:这些可以是应用程序、网站或其他服务。微服务架构包括各种类型的客户端来处理一些任务,例如执行搜索、配置、构建等。
  • API 网关:这是客户端的入口点,因此它们可以将请求转发给合适的服务。使用 API 网关的原因是客户端不直接调用服务。使用 API 网关将提供许多好处,比如保持服务更新、提供负载平衡、安全性等等。
  • 身份提供者:客户端请求被转发给身份提供者,以对这些请求进行身份验证,并通过 API 网关将它们传递给内部服务。
  • 数据处理:微服务拥有私有数据库来存储它们的信息和实现业务功能。
  • 消息传递:微服务通过消息相互交互,管理客户端请求。这些消息可以有两种类型:同步,服务器等待获得实时响应,或者异步,客户端在行动之前不等待任何响应。
  • 静态内容:微服务在相互通信后,将其他静态内容部署到云存储服务,以便使用内容交付网络(CDN) 将内容直接交付给客户端。
  • 服务交付:这是一个微服务指南,用于查找微服务之间的通信路由。它管理节点所在的服务列表。

微服务示例

像亚马逊、网飞、 PayPal 、Twitter 等顶级组织。,已经从传统的单片架构发展到微服务。这种架构通过提供无缝扩展、业务敏捷性和高利润,帮助他们取得了更大的成功。

我们以亚马逊为例。这个零售网站在 2000 年代有一个单一的应用程序。因此,如果其开发人员需要扩展或升级亚马逊的系统,这是很困难的,需要他们每次都非常小心地管理多个组件和层紧密联系在一起的整体应用程序的依赖关系。

因此,随着应用程序随着其更大的代码库而增长,它限制了灵活性并增加了复杂性。这给开发团队带来了额外的开销,减缓了他们的开发过程。因此,他们发现难以满足扩展需求和客户期望。

所以,他们采用了微服务架构。首先,他们仔细分析所有的源代码,然后提取服务于单一功能的代码单元。接下来,他们将这些代码单元包装在基于 web 的服务接口中。例如,他们建立了一个独立的支付服务,这是“购买”选项的另一个单一组件。

此外, Amazon 还将一项服务的所有权分配给开发者,让他们密切关注并解决问题。

微服务的类型

微服务可以分为两大类——无状态和有状态微服务。

  • 无状态微服务:这些是分布式系统的构建块。它们不维护或存储两个请求之间的任何会话状态,因此被称为“无状态”微服务。此外,即使删除了服务实例,服务的整体处理逻辑也不会受到影响。这就是分布式系统利用无状态微服务的原因。
  • 有状态微服务:有状态微服务在代码中维护或存储会话状态或数据。相互通信的微服务总是维护服务请求。

无状态微服务使用更广泛,但是你可以在多个场景下使用有状态。

例如,假设客户下了订单。这里“订单”代表一个微服务。因此,订单服务开始使用另一个服务——库存服务来检查产品状态。当每个请求独立于将来或以前的请求时,这意味着系统遵循无状态架构。

当您试图通过调用获取产品信息时,无论之前的请求或上下文如何,您都会得到相同的结果。而且即使订单失败,也不会危及整体业务处理。另一个微服务将准备好保持流程运行。

微服务 RESTful 吗?

嗯,不一定。让我们简单回顾一下不同之处:

  • 微服务:这是一个功能和服务的集合,充当应用程序的构建模块。
  • RESTful API:这些表示将所有微服务集成到一个应用程序中的协议、命令和规则。

微服务是关于应用程序的设计风格和架构,你可以使用或不使用 RESTful API 来构建微服务。也就是说,使用 RESTful 将使开发松散耦合的微服务变得容易得多。

RESTful API 出现在微服务之前。它假设所有的对象都有统一的接口,并且是完全语言不可知和松散耦合的。在这里,语义和接口保持不变,API 实现可以在不影响消费者的情况下随时更改。所以 RESTful 和微服务解决的可能是不同的问题;他们仍然可以一起工作。

什么是 API?

应用程序编程接口(API)是两个相互交互的应用程序之间的软件中介。它通过一个接口连接两台计算机或计算机程序。

不要把这个界面和用户界面混为一谈,用户界面是把人和计算机或计算机程序联系起来的。API 将软件和计算机相互连接起来,并不直接供最终用户使用,除非程序员希望将它集成到软件解决方案中。

API 简化了编程,实际上可以隐藏系统的内部细节,例如它是如何工作的,并向程序员展示有用的部分,同时保持这些部分的一致性,尽管内部发生了变化。如今你可以找到各种用途的 API,比如操作系统、软件库、编程语言、计算机硬件等。

此外,构建 API 要求您遵循一个称为 API 规范的标准或文档,该规范告诉您如何使用或构建 API。

API 由许多不同的部分组成,作为程序员使用的服务或工具的集合。使用这些部件的程序员或程序必须首先发出“调用”或请求。这些调用被称为请求、方法、端点或子例程。您可以使用 API 处理四种类型的请求——GET、PUT、DELETE、POST。

API 的组件

API 包括解释服务之间通过数据处理和交付请求进行数据交换的技术规范。它们还有一个软件接口,使应用程序能够交换信息。API 还具有:

  • 协议:它们是一组定义应用程序相互交互方式的规则,比如 HTTP ,SOAP,XML-RPC,REST 等。
  • 格式:这是应用程序之间数据交换的风格。它定义了 API 将如何检索数据并将其提供给消费者。API 可以通过协议发出请求,并以某种格式检索信息,如 XML 或 JSON 响应。
  • 过程:它们是应用程序执行的特定任务或功能。
  • 工具:用于构建 API。您可以找到许多工具来构建、测试和管理您的 API,例如 AWS、IBM Cloud、SoapUI、JMeter 等。

原料药的类型

基于不同的参数,API 有不同的类型。基于发布策略,API 分为三种类型——公共、私有和合作伙伴。

公共 API

它们可供任何第三方用户或开发者使用,并允许您通过正确的执行来提高品牌的知名度和收入。它们有两种类型——开放的和商业的。

  • 开放 API:这些特性是公开的,人们可以自由使用它们,没有任何限制,也没有发行商的批准。它的文档和描述也必须可供公众使用,以创建新的应用程序。
  • 商业 API 可供公众使用,但是您可能需要为使用 API 支付一定的费用。许多出版商在人们支付订阅费之前提供有限时间的 API 免费试用。

私有 API

公共 API 旨在改进企业内部的服务和解决方案。他们的开发人员可以使用它们来集成应用程序和 IT 系统,并使用现有系统构建应用程序和系统。

虽然这些应用程序可供公众使用,但应用程序接口只对与 API 所有者一起工作的人可用。这允许 API 发布者或所有者控制 API 的使用并保护其完整性。

合作伙伴 API

合作伙伴 API 可以公开推广,但只能与签署了共同协议的发行商业务合作伙伴共享。合作伙伴 API 通常用于软件集成。

公司可以授权其合作伙伴访问某些功能或数据,同时监控关键方面。它将持续监控共享资产的使用情况,管理跨应用程序的企业身份,并确保使用其 API 的第三方提供良好的用户体验。

基于用例,API 有不同的类型:

Web APIs

Web APIs 是一种常见类型的 API,它提供机器可读的功能,并在两个或多个基于 Web 的服务或代表客户端-服务器架构的系统之间进行数据传输。它们主要用于使用超文本传输协议(HTTP) 传递服务器响应和 web 应用请求。

Web APIs 有助于扩展应用程序或站点的功能。例如,您可以使用 Google Map API 向您的网站添加包含您所在组织位置的地图。

操作系统 API

操作系统(OS)API 定义了应用程序如何使用操作系统的服务和资源。每个操作系统包含不同的 API,例如 Windows API。

数据库 API

数据库 API 用于通过数据库管理系统(DBMS)与应用程序进行交互。您的开发人员可以利用数据库、编写数据访问查询、更改表以及执行其他操作。

远程 API

远程 API 是运行在多台机器上的应用程序的通信标准。之所以称之为“远程”,是因为软件解决方案可以从发出请求的设备访问外部资源。

在这种安排中,两个远程应用程序通过网络(互联网)相互通信。因此,大量的远程 API 是按照 web 标准开发的。远程 API 的例子可以是 Java 远程方法调用 API。

API 还可以有更多类型:

  • REST API:REST API 或 RESTful APIs 设计用于发出请求和接收 HTTP 响应。它基于各种 HTTP 命令——GET、POST、PUT 和 DELETE。
  • RPC API:远程过程调用(RPC)API 是早期的 API,设计用于在不同的服务器上运行代码块。当您通过 HTTP 使用它时,它会转换为 Web API。
  • SOAP API:简单对象访问控制协议(Simple Object Access Control Protocol,SOAP)是指一种依赖于基于 XML 的编程和系统的标准协议,具有更昂贵和更大的数据量。它们提供了很高的安全级别,广泛用于金融应用。

API 的示例

API 无处不在。它们被用于服务、软件解决方案、网站和许多其他渠道。让我们看看一些流行的 API 作为例子。它们的目标可以是相同的,但是它们可能使用不同的规范和协议。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

  • 电子商务应用编程接口:电子商务应用编程接口有不同的类型。它们可以帮助在购物网站上展示产品、运送产品、管理订单和支付、兑换货币等等。示例:
    • 产品数据 API 有助于从您的站点为您的访问者收集产品信息。
    • 付款 API 通过充当付款处理者和您的站点之间的中介,从您的站点或应用程序收集电子付款。
    • Shipping API 可以根据用户的距离计算运费。
  • WeatherAPI: WeatherAPI 是 API 的一个很好的例子,它作为一个免费的天气和地理位置信息解决方案。天气 API 有多种用途,如 IT 查询、天气预报、天文学、时区、体育等。
  • Yelp API: 这是一个基于 GraphQL 的 API,用于收集顾客评论和推荐,供餐馆、商店、酒店和其他机构使用,以了解顾客对企业的看法。它还帮助客户阅读公众评论,并决定是否考虑他们的后续使用业务。

其他例子包括网上购物、玩在线游戏、浏览社交媒体、使用银行应用程序、检测来自网站的信息以及您使用互联网做的许多其他事情。

微服务 vs API:它们是如何工作的?

在我们讨论了微服务和 API 的本质之后,让我们来比较一下它们实际上是如何工作的。

微服务是如何工作的?

为了了解微服务是如何工作的,让我们回到过去。

传统的软件开发,仍然在许多组织中继续,使用整体架构。“整体”指的是一个单一的、大型的应用程序,它拥有所有的功能和特性,并将所有的东西存储在一个地方。

这意味着应用程序的整个组件,包括业务逻辑、数据访问和 UI,都存储在同一个地方。

事实上,这种软件开发很容易,也很自然。这就是为什么许多人仍然选择它。然而,如果你想给你的应用程序增加更多的功能,以使它更吸引人,或者增加它的用途、可用性、安全性等等,这就变得很棘手了。向现有代码库添加更多功能会增加整体的复杂性和大小,从而引发各种问题,例如:

  • 即使您想做一点小小的更改,更改也会影响整个应用程序。您可能需要重新部署整个应用程序,这是有风险的,而且耗费时间和资源。
  • 由于其紧密耦合的结构,单片是不灵活的。因此,它也限制了技术堆栈,尤其是当应用程序扩展时。你可能会发现很难改变你的技术组合,并且可能会被迫使用有很多潜在问题的旧技术。
  • 这是有风险的,因为如果任何漏洞被暴露,并且该部分被破坏,攻击可能会蔓延到整个应用程序,破坏整个应用程序及其数据。

因此,将应用程序的功能分成不同的部分似乎是解决所有这些问题的一个很好的方法,这正是微服务所做的。让我们了解微服务架构是如何运行的。

在微服务架构中,应用程序被构造成可重用的、通过 API 通信的离散服务。每个服务都是围绕特定的业务流程组织的,并遵循一种通信协议,如 HTTP。然后,这些较小的服务与它们的依赖项和其他数据分别集成到应用程序中。

因此,如果您想对某个功能进行一些更改,您可以在不影响应用程序其他部分的情况下轻松完成。

这些功能使得微服务成为现代软件开发方法的理想选择,如 DevOps 。虽然微服务架构并不是一个全新的概念,因为它是从传统方法和面向服务的架构(SOA)发展而来的,但由于最近的技术进步,如容器化,它现在已经非常普遍。

使用 Linux 容器,您可以轻松地在单个硬件上单独运行各种应用程序部分,并获得更好的控制。

API 是如何工作的?

应用程序编程接口(API)将用户响应传递给系统,并将响应发送回用户。

这是说明 API 如何工作的最简单的版本,但是在后台会发生很多事情。API 允许开发人员发出请求或调用来传输信息。这种交互是通过 JSON 编程实现的。它还执行许多操作,例如添加和删除数据、收集信息和更新详细信息。这是通过四个命令完成的:

  • 获取:收集信息
  • 上传:更新数据
  • 删除:删除一些东西(比如产品信息)
  • 发布:创建一些东西(比如一篇新的博客文章)

如果没有 API,你在网上做的许多有趣的事情就不可能实现,比如玩视频在线游戏,从虚拟商店订购产品,找到一个失散多年的朋友的脸书档案,等等。

API 作为一个中间接口,允许两个应用程序相互交互并完成你的请求。

例如,当您想从 Amazon 订购自行车配件时,您可以访问应用程序并将商品放入购物车。接下来,该界面将带您进入交货地址和付款页面。

由于 API 的存在,这是应用程序之间进行通信的地方。例如,如果您选择了 Google Pay 作为您的支付处理器,该应用程序会将您的银行凭据发送到另一个应用程序进行验证。一旦经过验证和确认,第二个应用程序将通知 Google Pay 完成交易。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

一旦您输入了 PIN 码并开始交易,Google pay 将会促进数据交换并完成支付。到时候,你的订单就会下了。

通过允许软件产品和服务相互通信,API 简化了应用程序开发、资金和时间。API 会给你创新的灵活性和设计控制。

微服务与 API:各自的优势

让我们比较一下微服务和 API 对开发者、终端用户和企业的好处。

使用微服务的优势

将应用程序的功能划分为更小的服务或微服务有很多好处。让我们逐一探究。

  • 模块化:这意味着将服务划分为不同的模块,这些模块具有自己的功能和依赖关系,从而使应用程序易于开发、测试和理解。它减少了企业使用整体软件开发方法所面临的复杂性和困难。
  • 分布式开发:微服务架构简化了开发过程,因为较小的团队可以分别并行地负责开发、测试、部署和发展服务。
  • 可伸缩性:在微服务中,实现了松散耦合的方法,将业务逻辑、数据访问层和数据库分离开来。相比之下,微服务可以独立开发和部署以执行其任务,并且可以轻松扩展。由于精确缩放,您可以只缩放那些您想要的组件。
  • 独立部署:由于服务很小,可以独立部署,所以您所做的任何更改都不会影响整个应用程序。所以,当你想更新一个特性时,你可以直接使用一个微服务并部署它,而不需要重新部署整个应用。
  • 无缝集成:借助微服务,您可以真正实现当前整体应用的现代化。这可以通过集成遗留和异构系统来实现。微服务还易于与许多技术和工具集成,以帮助增强您的应用程序的特性、功能和安全性。
  • 灵活性:微服务为您提供更好的灵活性。如果支持不同的组件或服务,你可以自由使用任何带有编程语言、库、框架和其他工具的技术栈。因此,您可以构建最新和更高级的服务,用最新的特性和安全特性来补充您的应用程序。
  • 安全性:微服务架构有助于提高应用的安全性。他们生来就要应对妥协和失败。由于各种类型的服务在该架构内通信,服务可能会由于服务器问题、网络攻击等而失败。即使其中一项服务失败,也不会导致整个应用程序停止运行;其他部分仍将按预期执行。
  • 简单路由:微服务遵循简单的路由方法来接收请求并相应地传输响应。微服务是用智能端点或客户端开发的,它们可以无缝地处理信息,并根据需求应用业务逻辑。然而,像企业服务总线(ESB)这样的其他策略不会这样做。他们利用高科技系统来应用业务策略和消息路由。
  • 提高生产力:在责任被划分的分布式开发方法中,它有助于提高组织的生产力。一个大的任务可以被分割成更小的任务,这些任务看起来很容易准确地完成。
  • 更容易维护和调试:开发人员可以更容易地编写代码和调试更小的服务。他们可以快速分析整体服务,以发现错误和问题,这与他们必须分析具有所有依赖项和功能的大型应用程序的场景形成了鲜明对比。
  • 更快的上市时间:在确保质量的同时,更快的代码开发、测试、调试和部署将加快您的上市时间。您可以接受早期反馈,更快地改进您的应用程序,而不是一次部署所有内容。这将有助于您开发客户喜欢使用的高质量应用程序。

虽然微服务似乎是一种高效的方法,可以为您提供大量的好处(确实如此),但也存在一些挑战。

  • 从传统的整体架构迁移到微服务可能非常复杂,需要大量的服务、团队和部署。
  • 新的软件版本会带来向后兼容性问题
  • 更多的网络会带来更多的连接和延迟问题
  • 记录数据可能是一种负担

然而,DevOps 可以解决很多这样的问题;它可能有自己的挑战。计算风险和收益仍然比风险重要得多。

使用 API 的好处

随着人们前所未有地利用互联网和服务,API 在现代商业世界中变得至关重要。以下是 API 的一些好处:

  • 速度:API 为企业和用户的各种任务提供难以置信的速度。它们有助于加快运营,为企业提供灵活性,并减少客户的麻烦。例如,如果您想在网上订购一些东西,您可以直接进入您的应用程序并检查该商品是否可用。
  • 可扩展性:如果你是一家成长型企业,你必须确保的第一件事就是你的技术团队是否具有可扩展性。它将为你提供与时俱进发展业务的机会。使用 API 将为您提供极大的灵活性和可伸缩性来扩展您的产品、增加目录数量、管理不断增长的数据以及处理不断增长的安全风险。
  • 安全性:使用 API 是增强应用程序安全性的一个好方法。原因是当您进行 API 调用时,您没有直接连接到 web 服务器。相反,您正在发送少量数据,API 将这些数据传递给服务器,并从服务器获取响应。因此,您的应用程序不会受到攻击者的攻击。
  • 提高生产力:使用 API 将使开发人员能够快速实现更多的功能。而不是从零开始。这将为企业和开发人员节省大量时间和精力,他们可以将时间投入到创新中。
  • 降低 IT 成本:构建一个应用程序,无论大小,都需要大量投资。您将需要技术、工具、人员以及其他资源来支持您的开发过程。但是您可以通过使用合适的 API 来构建您的应用程序或增强其功能,而无需花费大量金钱,从而一次性避免所有这些问题。
  • 促进协作:由于安全风险增加,保持顺畅、安全的连接和通信对组织来说变得很麻烦。但是使用私有 API 有助于促进团队或组织中的沟通和协作。
  • 推动创新:垂直行业的激烈竞争使得创新对企业至关重要。此外,客户需求在不断变化,但公司必须努力满足这些需求。
  • 改善客户体验:API 对最终用户也有好处。它们帮助客户与企业无缝互动,让他们了解自己的挑战、偏好和兴趣。反过来,企业可以利用这些投入来改进他们的产品和服务,同时提出创新的解决方案来满足他们的需求。

通过 API,企业还可以个性化客户体验,这是决定您成功的关键因素。例如,您可以使用基于人工智能(AI)的 API 来分析客户的购买旅程,从他们访问您的网站到他们最终从您这里购买。这将帮助您找出他们的困难并解决它们,并添加更多支付选项等新功能,使他们的购买更容易。

与微服务一样,尽管 API 提供了令人惊叹的优势,但也带来了某些挑战,例如:

  • 并非所有的 API 都是安全的,这是组织在使用 API 时面临的主要问题。这可能会使您的应用程序容易受到网络攻击。因此,如果您想使用一个 API,请谨慎选择,记住它的安全性和遵从性。
  • API 可以使应用程序的性能依赖于它们的性能。因此,如果 API 有一些问题,它将影响应用程序的性能,即使应用程序本身没有任何问题。这意味着如果 API 被攻击者破坏,您的数据也可能被破坏。
  • API 是如此之好,以至于组织最终可能会使用很多,甚至数百个。现在的问题是,当多个 API 与它们的服务、依赖项和端点一起运行时,组织可能很难处理它们。您可能会觉得在组织中控制 API 的使用、监控数据并保护它们的安全是一件很困难的事情。

微服务 vs API:它们是用来做什么的?

接下来是根据微服务和 API 的用途对它们进行比较。

微服务的使用

微服务的许多使用案例包括:

  • 使遗留应用现代化:现代企业必须采用敏捷技术,并从遗留系统中转移出来,以满足最新需求并为未来做好准备。为了构建一个强大而先进的 IT 基础设施,您需要使用微服务重构您当前的基础设施。它将允许您部署能够根据需求扩展的全栈应用和软件解决方案。
  • 提供第三方服务的应用:提供第三方解决方案和服务的应用,如插件、分析工具、监控解决方案、安全工具、数据传输应用等。,需要大量的计算资源,如 CPU 和 RAM。他们的运营需要这些资源,因为它们涉及复杂的逻辑,并且更加广泛。他们还需要限制正常运行时间来继续为用户服务。
  • devo PS:devo PS 模型使用微服务作为其关键组件之一。这两种技术实际上相互补充,完美地为企业提供了大量的好处。DevOps 旨在加快软件开发生命周期,同时确保质量,微服务帮助开发团队做到这一点。
  • 大数据:大数据需要通过清晰的基于管道的架构仔细收集、处理和交付。微服务可以在这方面提供帮助,因为它们可以在数据管道的每个步骤轻松处理每个较小的任务。
  • AI 和 ML: 机器学习、人工智能、能源和制造等高级分析生态系统需要高性能的计算能力来评估他们的模型与新模型,以实现平稳切换。微服务可以让你使用像 A/B 测试这样的测试方法准确地评估你的模型。

除此之外,微服务还用于跨渠道的应用,如登录服务、通知解决方案、旅游和酒店预订服务等。Airbnb、亚马逊、易贝、可口可乐、Twitter 和网飞等大公司是微服务的主要采用者。

原料药的使用

API 无处不在,从 IT 和软件到金融、医疗保健、教育、零售、天气、社交媒体、旅游和酒店、汽车、娱乐等等。这些使您能够建立端到端连接,以便跨不同的通道查看和交换数据。

让我们进一步了解不同行业如何利用 API:

  • Web 应用程序: Web 应用程序利用 API 将后端数据、系统和功能与面向用户的前端连接起来。企业可以使用适合特定用途的 API 来节省大量开发时间和支出,而不是从头开始创建软件解决方案。他们还可以集成不同的应用程序,以提高生产力和运营效率。
  • 娱乐:像网飞和 Spotify 这样的流媒体服务使用 API 进行内容分发。例如,网飞提供了一个统一的 API——2008 年发布的网飞 API,强调通过其开发者社区构建令人惊叹的应用程序来增强客户体验。
  • 金融:金融机构(如银行)利用 API 来管理和跟踪账户、借记卡和信用卡、交易等。基于 API 的连接方法允许金融机构集成不同的应用程序,并为其合作伙伴和客户提供强大且响应迅速的体验。
  • 零售:使用 API,零售商可以通过让他们更多地参与产品和品牌来改善客户体验。API 为他们提供了一个平台来连接不同的端点,并通过控制交付更高质量的服务。他们可以使用用于端到端交易的 API 和特殊的信息亭来实时处理库存需求。
  • 医疗保健:医疗保健机构可以使用 API 提供更好的患者护理,使整个组织都可以轻松访问数据,让从员工到医生的每个人都了解情况,以便他们能够正确了解患者的需求,并诊断或推荐合适的护理。
  • 汽车:汽车公司,如特斯拉,使用 API 发送软件更新,为安全和效率修补软件,并为第三方解锁护理信息。这样,他们不仅可以改善客户体验,还可以确保他们的软件以最佳性能运行。
  • 旅游和酒店:旅游和酒店预订网站和应用程序使用 API 收集成千上万个目的地、不同城市的酒店、航班、火车、汽车票可用性等信息。他们也这样做来确认预订。使用 API 简化了企业显示数据和确认预订的过程,而不是通过电话或电子邮件与酒店和航空公司进行沟通,这可能需要很长时间才能得到回应。
  • 天气片段:使用 API,公司可以从荆棘党获取天气数据,并向你展示结果,如苹果的天气应用程序,谷歌搜索等。
  • 电子商务: 电子商务网站使用大量 API 来跟踪运输、管理库存、处理支付(如 PayPal API)、社交媒体等等。

微服务与 API:异同

现在你已经知道了什么是微服务 vs API,每一个都有各自独立的组件、用途和优势,是时候让我们面对面地介绍它们了。

类似

首先,让我们看看微服务和 API 之间的相似之处:

  • 微服务和 API 都用于软件开发,目的是在保持质量的同时加速开发、测试和部署。
  • 它们支持基于云的应用程序。
  • 这两种技术都提供了可伸缩性,当您的应用程序变得更加广泛并且将会添加更多的功能时,它们可以支持您的应用程序。
  • 微服务和 API 都为开发应用模块和功能提供了灵活性。
  • 两者都可以通过降低复杂性、出错几率和风险来帮助降低软件开发的费用。
  • 由于它们的分布式性质,微服务和 API 都提供安全性。即使一项服务受到损害,也不会影响其他服务。因此,它有助于数据和其他组织资产的安全。这也有助于满足审计和合规性要求。

差异

微服务是应用程序的构建块,但 API 是绑定基于微服务的应用程序的每个组件的线程。我们来比较一下微服务和 API 在不同的理由下。

  • 微服务架构是一种软件开发模型,它将应用程序划分为更小的组件或服务。另一方面,API 是两个相互通信的应用程序之间的接口或中介。它由帮助消费者使用应用程序底层服务的函数和过程组成。
  • 微服务的组件可以被视为应用程序的“构建块”。您可以将 API 视为负责执行特定任务的“功能块”,例如通过 PayPal API 进行支付处理。
  • 微服务是一个包含多个较小服务的完整架构,而 API 是微服务的一个组件,有助于提高微服务架构的有效性。
  • 微服务架构的组件包括业务逻辑、API、数据访问层和数据库。另一方面,API 的组件是协议、格式、过程或功能以及工具。
  • 微服务有两种类型:无状态和有状态微服务。然而,API 可以是公共的、私有的、伙伴 API、数据库 API、REST APIs、远程 API、SOAP APIs 等等。

微服务和 API 可以协同工作吗?怎么会?

嗯,答案是“是的!”

微服务和 API 可以在一个应用中协同工作。虽然它们可以单独存在,但是在应用程序中一起使用它们可以帮助组织有效地实现微服务架构。

许多公司在部署微服务架构时面临困难,因为他们已经部署了其他架构。此外,集成多个较小的服务并从中受益也是有问题的。

因此,使用 API 实现集成策略对于充分利用微服务架构至关重要。
使用 API,企业除了降低软件开发和部署的复杂性之外,还可以实现微服务提供的全部灵活性和速度。

API 可以轻松构建和管理您的微服务,同时允许这种新模式与传统或遗留系统共存。这样,您就不必一次性丢弃所有的遗留系统,这可能会给组织带来巨大的压力。此外,您可以将您的微服务功能作为产品公开,这有助于增加外部和内部的商业价值。

此外,API 有助于降低在 SaaS 应用程序和遗留系统之间进行点对点集成的 IT 成本。这样,您可以根据业务需求快速添加或删除微服务。他们还规范了流量管理、监控、审计、日志、安全等。,在整个组织中。

因此,将微服务与 API 相结合可以让您实现微服务的所有优点,并限制它们的缺点。

If you want your application to strive, you have to add improved features and functionality to meet customers' needs. 👀Enter, APIs and microservices architecture. 🚀Click to Tweet

摘要

微服务和 API 用于软件开发,两者都为组织提供了大量的好处,如可伸缩性、灵活性、敏捷性和安全性,同时生产出高质量的软件。

然而,许多人混淆了这两者,因为微服务架构中的服务使用 API 进行通信。因此,这场微服务与 API 的战争开始了。

微服务架构是一种软件开发模型,其中应用程序的功能被分解为更小的功能,每个功能都有自己的依赖项和数据。另一方面,API 是允许两个应用程序通信的中介。

事实上,一起使用微服务和 API,而不是比较它们,可以为您的组织带来更多好处。它实际上可以提高您的微服务模型的有效性,同时提升您的应用程序的可扩展性、安全性、合规性需求,并降低成本。

你最近使用了哪些微服务或 API?请在评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

浏览器之战:微软 Edge vs Chrome

原文:https://kinsta.com/blog/microsoft-edge-vs-chrome/

你最喜欢哪个浏览器?

考虑到普通人每天花将近七个小时在互联网上,你很有可能会有所偏好。

对于你们中的大多数人来说,这种偏好将是谷歌浏览器,这是迄今为止最受欢迎的桌面和移动浏览器。

但这能使它成为最好的浏览器吗?

另一个顶级竞争者是 Edge,这是微软首次随 Windows 10 发布的浏览器。

为了找出哪种浏览器是最好的,我们将对微软 Edge 和谷歌 Chrome 进行对比。

T3】

谷歌浏览器概述

世界上最流行的浏览器诞生于 2008 年。在发布之前,Edge 的前身 IE 以 95%的最高市场份额独占鳌头。

谷歌 Chrome 在几年内超越了 ie 浏览器和 Mozilla Firefox,成为市场领导者。如今,它拥有 65.27%的市场份额,而 ie 浏览器的市场份额已经下降到 0.61%。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

A screenshot of global browser market share

全球浏览器市场份额。(来源: 反向链接 )

Chrome 最初是为在 Windows 上运行而构建的,后来发布了适用于 Linux、macOS、iOS 和 Android 的版本。谷歌 Chrome 的大部分源代码都基于 Chromium,这是谷歌的一个免费开源软件项目。这两种浏览器和许多其他浏览器一直在争夺市场份额。

Microsoft Edge 概述

微软在 2015 年随 Windows 10 和 Xbox One 发布了 Edge。Edge 取代微软 IE 浏览器成为默认浏览器,2022 年 IE 将彻底退役。

Edge 最初是基于 HTML 的浏览器,但 2020 年微软发布了基于 Chromium 的新版本 Edge,Chrome 使用的是同一款谷歌开源软件。

Microsoft Edge 适用于 Windows、macOS、Android、iOS 和 Linux。

微软转向 Chrome 使得 Edge 在几个方面比 Chrome 更具竞争力,我们稍后会谈到。

然而,它仍然只有 3.4%的市场份额,因此要赶上 Chrome 还有相当长的路要走。

谷歌 Chrome 和微软 Edge 浏览器的主要特性

在我们深入了解 Chrome 和 Edge 之前,先来快速概述一下它们各自的关键特性。

Chrome 的主要特性

  • 跨设备同步
  • 水平标签
  • 选项卡组
  • 书签
  • 参考书目
  • 浏览器历史记录
  • 扩展ˌ扩张
  • 主题,包括黑暗模式
  • 密码管理器
  • 网站任务管理器
  • 私人浏览

边缘关键特征

  • 跨设备同步
  • 水平和垂直选项卡
  • 收藏夹
  • 收集
  • 浏览器历史记录
  • 扩展ˌ扩张
  • 多个隐私级别
  • 密码管理器
  • 沉浸式阅读器
  • 私人浏览

Edge 与 Chrome 的比较

微软 Edge 和谷歌 Chrome 有很多相似之处。作为竞争对手,微软和谷歌通常不允许两个产品之间的差距持续太久。他们几乎并驾齐驱。你可以用它们私下浏览,无缝网上冲浪,而且清除你在两者上的缓存很简单。

也就是说,有一些不同之处。让我们一个一个地看一下这些特性。

用户界面

如果你习惯了谷歌浏览器,微软 Edge 的用户界面会很熟悉(反之亦然)。例如,您可以在每个窗口中打开多个标签,并且可以将您喜欢的页面加入书签。

差异很小,主要归结于个人偏好。

制表符

默认情况下,Chrome 和 Edge 都将标签页放在屏幕顶部的一行中。

但是,Edge 让您可以选择切换到页面左侧的一行垂直标签。

Microsoft Edge vertical tabs

微软 Edge 垂直标签页。

Chrome 没有相应的内置垂直标签功能。Chrome 网络商店中有一些扩展可以产生类似的效果,但没有一个像微软 Edge 的原生垂直标签那样流畅。

Edge 和 Chrome 也允许你创建标签组。这里没有太大的区别——两种浏览器都允许你为每个组选择一种颜色和名称,并且会自动调整标签,使同一组中的标签相邻。

书签和收藏夹

Chrome 称之为书签,Edge 称之为收藏夹,但概念是一样的。您可以将您最喜爱的页面加入书签,以便以后访问。

这两种浏览器都允许你将这些收藏夹中的一些放在顶部栏中,而将其他的放在一个下拉列表中。您可以将书签或收藏夹组织到文件夹中。

Microsoft Edge 提供了一个名为“收藏”的功能,这是将链接组织成组的另一种方式。您可以将链接、图像或文本副本添加到收藏中。您也可以将笔记添加到您的收藏。

收藏可以发送到 Microsoft Docs、Excel、OneDrive 或 Pinterest。在您的设备上同步收藏。

谷歌也有一个类似的功能,也称为收藏。谷歌收藏不是 Chrome 特有的——你可以从 Edge 轻松访问和添加。

Google 收藏通过允许其他 Google 帐户访问来共享。

主题和黑暗模式

如果你不喜欢 Edge 或 Chrome 的默认外观,你有很多自定义主题可供选择。

Chrome 主题可以从 Chrome 网上商店获得。没有具体的黑暗模式设置,但许多可用的主题是黑暗的。

Dark space theme for Google Chrome

谷歌 Chrome 的黑暗空间主题。

如果您使用的是 Edge,您可以从外观设置页面定制浏览器的外观。选择整体外观是亮、暗还是默认,然后选择一个主题。

您可以在设置中选择 14 种基本颜色主题。如果你想要一些不同的东西,你可以从微软 Edge 商店或 Chrome 网络商店获得一个主题。

沉浸式阅读器

沉浸式阅读器是 Microsoft Edge 独有的功能。它将你正在阅读的页面转换成类似电子书的格式,布局简单,不杂乱。

Chrome 没有沉浸式阅读器。然而,与 Chrome 缺少的大多数功能一样,您可以通过扩展来添加它。

搜索引擎

默认情况下,谷歌 Chrome 使用谷歌作为其搜索引擎,微软 Edge 使用必应。

但是你可以很容易地改变任一浏览器的默认搜索引擎,所以这不应该成为你决定的因素。
T3】

手机版

谷歌 Chrome 和微软 Edge 都有安卓和 iOS 版本。

然而,边缘在手机上并不太受欢迎。虽然 Chrome 在台式机上的市场份额为 68.79% ,在手机上为 63.72%,但 Edge 在台式机上为 8.1%,在手机上仅为 0.1%。

这种差异可能是因为 Edge 是 Windows 电脑的默认浏览器,而 Chrome 是 Android 设备的默认浏览器。

但是哪个浏览器的手机 app 比较好呢?

有一些不同之处。例如,Chrome 允许你在手机应用程序上访问屏幕顶部的菜单和标签,而 Edge 则将其放在底部。总的来说,应用程序的质量是相似的,选择取决于用户的偏好。

表演

让我们来谈谈谷歌 Chrome 和微软 Edge 在速度方面的差异。

微软声称 Edge 刚出来的时候比 Chrome 快 112% 。很难确定这个统计数据有多准确,但网上很多用户都进行了自己的测试,并得出了相同的结论:Edge 比 Chrome 快。

例如, Avast 测试了许多浏览器,发现 Edge 运行速度比 Chrome、Firefox、Opera 和 Vivaldi 都快。

Chrome 也有大量消耗资源的名声。

汤姆的指南对此进行了测试,发现 Chrome 在各种测试中使用了更多的 RAM。比如打开 60 个标签页,Chrome 用了 3.7 GB,Edge 只用了 2.9。

备份和同步

直到最近,Edge 的同步功能还很有限。例如,没有跨设备同步历史的选项。

然而,微软在 2021 年开始推出这些功能。Edge 现在可以同步 Chrome 可以同步的所有内容,包括:

  • 书签/收藏夹
  • 扩展ˌ扩张
  • 历史
  • 设置
  • 打开标签
  • 密码
  • 地址
  • 支付方式

使用 Edge,您必须在设置中手动启用跨设备同步。默认情况下,Chrome 会同步你的设备,但如果你愿意,也可以关闭它。

启用同步是确保在出现问题时备份您的偏好设置和个人收藏的最佳方式。

跨设备可访问性

谷歌 Chrome 可以在 Windows、macOS、iOS、Android、Linux 和 Chrome OS(Chrome book 上的操作系统)上运行。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

微软 Edge 可以在除 Chrome OS 之外的所有平台上运行。

如果你想在 Chromebook 上安装 Edge,可以使用 Linux 版本的浏览器。

安全性和隐私

浏览器是恶意软件最常见的目标之一。 29.13% 对应用的 PC 漏洞攻击攻击浏览器。

Distribution of exploits that attack applications according to Kaspersky

分布攻击应用的漏洞。(来源: 卡巴斯基 )

选择具有强安全特性的浏览器至关重要。

除了防止网络攻击之外,浏览器还应该有隐私设置,让用户可以控制如何使用他们的数据。

让我们先澄清一下:Chrome 和 Edge 都不是市场上最安全或最隐私的浏览器。如果隐私是你的优先考虑,像 Tor,Brave 和 Firefox 这样的浏览器是更好的选择。

但 Edge 和 Chrome 确实有一些有用的安全功能。

Edge 的隐私设置更容易理解和管理。您可以在三种级别的跟踪预防中进行选择,并查看被阻止的跟踪器列表。

Tracking prevention settings on Microsoft Edge

微软防边缘跟踪设置。

Chrome 只允许你向网站发送“请勿追踪”的请求。这两种浏览器都允许你从你访问的网站管理 cookies。

在针对恶意软件和网络钓鱼的安全性方面,微软 Edge 通过 Windows Defender SmartScreen 保护用户。Chrome 还内置了反恶意软件功能。这些都很有效,如果保持更新,任何一种浏览器都应该相对安全。

Chrome 以快速推出更新而闻名,这意味着恶意软件的任何漏洞都可以快速修复。Edge 也定期更新,但没有 Chrome 那么快。

谷歌收集的数据比微软还多,而且正面临一场诉讼指控谷歌收集用户匿名浏览的数据。

扩展ˌ扩张

直到最近,Edge 和 Chrome 在浏览器扩展方面还没有可比性。

Chrome 的扩展商店要好得多,有超过 150,000 个扩展可以增强您的体验。这包括从允许你暂时屏蔽网站的扩展到允许你将网络上的内容保存到脸书的扩展。

Edge 提供了一个较短的扩展列表(称为附加组件)。

但那已经不重要了。

既然 Edge 是基于 Chrome 的,你就可以在 Edge 上使用谷歌 Chrome 扩展了。只需在 Edge 中打开 Chrome 网络商店,“添加到 Chrome”按钮就会将扩展添加到微软 Edge 中。

给 Chrome 添加微软 Edge 插件就没那么简单了。你必须下载扩展的。crx 文件,Edge 并不容易,并重新加载到 Chrome。

幸运的是,在微软的商店里没有什么东西是你在 Chrome 网上商店里找不到的。

无论你喜欢使用哪种浏览器,你都有成千上万的扩展可用。

集成

Chrome 是庞大的谷歌生态系统的一部分,包括 Gmail、谷歌日历、谷歌驱动、谷歌地图等等。

需要一个给你带来竞争优势的托管解决方案吗?Kinsta 为您提供了令人难以置信的速度、一流的安全性和自动伸缩功能。查看我们的计划

许多谷歌工具与 Edge 配合使用也很好,尤其是现在可以添加 Chrome 扩展了。

然而,它与谷歌生态系统的整合在一些方面给了 Chrome 优势。

例如,两种浏览器都允许你翻译其他语言的页面,但 Chrome 使用的是谷歌翻译,这是一个比 Edge 的微软翻译工具优越得多的工具。

如果你使用 Google Drive,你可以直接从 Chrome 搜索栏中搜索你的驱动器中的项目。

微软 Edge 与微软产品进行了集成。最值得注意的是,你现在可以在 Edge 中打开和编辑微软 Office 文档。

其他功能

这两种浏览器都有更多的功能,尤其是当您从扩展中添加功能时。

但是我们想提一些你可能不知道你可以用浏览器做的更酷的事情。

Microsoft Edge 优惠券查找器

如果你使用浏览器进行网上购物,Edge 有一项功能适合你。

转到销售产品的页面,点击搜索栏中的蓝色购物图标。这将让您知道页面上的产品是否有优惠券代码。

Microsoft Edge coupon finder

微软 Edge 优惠券查找器。

到目前为止,Chrome 没有任何东西可以与这个功能相提并论。

铸造

Chrome 可以让你将你的浏览器或者你的整个桌面投射到 Chromecast 设备上。例如,如果您将 Chromecast 设备连接到电视的 HDMI 端口,您可以将手机或笔记本电脑中的视频传输到电视。

Edge 甚至有更多的选角选择。你可以向任何支持 Miracast 或 DLNA 的设备播放媒体,甚至可以向 Chromecast 播放。

任务管理器

Chrome 和 Edge 都有内置的任务管理器,可以让你监控标签和扩展的资源使用情况。

Chrome 和 Edge 哪个浏览器好?

查看 Chrome 与 Edge 的旧对比,他们通常会指出 Chrome 做得好,但 Edge 缺乏的功能。

但是剩下的不多了。

微软一直在努力将 Chrome 的最佳功能添加到 Edge 中。自从 Edge 转到 Chromium 之后,浏览器都非常相似,哪个更适合你是个人选择。

但是,在少数地区,边有边。如果你优先考虑速度或低资源消耗,你应该选择微软 Edge 而不是 Chrome。
T3】

微软 Edge 和谷歌 Chrome 的替代品

Chrome 和 Edge 并不是你唯一的浏览器选择。

以下是微软 Edge 和谷歌 Chrome 的五大替代品——有些你听说过,有些你可能没有。

火狐浏览器

Mozilla Firefox 的市场份额接近微软 Edge,是最受欢迎的非 Chrome 浏览器之一。它有一个与 Chrome 或 Edge 非常相似的功能集。

许多人选择 Firefox 是因为它是开源的,由一个非营利组织所有,而不是像谷歌或微软这样的大公司。也可以安装 Firefox 扩展来增强浏览器。

它的隐私功能比 Chrome 或 Edge 要好。

与 Edge、Chrome 和列表中的大多数其他浏览器不同,Firefox 不是基于 Chrome 的,而是基于其名为 Gecko 的引擎。

突岩

Tor 擅长匿名浏览。它通过世界各地的中继反弹数据,所以没有人可以跟踪你的位置或浏览活动。它拥有丰富的安全和隐私功能,远远超过 Chrome 和 Edge 提供的功能。

但是 Tor 应该只在你对隐私很认真的情况下才是你的选择,因为它的性能还有待改进。网站经常加载缓慢或阻塞足够的元素来正常运行。

Vivaldi

像谷歌 Chrome 和微软 Edge 一样,Vivaldi 也是基于 Chromium 的浏览器。

Vivaldi 的突出之处在于用户界面的定制。例如,您可以将标签放在浏览器的顶部、底部、左侧或右侧。你可以设计你自己的主题和移动 UI 元素。你甚至可以选择你的 UI 元素是尖角还是圆角。

一个巧妙的技巧是你可以并排查看多个标签。例如,您可以在一个选项卡上做笔记,而在另一个选项卡上进行视频会议。

歌剧

Opera 不是最流行的浏览器,但它是最老的浏览器之一,于 1995 年发布。

它基于 Chromium,拥有和其他 Chromium 浏览器一样多的功能。这是一个比 Chrome 或 Edge 更好的隐私选择,因为它内置了广告拦截器和虚拟专用网。

一个方便的功能是为 Facebook Messenger 和 WhatsApp 等聊天应用添加快捷方式。

勇敢的

勇敢者非常注重隐私。它最独特的特点是它的广告网络和勇敢的注意力令牌(BAT)。

浏览器会屏蔽广告,并向您显示来自其自身网络的不同广告。观看广告,你会得到蝙蝠,一种可以返还给创作者的加密货币。

微软 Edge vs Chrome🥊💥哪一个会胜出?

摘要

几年前,微软似乎不可能再次成为互联网浏览器领域的有力竞争者。

Edge 要赶上谷歌 Chrome 还有很长的路要走,但它是一款优秀的浏览器,市场份额不断增长。如果你在转换到 Chromium 之前还没有尝试过,那就值得再看一眼!

当然,谷歌 Chrome 非常受欢迎是有原因的,谷歌肯定会不断提高性能,并更新新功能。

想知道你的其他选择吗?了解六种最安全的浏览器。T3】


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

微软 Teams vs Slack:哪个协作 App 更好?

原文:https://kinsta.com/blog/microsoft-teams-vs-slack/

2019 年,全球团队协作软件市场规模达到95 亿美元

随着新冠肺炎局势导致向远程工作的重大转变,协作和聊天工具比以往任何时候都更加重要。

在这个不确定的时代,企业都在争先恐后地实施协作软件,以保持高生产率。

正如你可能已经知道的,除了替代品之外,这个领域的两个明显的市场领导者是 Slack 和微软团队。

这是一场激烈的市场竞争——下文将详细介绍——它超越了用户数量,因为 Slack 在 2020 年在欧洲对微软提起了竞争投诉,指控微软“非法将其团队产品捆绑到其市场主导的办公生产力套件中”。

简而言之:这是两家公司之间的博弈。

暂且将法律纠纷放在一边,重新关注生产力,这两个选项中哪一个对您的企业来说是最佳选择?

在本帖中,我们将比较微软团队和 Slack,并深入探讨他们的功能、定价、用户体验和市场份额,以帮助您回答这个关键问题并选出赢家。

微软团队与 Slack —市场份额

如果你看看几年前协作软件领域的市场份额,就会发现情况完全不同。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

随着微软团队在企业客户中的增长,Slack 明显处于领先地位,但增长速度并不快,Slack 对此感到担忧。2022 年,就不一样了。

2019 年,微软团队的日活跃用户数量超过了 Slack 在 7 月份达到了 1300 万。

microsoft teams slack users

Microsoft Teams vs Slack users 2014–2019 (Source: Statista.com)

新的增长率没有显示出放缓的迹象。

与新冠肺炎相关的在家订单导致了更多的远程工作,据报道,2020 年上半年微软团队的用户数量飙升至 7500 万。

当然,Slack 也在增长,但速度不一样了。

微软团队会干掉 Slack 吗?

Slack 有输掉协作市场之战的危险吗?让我们检查数据。

微软团队正在通过大型组织、学校、政府工作人员及其现有的 Office 365 客户群增加大量用户。

如果你很懒散,这是一个非常可怕的图表:

slack microsoft teams technology penetration enterprises

Microsoft Teams and Slack enterprise market share 2019

截至 2019 年底,微软在企业和政府机构中明显占据领先地位,65%的受访者使用这一优势。

但 Slack 仍然是初创企业、开发人员和其他懂技术的年轻员工中的明显领导者。

如果你是微软团队,这是一个非常可怕的图表:

slack microsoft teams technology penetration startups

Slack Microsoft Teams startup market share 2017–2019

微软在这个细分市场进展甚微,Slack 也没有显示出任何迹象表明它会在短期内放松对初创公司的控制。

微软可能有更多的用户,一次从大公司招募数千人,但受资助的初创公司的前卫技术人员仍然青睐 Slack。所以看起来办公室沟通和团队合作的战斗还没有结束。

With #remotework in the cards for the foreseeable future, tools like @SlackHQ and @MicrosoftTeams are essential for everyday life. 🌎 💻 But which one should your team use? Read on for the full comparison...⬇️Click to Tweet

Microsoft 团队与时差—功能概述

| 特征 | 微软团队 | 松弛的 |
| 渠道(团队) | ✔ | ✔ |
| 私人信息 | ✔ | ✔ |
| 用户数量 | 免费计划最高 500k | 无限的 |
| 无限消息 | ✔ | ✔ |
| 全面的邮件搜索 | ✔ | ✔(免费计划最多 10,000 条消息) |
| 文件共享 | ✔ | ✔ |
| 访客访问 | 即使是付费计划,每个帐户也仅限 5 英镑 | 与外部用户就付费计划进行无限协作 |
| 屏幕共享 | ✔ | ✔(不包含在免费计划中) |
| 视频和音频通话(一对一) | 无限的 | 无限的 |
| 视频会议 | 多达 250 名付费用户 | 最多 15 个付费用户 |
| 网络、桌面和移动应用 | ✔ | ✔ |
| 快捷方式和生产力工具 | (40 多个桌面应用程序快捷方式) | (50 多个桌面应用程序的快捷方式,大多数也可用于 web 应用程序。) |
| 机器人和工作流工具 | ✔聊天机器人(仅付费)和第三方聊天机器人 | ✔·懒汉机器人 |
| 集成 | 472 款应用可供选择 | 多达 10 个免费计划,有 2000 多个应用程序可供选择 |

微软团队和 Slack 都提供了一个全面的功能列表,可以帮助您的团队协作并完成更多工作。

私人和公共渠道(或团队)消息传递、可搜索的消息历史、视频电话会议、屏幕共享、文件共享(通过 SharePoint 等 Office 365 套件的权限控制)等功能有助于公司紧密合作,即使他们实际上不在同一个办公室

就功能而言,两种解决方案势均力敌。Slack 在某些领域有优势,而微软团队在其他领域有优势。

一个关键的区别是,微软团队与外部团队的协作非常有限。即使是付费计划,它也有五个用户的限制,除非你购买更多的许可证,Slack 允许付费计划的无限外部合作。

微软团队提供更强大的视频会议。它可以支持多达 250 个用户的视频会议或多达 10,000 人的现场活动(使用团队、Microsoft Stream 和 Yammer 的组合)。

microsoft teams live events

Microsoft Teams live events

这展示了团队的真正实力 Office 365 套件的其余部分支持并扩展了其功能。然而,许多团队独有的特性只对大型企业或组织有用,所以这不是一个客观的优势。

微软团队 vs Slack —比较自由计划

但是,当你仔细观察微软团队和 Slack 的免费计划时,哪一个是最好的呢?

首先,Slack 为所有计划提供无限的用户和消息,微软团队提供高达 50 万(大多数公司基本上是无限的)和无限的消息。

一个很大的区别是 Slack 只允许你在免费的工作区中搜索多达 10,000 条存档的消息。

Slack 10,000 messages prompt

Slack 10,000 messages prompt

微软没有人为的限制,让你自由地搜索你的整个信息历史。

免费的微软团队计划还包括屏幕共享,而你需要升级到付费计划才能在 Slack 中使用该功能。

团队视频通话和小规模视频会议也是微软团队免费版的一部分。但是使用 Slack,你只能和免费版进行一对一的音频和视频通话。

当然,许多公司已经在视频会议中使用了 Zoom 这样的独立解决方案,所以这并不妨碍交易。

总的来说,微软团队的免费计划比 Slack 拥有更多的解锁功能和更少的限制。

但除非你的团队严重依赖屏幕共享或视频通话,否则 Slack 的用户体验不会感觉受到限制。

微软团队 vs Slack —定价

是时候深入了解微软团队与 Slack 付费计划和定价了。哪个付费方案最超值?

让我们先来仔细看看 Slack 的计划。

slack plans

Slack plans and pricing

Slack 的基本计划“标准”起价为每个用户每月 6.67 美元。

它取消了对可搜索信息、应用程序和集成以及视频通话的限制。它还包括每个用户 10GB 的文件存储,而不是工作区总共 5GB 的文件存储。

它还允许您的工作区添加客人和外部合作者,非常适合与合作伙伴和客户密切合作的机构顾问

您可以为邮件和文件设置自定义保留策略,以确保符合任何行业或当地法规。

最后,它使“用户组”成为可能,这是一种在渠道之外对用户进行分组的方式,可以向整个团队或部门发送消息。

“Plus”每个用户的费用为 12.50 美元,包括更高级的合规性和安全性选项、优先 4 小时响应时间支持以及每个用户 20 GB 的存储空间。

接下来,让我们仔细看看微软团队的计划和定价。

请注意,没有专门针对微软团队的付费计划,而是包括团队高级版本和其他应用程序的微软 365 计划。

microsoft teams plans

Microsoft Teams plans and pricing

微软的付费计划从“微软 365 商业基础”开始,每个用户每月 5 美元,用于收集他们的协作工具,包括团队和 SharePoint。该计划不包括访问 Office 365 套件的桌面版本,如 Word 和 PowerPoint。

您可以安排和记录会议,为每个用户提供 1TB one drive 存储,以及单点登录和强制多重身份验证安全功能。

最便宜的层还包括用于管理用户和合规性的管理工具。

“微软 365 商业标准版”定价为 12.50 美元,不影响可用的团队功能。相反,它让您的团队能够访问 Word、Excel 和 PowerPoint 的完整桌面版本。

微软最便宜的计划比 Slack 的略便宜,但每个用户只需 150 美元。价格优势不足以使其成为小型企业的明显选择。

第二层计划的费用相同,为 12.50 美元,优势是两种计划都有更先进的功能。

如果你的公司已经在购买微软 365 套件,真正的价格优势就来了。商业和企业计划已经包括了对高级团队的访问。

因此,如果你的公司已经为微软 365 付费,你可以不用支付更多就能获得 Teams 的高级版本。

Microsoft 团队与时差—用户界面

接下来,让我们仔细看看 UI。具体来说,我们将考虑新用户从一无所知到有效地使用平台来协作和管理项目有多容易。

Slack 的用户界面圆滑,已经成为行业标准。

不仅如此,近年来,Slack 加倍努力创建一个自然的入职流程,为新用户提供一步一步的教程。

Onboarding experience with Slack

Onboarding experience with Slack

当然,即使没有指南,入门也没什么复杂的。您可以在“人员”选项卡中管理新用户并向您的工作区添加新用户。

slack manage people

Slack workspace

潜在用户将通过电子邮件收到邀请。如果他们已经有一个 Slack 帐户,您的工作区将被添加到他们现有的帐户中,无需创建或记住新密码。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

您可以通过点击侧边栏菜单中的“添加频道”链接(在频道部分)轻松添加一个松弛频道

slack create channel

Slack workspace — create a channel

向您的团队发送消息就像进入频道并开始输入一样简单。您可以使用@和他们的用户名通过将频道中的消息发送给特定的人(或多人)。

这将确保 Slack 通知他们您发送给他们的消息。

slack send message

Slack mentions

Slack 还有很多,我们将在下面关于机器人和快捷方式的章节中讨论 UI 的其他部分。

接下来,让我们仔细看看微软团队的用户界面。

大多数 Slack 竞争对手都会模仿,微软团队也不例外。用户界面的触感和感觉没有太大的不同。

微软团队在注册后以文档和教程视频的形式提供一些指导。但不包括 Slack 这样的循序渐进的互动教程。

microsoft teams user interface

Microsoft Teams’ UI

“团队”取代了 Slack 中的“频道”菜单部分。每个团队可以有不同的渠道来保持不同项目的沟通(Slack 的主要卖点之一)。

如果你以前用过 Slack,当你第一次打开它时,频道并不是 UI 提醒你 Slack 的唯一方式。当你点击一个按钮或菜单时,它会打开一个灯箱,而不是一个全新的页面。

例如,您可以通过单击任何团队页面上的“创建更多频道”按钮来创建新频道。

microsoft teams create channel

Creating a new channel in Microsoft Teams

和 Slack 一样,你也可以@某人来确保他们注意到你的消息。

microsoft teams mentions

Microsoft teams message

创建拥有自己渠道的多个团队的能力对大型公司和组织很有帮助。

这两个工具都很容易使用,但 Slack 在一步一步的教程和通用 UX 方面稍有优势。

微软团队与懈怠——捷径与生产力

接下来,我们来看看哪个工具的键盘快捷键和其他生产力工具最好。

Slack 是一个生产力创新者,几乎任何事情都有捷径和生产力诀窍。甚至 Slack 的 web 应用程序也有一个完整的键盘快捷键列表,你可以用它来提高你的工作效率。

slack shortcuts

Keyboard shortcuts in Slack

您可以通过在 Mac 上按下 Command + /和在其他电脑上按下 CTRL + /来切换此列表。

我们最喜欢的一些快捷键是:

  • 只需按↑键即可编辑已发送的信息。
  • 通过按 CTRL(⌘) + SHIFT + A 阅读所有未读邮件
  • 用 ctrl(⌘+shift+s 查看所有带星号的邮件
  • 用 ALT +左键单击(鼠标)将任何邮件标记为未读。
  • 使用 SHIFT + ALT (Option) + ↓跳转到最新的未读邮件。

除了快捷方式,Slack 还有高级搜索选项,可以帮助你更快地找到你想要的信息。

例如,您可以通过带有“有:”搜索参数的表情符号来查找消息。如果您的团队使用特定的表情符号来标识已达成的交易或优先信息,这将非常有用)

如果你已经是用户,但还没有掌握 Slack,一定要看看我们关于如何使用 Slack 的指南,包括 18 个鲜为人知的生产力诀窍

厌倦了 WordPress 的问题和缓慢的主机?我们提供世界一流的支持,由 WordPress 专家提供 24/7 服务和超快的服务器。查看我们的计划

当然,微软团队也紧随其后,试图实现类似的提高生产率的快捷方式,但它们不像 Slack 的一些更好的方式那样有组织或直观有用。

microsoft teams shortcuts

Microsoft Teams’ keyboard shortcuts

请注意,大多数快捷方式只是打开一个特定的标签,而不是帮助您快速完成一项基本任务。

我们错过了快捷方式,比如用一个键编辑最近的消息,轻松地将消息标记为未读,以及类似的可以加快我们工作速度的方式。

就快捷方式和生产率而言,Slack 是明显的赢家。

微软团队 vs Slack —机器人和工作流

在本节中,我们将深入探讨机器人和每种工具可能实现的高级工作流。

Slack 值得信赖的“Slackbot”自动包含在每个工作空间中。

slack slackbot

Slack Slackbot

您可以询问如何使用时差、设置提醒等问题。一般来说,Slackbot 只是让你的懈怠生活更轻松。好机器人。🤖

Slackbot 很聪明,有许多有用的特性,可以帮助你立即自动化简单的工作流程。它还具有许多不同的集成功能,可以帮助您自动化基本的工作流程。

例如,您可以设置与项目相关的基本问题的自动答案,如“X 的截止日期是什么?”它还集成了大多数任务管理应用程序,如 Asana、TrelloPipefy 。例如,通过这些应用程序,您可以安排自动提醒和更新。

总而言之,对于任何不喜欢手动复制粘贴信息的专业人士来说,Slackbot 都是一个值得信赖的盟友。

microsoft teams add bot

Adding bots to Microsoft Teams

另一方面,微软团队却没有同样的聊天机器人。你可以从一个备选列表中选择,但其中许多只完成第三方应用程序的特定任务。

幸运的是,有像 Workbot 这样的替代品可以帮助你建立先进的自动化工作流程。它与多个应用程序通信并整合数据,如 Slackbot。

虽然 bot 的功能相当,但如果你在微软团队中安装了正确的一个,那么使用 Slack 的 Slackbot 会容易得多。

微软团队 vs Slack —集成

Slack 拥有超过 2,000 个用于扩展其功能的应用程序,在集成和应用程序方面是明显的领导者。

此时,AppSource 商店中有 530+微软团队相关的应用和集成可用。但是,如果你的公司已经使用 Office 365,你可能会认为微软团队在这方面有优势。

没那么快。

slack microsoft office 365 integrations

Slack’s Office 365 integrations

Slack 为所有重要的 Office 365 应用程序集成了应用程序,包括 Outlook、日历、OneDrive 和 SharePoint。

Slack 还有 2000 多个其他应用和集成,包括整个谷歌工作空间。

slack apps

Slack apps

有了大量不同的集成,你必须让 Slack 也有优势。

如果你需要和 Slack 一起使用的工具,看看我们用来成长的 40+ SaaS 产品

微软团队 vs Slack —安全性和合规性

Slack 和微软团队都为他们的所有计划提供了基本的安全特性,如双因素认证

你可能会认为,作为以企业为中心的业务,微软是至高无上的,但 Slack 在过去几年里也改进了它的游戏。

slack security

Slack security

事实上,Slack 符合大多数基本的 ISO 认证,您还可以请求符合 HIPAA 的特定配置的工作区(HIPAA-compliance 仅适用于企业计划。)

这使得 Slack 成为大多数行业中寻找协作应用程序但担心安全性或合规性的公司的合适选择。

然而,通过其本地集成,微软团队提供了稍好的访问控制、信息管理和安全性。

microsoft teams security

Microsoft Teams’ information architecture

IT 经理还可以使用许多高级管理选项来确保微软团队遵守公司的内部政策和法规。

很难说谁是明显的赢家,因为两家公司都非常重视安全性和合规性。

需要注意的一点是,虽然 Slack 的管理工具是为 Plus 和 enterprise 计划保留的,但即使是基本的 Microsoft Teams 计划也包含了大部分功能。

哪种工作流协作产品最适合您的企业?

如果你已经走了这么远,你可能只剩下一个问题了。

微软团队和 Slack 哪个协作工具最适合我?

答案取决于您当前的场景和需求:

如果你的公司已经在使用 Office 365 并为其付费,那么微软团队可能会有意义。它提供了许多与 Slack 相同的功能,而专业计划不会让你额外花费任何东西,因为你已经为此付费了。

但如果你不这样做,就没有理由做出改变。

如果你只是想要一个直观的聊天工具,具有强大的生产力功能和集成,Slack 是一个可靠的选择。

总的来说,两种解决方案的结果相当一致,Slack 在 UX、机器人和生产率方面略有优势。

微软团队有一个稍微更通用的免费计划(有屏幕共享和视频会议),它的基本计划更便宜。

The great #remotework matchup: @SlackHQ 🥊 vs @MicrosoftTeams 🥊. Which one has your vote? Click for the full analysisClick to Tweet

摘要

就活跃用户的绝对数量而言,微软团队显然已经取代 Slack 成为市场领导者,并迅速成为企业间首选的协作平台。

另一方面,Slack 仍然是更具创新性和易用性的工具,这使它成为初创公司和较小公司的中流砥柱。

Slack 有更多的集成,一个更好的机器人,和略好的可用性。微软团队稍微便宜一点,提供稍微好一点的免费计划,并且与 Office 365 工具原生集成。

在微软团队和 Slack 之间,哪个工具是你的企业的正确选择?

这完全取决于你是否使用 Office 365 和/或你的团队对其中一个平台的经验。

这两者之间你更喜欢的沟通工具是什么?在评论里告诉我们吧!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何将你的网站从 Joomla 迁移到 WordPress(9 个步骤)

原文:https://kinsta.com/blog/migrate-joomla-to-wordpress/

凭借一亿的下载量,很多人对 Joomla 平台感到满意。然而,在某些时候,你可能需要迁移到一个更强大、更灵活的系统,比如 WordPress。

幸运的是,从 Joomla 迁移到 WordPress 是可能的。事实上,使用正确的工具,移动你的整个站点可以是一种无压力的体验。

在这篇文章中,我们将探究你为什么想从 Joomla 升级到 WordPress。然后,我们将向您展示如何通过九个简单的步骤来规划和完成这一迁移。

我们开始吧!

T3】

查看我们的视频指南从 Joomla 迁移到 WordPress

为什么你想从 Joomla 迁移到 WordPress

Joomla 是一个流行的内容管理系统(CMS) 。该 CMS 针对搜索引擎进行了优化,拥有 70 多个翻译包,并内置了对多语言内容管理的支持:

Joomla website

逐鹿!主页。

虽然 Joomla 确实有它的优势,但它没有 T2 的 WordPress 平台那么用户友好。特别是,Joomla 仪表板可能会因其菜单、子菜单和设置的数量而令人困惑:

Joomla dashboard

逐浪仪表板。

此外,尽管 Joomla 确实有一些内容管理特性,但这些对于博客来说并不理想。例如,Joomla 没有博客文章的特定页面类型。如果你是一个博客写手,从 Joomla 迁移到 WordPress 几乎肯定会让你受益。

准备好从 Joomla ➡️ WordPress 进行切换了吗?从这里开始😌 点击推文

迁移到 WordPress 之前需要考虑的事情

在你从 Joomla 迁移到 WordPress 之前,你需要做一些事情。首先,你的新 WordPress 站点需要一个域名和主机。

你的 Joomla 网站可能已经有这些了。根据你的提供商,你可以在你的 WordPress 站点上重复使用这些资源。然而,为了获得最佳效果,我们建议避免更便宜的虚拟主机,而是投资于管理的 WordPress 虚拟主机

托管 WordPress 主机提供商可以为你完成大部分繁重的工作。他们甚至可以帮你安装 WordPress 软件——当你是这个平台的新手时,这是完美的选择。

一旦你开始运行,一个管理良好的提供商将处理你的网站的日常维护和优化。因为主机是 WordPress 的专家,所以它应该可以回答任何问题,解决你在这个新平台上遇到的任何问题。

即使你已经熟悉 WordPress,一个托管的合作伙伴也可以帮助减轻你的维护负担。这让你可以专注于更高价值的任务,比如发展你的新 WordPress 网站。

专注于 WordPress 的供应商也更有可能提供专门为该 CMS 设计的工具。

例如, Kinsta APM 是我们专门为 WordPress 开发的定制性能监控工具。它对于构建高性能、安全的网站非常有价值:

Kinsta APM tool

金斯塔 APM。

如果你已经有了一个托管账户,迁移到一个新的提供商并不复杂。在 Kinsta,我们从一长串流行的 web 主机中提供免费迁移:

Free migrations to Kinsta

金斯塔提供免费移民。

我们将这些免费迁移包含在我们所有的托管计划中。请填写一份简单的表格,我们的专家团队会与您联系,帮助您安排搬家。

如何用 9 个步骤从 Joomla 迁移到 WordPress

WordPress 在 CMS 市场占有 60.8%的份额,这是它如此受欢迎的原因。如果你确信是时候升级了,以下是如何通过九个简单的步骤迁移到 WordPress 的方法!
T3】

步骤 1:设置 WordPress

众所周知,WordPress 易于安装。然而,你可以通过与托管的 WordPress 主机提供商合作,使安装过程更加简单。

如果你是 Kinsta 的客户,你可以通过登录你的 MyKinsta 仪表板来设置 WordPress。然后,在左侧菜单中选择站点:

MyKinsta dashboard

麦金塔仪表盘。

在右上角,点击添加站点。然后,选择安装 WordPress :

Install WordPress in MyKinsta

在 MyKinsta 中安装 WordPress。

这样做可以安装一个功能齐全的 WordPress 站点,供你立即使用。按照屏幕上的说明操作,几分钟后你就会有一个新的网站。

不幸的是,WordPress 本身不支持 Joomla 迁移。好消息是你可以通过使用一个迁移插件来添加这个功能,比如 FG Joomla to WordPress

使用这个插件,你可以很容易地将 Joomla 网站的所有部分、类别、文章、媒体和标签迁移到 WordPress:

FG Joomla to WordPress plugin

FG Joomla to WordPress。

登录你的 WordPress 仪表盘,导航到插件>添加新的来安装这个插件。你现在可以搜索 FG Joomla to WordPress 插件。当此项出现时,点击安装>激活

步骤 2:备份你的 Joomla 站点

在迁移 Joomla 网站之前,最好创建一个备份。这样做可以确保如果您在迁移过程中遇到任何问题,您不会丢失所有的 Joomla 内容。

您可以使用 Akeeba 备份扩展来备份您的 Joomla 站点:

Akeeba Backup

阿克巴备份。

安装完这个扩展后,从 Joomla 的左侧菜单中选择主页仪表盘。您的通知部分现在应该包含一个新的最新备份选项:

Joomla dashboard

逐浪仪表板。

点击此通知。如果这是你第一次访问 Akeeba 备份设置,那么 Joomla 会要求你配置这个扩展。

Akeeba Backup 可以为您处理所有设置,因此在出现提示时选择配置向导:

Akeeba Backup configuration

阿基巴备份配置。

配置向导现在将通过在您的服务器上运行一系列基准来确定您站点的最佳备份设置。测试完成后,点击立即备份:

Benchmarking

标杆。

现在,您可以命名该备份并添加注释。当您对输入的信息感到满意时,点击立即备份:

Click the Backup Now option

点击立即备份选项。

现在已经配置了这个扩展,您可以随时创建备份。在 Joomla 仪表盘中导航至组件> Akeeba 备份>立即备份:

Create a backup

创建备份。

虽然这不像复制你的 Joomla 内容那样重要,但你可能想在继续之前备份你的 WordPress 网站。这将为您提供一张白纸,如果在迁移过程中出现问题,您可以恢复它。

Kinsta 客户可以通过登录他们的 MyKinsta 帐户按需创建备份。在这里,您可以选择有问题的站点,然后选择备份:

Creating backups in MyKinsta

在 MyKinsta 创建一个备份。

然后,选择手动选项卡,接着是现在备份。这个程序将会为你的 WordPress 网站创建一个完整的备份。

步骤 3:迁移 Joomla 内容

在你的 WordPress 仪表盘中,导航到工具>导入。现在找到 Joomla (FG) 选项,点击其附带的 Run Importer 链接:

Run Joomla FG

跑 Joomla FG。

随后的屏幕显示了站点底层数据库中的所有类别、帖子、页面、媒体和标签。即使是一个新的 WordPress 安装也可能包含一些内容,比如一个默认类别和一些示例网页:

Import Joomla FG settings page

导入 Joomla FG 设置页面。

大多数时候,您会希望将 Joomla 内容导入到一个空站点中。出于这个原因,我们建议使用清空 WordPress content 按钮来清除历史。

请注意,这样做会永久删除你的 WordPress 网站上的所有内容,并且没有机会恢复。如果你想保留这些类别、文章、页面、媒体或标签,你必须创建一个备份。

当你准备好继续时,选择删除所有 WordPress 内容。然后,点击清空 WordPress 内容

几分钟后,插件将显示一条消息,确认它已成功清除您的站点:

Remove all WordPress content

清除所有 WordPress 内容。

您的帖子、页面、媒体和标签现在应该为零。WordPress 默认有一个未分类的类别。因此,你的类别积分将保持不变,即使删除了你所有的内容。

步骤 4:输入 Joomla 数据库参数

下一步是输入 Joomla 数据库参数。在一个新的标签,登录到您的 Joomla 帐户。在左侧菜单中,选择系统:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Joomla database parameters

Joomla 数据库参数。

然后,点击全局配置。您现在可以选择服务器选项卡:

Select appropriate server in Global Configuration tab

在全局配置选项卡中选择合适的服务器。

接下来,滚动到数据库设置。这个部分包含您的主机、数据库用户名、数据库密码、数据库名称、数据库表前缀:

Database settings

数据库设置。

这些值对于迁移你的数据是必不可少的,所以切换到你的 WordPress 仪表盘,滚动到 Joomla 网站参数部分。找到以下字段:Joomla 直播网站的 URL。在此字段中,输入您的 Joomla 网站的 URL,并选择通过 HTTP:

URL of the live Joomla website.

直播 Joomla 网站的网址。

现在,点击测试媒体连接。这样做将检查导入过程中的任何潜在问题。

假设您通过了测试,那么您需要提供关于 Joomla 数据库的所有信息。这意味着输入您的主机名、数据库名、用户名、密码和 Joomla 表前缀。

你可以从 Joomla 仪表板上复制每一条信息,并粘贴到 WordPress 的相应字段中:

Copy and paste info from the Joomla dashboard

从 Joomla 仪表盘复制并粘贴信息。

除了您的数据库密码之外, Joomla 全局配置页面还显示您的数据库信息。如果您不记得这个密码,您可以使用 FileZilla 等客户端,通过文件传输协议(FTP) 连接到您的服务器。

然后,导航到你的 Joomla 网站的根文件夹。您将在您的configuration.php文件中找到数据库密码。

将这些数据库参数输入 WordPress 后,点击测试数据库连接。WordPress 现在将检查这些参数是否有效。如果连接成功,您就可以导入内容了。

步骤 5:导入 Joomla 内容

在你的 WordPress 仪表盘中,滚动到行为部分。它包含您将用于配置导入的所有设置:

Behavior section in tools

工具中的行为部分。

现在,您可以选择要迁移的内容。它包括存档的文章、媒体和元关键字。

您还可以配置如何处理您站点的媒体。例如,您可以选择仅导入特色图像。通过选择,您可以加快迁移过程。

此时,您还可以选择迁移 Joomla 站点的介绍文本。这一小段用整篇文章的预览来戏弄访问者。您可以选择将此内容作为摘录传输,将其与完整内容合并,或者两者都进行。

做出选择后,滚动到屏幕底部,点击开始/恢复导入按钮。该插件现在将从您的 Joomla 站点导入所有内容。一旦这个过程完成,FG Joomla to WordPress 会通知你。

您可能已经传输了您的内容,但是您的页面和帖子中的内部链接有可能不起作用。断裂的内部链接会严重损害访问者的体验。它们还会影响你网站的搜索引擎优化(SEO)。

当搜索机器人索引你的内容时,他们的抓取预算有限。你最不希望的就是把这宝贵的预算浪费在破网址上。幸运的是,迁移插件可以扫描断开的内部链接:

Modify internal links

修改内部链接。

要执行该检查,点击修改内部链接按钮。FG Joomla 到 WordPress 现在将扫描你的网站的死网址。

需要一流的,快速的,安全的托管你的新 WordPress 网站?Kinsta 提供超快的服务器和来自 WordPress 专家的 24/7 世界级支持。查看我们的计划

第六步:选择一个新的主题

WordPress 预装了一个默认主题。但是,它可能不是最适合您迁移的 Joomla 内容的。你可以在一个新的标签页中访问你的站点,看看你的站点是如何使用默认的 WordPress 主题的。

或者,你可以通过导航到帖子页面来查看特定的网页。然后,将鼠标悬停在相关网页上,选择查看:

View posts or pages in WordPress dashboard

查看帖子或页面。

如果你对默认的外观不满意,那么是时候安装一个新的主题了。当选择一个 WordPress 主题时,有很多选择:

WordPress themes

WordPress 主题。

要从官方库安装一个主题,在你的 WordPress 仪表盘中导航到外观>主题。然后您可以选择添加新的并开始探索可用的选项:

Add a new theme

安装新的 WordPress 主题。

当你找到一个吸引你眼球的主题时,将鼠标悬停在它上面,然后点击预览。这将显示应用了新主题的站点。

在挑选主题时,明智的做法是关注平均星级和评论,尤其是最近的反馈。主题可以有正的平均星级。然而,最近大量的负面评论可能表明最近的更新有问题:

Theme reviews for Astra

给刘文静的主题评论。

随着全球超过 30 亿智能手机用户,你的主题也应该是响应迅速且适合移动的 T2。这一质量对于在线商店至关重要,因为移动设备占了 2019 年所有电子商务流量的65%。

当你找到你的完美主题时,选择安装>激活。您的迁移 Joomla 内容现在将使用这个新主题。

步骤 7:建立永久链接

永久链接是将用户和搜索引擎引向你的页面和文章的永久网址。顾名思义,这些链接应该保持不变。

虽然以后可以编辑永久链接,但这可能会导致链接断开。也可能会损害你的 SEO。因此,选择正确的永久链接结构对于建立一个新的 WordPress 网站是至关重要的。

WordPress 支持六种不同的永久链接结构。要查看您的选项,请导航至设置>永久链接:

WordPress permalinks

默认情况下,WordPress 使用普通结构。它包括一个基于 ID 的鼻涕虫,比如 mywebsite.com/?p=123 的。然而,这种结构没有告诉搜索引擎或访问者任何关于页面的有用信息,这对 SEO 和用户体验来说是个坏消息。

出于这个原因,我们建议切换到帖子名称永久链接结构。它将根据页面或文章的标题生成一个 URL slug。这种设置对访问者来说更好,可以提高搜索引擎优化。

要更改您的永久链接结构,请选择帖子名称按钮。然后,点击保存修改

第八步:重新点你的域名

每个域名至少指向两个域名服务器。根据站点的设置,您可能需要将域名连接到主机服务器。这个过程被称为重新注册你的域名

Kinsta 客户可以从 MyKinsta 仪表板重新点选他们的域名。在左侧菜单中,选择网站,然后选择您网站的名称。然后,点击域名:

The domains section in MyKinsta

MyKinsta 中的域段。

接下来,点击添加域名。在随后的弹出窗口中,输入您的域名并选择添加域名并继续:

Click on Add Domain

点击添加域名。

您现在需要验证您拥有该域。为此,您将向您的域的 DNS 添加两个 TXT 记录。

您的 DNS 提供商是您的域名服务器所指向的地方。它可能是您的域名注册商或其他 DNS 提供商。如果你使用的是 Kinsta DNS ,我们会自动添加这些 TXT 记录进行域名验证。

在 DNS 提供商的管理面板中,添加新的 TXT 记录。对于第一条 TXT 记录,在主机名字段使用 _cf-custom-hostname ,在内容/文本字段使用您的唯一 UUID 值。

对于第二条 TXT 记录,在主机名字段中使用 @ 。对于内容/文本字段,使用您唯一的 UUID 值。

将这些 TXT 记录添加到您的 DNS 提供商后,切换回您的 MyKinsta 选项卡。然后,点击确定,我已经在验证域模态窗口中完成了

根据您的提供商,TXT 记录可能需要 24 小时才能传播。一旦您成功验证了您的域名,切换回您的主机提供商的仪表板。在 MyKinsta 中,点击出现在自定义域旁边的点域按钮。

作为这个过程的一部分,您可能需要将您的根和 www 域指向 MyKinsta。为了确保您不会错过任何流量,您还可以添加对通配符域的支持。

第九步:成为 WordPress 专家

WordPress 被设计成一个直观和用户友好的平台。然而,当谈到掌握新技术时,你可能会受益于专家的建议。

幸运的是,有很多资源可以帮助你掌握 WordPress 的基础知识,甚至更多。首先,官方的 WordPress Codex 有一个深入的学习使用 WordPress 部分。这对第一次使用 WordPress 的用户来说是非常宝贵的:

WordPress.org Codex【WordPress.org 抄本】T2 抄本。

还有一些优质的 WordPress 课程。这些课程包含大量信息,可帮助您快速熟悉新平台。

或者,如果你喜欢更实际的方法,你可能想试试我们的免费 DevKinsta 工具:

DevKinsta

德夫金斯塔。

你可以使用这个工具快速简单地创建一个本地 WordPress 安装。这种设置非常适合在一个私密、安全的环境中试验该平台,而不会影响您的实时站点。

想让从 Joomla ➡️ WordPress 移动你的网站成为一种无压力的体验吗?✅继续读下去...

摘要

从一个内容管理系统(CMS) 转移到另一个可能是一个令人生畏的前景。幸运的是,使用正确的工具,你可以从 Joomla 迁移到 WordPress,而不必从头开始。

当你计划迁移时,一个好的迁移插件如 FG Joomla 到 WordPress 是必不可少的。我们也建议选择由管理的 WordPress 提供商,比如 Kinsta。有了合适的主机,安装和配置 WordPress 软件就像是一件轻而易举的事情,这就少了一件需要担心的事情!

关于如何将你的网站从 Joomla 迁移到 WordPress,你有什么问题吗?请在下面的评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

迁移到 Kinsta,免费获得 20%的速度提升——由统计数据支持

原文:https://kinsta.com/blog/migrate-to-kinsta/

每个人都喜欢访问一个快速的网站!拥有一个快速的网站也有助于提升你的搜索引擎排名、抓取率、转化率和停留时间。此外,它还会降低你的跳出率。

在金塔,我们痴迷于速度!不出所料,许多网站所有者和网络机构通过迁移到金塔来升级他们的网站。

如果你仍然犹豫不决,你可能想知道迁移到 Kinsta 后网站速度是否有显著提高。通过这个广泛的迁移数据项目,我们着手测试这一点。

该项目涵盖了来自 3200 多个网站的 32000 多个数据点,我们从超过 23 台主机迁移到了 Kinsta,我们进行了三个多月的测试。

我们对每个迁移的域名进行了网站速度测试——在迁移之前和之后。然后我们开始处理这些数字。这篇文章将详细介绍所有的测试方法和结果。

激动吗?开始吧!

网站速度测试方法

在我们开始看结果之前,我们必须记下我们的网站速度测试方法。下面我们来详细介绍:

现场速度测试平台

对于我们的测试,我们使用了 WebPageTest ,这是一个开源项目,允许我们使用真实浏览器在全球多个地点运行免费网站测试。

Screenshot of the The WebPageTest site speed testing tool's homepage.

The WebPageTest site speed testing tool.

尽管 WebPageTest 和任何其他网站速度测试工具一样简单易用,但它为高级用户提供的功能是一流的,允许您捕捉许多深入的指标,并在多个测试中进行比较。

An overview of the WebPageTest's advanced testing options.

WebPageTest’s advanced testing options.

例如,您可以在测试设置中设置测试次数。启用此选项将使用相同的参数从头开始重复测试。

WebPageTest 执行的测试的默认数量是三个,但是对于高强度的重复测试,您可以将其设置为九个。我们将这个数字设置为 3,以获得可靠的结果,并让 WebPageTest 选择中间结果。

A comparison chart of WebPageTest's First View and Repeat View results.

Comparing the WebPageTest’s First View and Repeat View results.

WebPageTest 还允许您分别记录首次查看和重复查看指标。如果启用重复视图选项,每个测试加载没有浏览器缓存的页面(第一个视图),然后使用存储的缓存再次加载它(重复视图)。

速度测试的第一次查看和重复查看指标可以让您更好地了解新用户和老用户如何加载页面。

最后,WebPageTest 提供了自动化测试的 API 访问,以及一个内置的测试比较工具。这两个特性都非常适合我们的用例。

我们如何进行测试

一旦我们设置了标准的测试程序——位置、浏览器、连接、测试次数、重复查看——使用 WebPageTest 的自动化工具运行测试就轻而易举了。

我们现在需要的是真正的网站进行迁移和测试。

幸运的是,我们不断有客户从不同的主机提供商迁移到 Kinsta 从便宜的共享主机方案昂贵的自管理云服务器

我们顶尖的迁移团队与网站速度测试团队密切合作,顺利获得结果。

我们在迁移站点之前执行了一个测试,在完成迁移之后立即执行了下一个测试。如前所述,我们通过让 WebPageTest 选择中间结果,将测试数量设置为 3,以获得可靠的度量。

总而言之,我们在三个月内迁移和测试了 3200 多个网站。每个工作日每小时完成 2 次以上的迁移!

相关的速度测试指标

WebPageTest 为每个测试记录多个指标。为了比较迁移网站的相对性能,我们认为以下四个指标最相关:

1.首字节时间(TTFB)

此指标衡量从初始请求到响应的第一个字节之间的时间。 TTFB 领先于所有其他指标,主要由服务器的响应时间决定。

Using WebPageTest to measure TTFB, a critical metric for measuring server responsiveness.

TTFB is a critical metric for measuring server responsiveness.

最大限度地减少 TTFB 始于选择一个高正常运行时间和响应速度的快速主机提供商。将它与 CDN 结合也可以进一步改进它。

2.最大含量涂料(LCP)

此指标衡量在浏览器视窗(折叠上方)中加载最大图像或文本块的时间。通常,这些项目将是一个英雄形象,横幅,标题,或大文本块。

Largest Contentful Paint (LCP) is one of Google's Core Web Vitals metrics.

Largest Contentful Paint (LCP) is one of Google’s Core Web Vitals metrics.

较低的 LCP 分数表示更好的用户体验。因此,它也是谷歌的核心网络指标之一。任何具有良好 LCP 分数的页面都可以在搜索结果中排名更高。如果这些页面符合适当的标准,它们也可以出现在谷歌的其他服务中(例如谷歌新闻)。

在比较测试结果时,我们建议您给予 LCP 指标最大权重。

3.总阻塞时间(TBT)

我们无法通过 WebPageTest 等实验室可测量的速度测试工具来跟踪页面的首次输入延迟(FID)——另一个核心的 Web 生命指标。这是因为 FID 只能在现场评估,测量它需要一个真正的用户与页面进行交互。

First Input Delay (FID) is one of Google's Core Web Vitals metrics.

TBT is a lab-measurable alternative to measuring FID.

但是,我们可以通过 WebPageTest 这样的速度测试工具来衡量一个页面的 TBT。根据 Google ,TBT 在该领域与 FID 有很好的相关性。它还捕捉交互性问题。

改进 TBT 主要涉及优化网站代码——第三方代码、JavaScript 执行时间、主线程工作、 HTTP 请求数量和传输大小。这些任务是面向开发的,不属于托管服务提供商的主要服务范围。

通常情况下,提高 TBT 的页面速度优化也会提高用户的 FID。

4.满载时间(FLT)

该指标衡量加载所有页面资产的时间——文本、图像、视频、CSS 样式表、JS 脚本、第三方资源、嵌入等。

WebPageTest's detailed metrics view shows fully loaded time.

WebPageTest’s detailed metrics view shows fully loaded time.

从用户体验的角度来看,我们最好只采用 LCP 指标。然而,由于迁移后的网站在两次测试中几乎保持不变,测量 FLT 很大程度上表明了新的托管服务器与旧的相比表现如何。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

你应该注意到服务器不仅仅是它的硬件。它还包括各种优化—服务器级缓存、特定平台优化、数据库优化、内置安全功能、CDN 集成等。

比较测试结果

我们这个项目的目标是看看 Kinsta 如何将与其他主机提供商进行比较——它为我们的潜在客户、新客户和老客户提供了一个数据支持的比较平台。


我们也想知道我们能带来多大的改变——积极的还是消极的。如果我们带来的改变是积极的,那就太好了。如果是负面的,我们会知道哪里可以进一步改进。

我们迁移站点的一些主机只有少数几个域参与——有些甚至只迁移了一个域。这些主机没有很多数据点来得出可靠的指标。因此,我们排除了所有少于十个域名的主机——也就是十几个主机提供商。随着更多的站点从这些主机迁移到 Kinsta,我们可能会考虑在将来添加这些主机。

现在让我们来看看测试结果。

金士塔与替代品:测试结果

金斯塔在竞争中表现如何?是时候找出答案了。

除非另有说明,否则所有指标都以秒(sec)为单位列出。由于这些指标衡量的是网站速度和交互性,所以速度越慢越好。因此,如果有任何改进,您将在差异量(δ)前看到一个负号。

这些列的含义如下:

  • 原始 =迁移前测试结果
  • Kinsta =迁移后测试结果
  • δ=原始指标和 Kinsta 指标之间的差异
  • %

我们将用 Kinsta 紫色突出显示迁移后的指标改进,以便于您发现差异。

您会注意到大多数指标都被涂成了紫色。简而言之,将您的站点迁移到 Kinsta 会让您受益匪浅。

金斯塔 vs 蓝主机

| Kinsta vs blue hostT3】 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Two point seven five | Zero point five five | -2.19 | -79.82% | One point two four | Zero point three four | -0.90 | -72.88% |
| LCP(秒) | Four point one seven | Two point two | -1.97 | -47.20% | One point eight eight | One point one five | -0.73 | -38.68% |
| 三丁基锡化合物(秒) | Zero point one eight | Zero point two nine | Zero point one one | 60.66% | Zero point one one | Zero point one three | Zero point zero two | 22.48% |
| FLT(秒) | Six point one five | Three point two two | -2.93 | -47.67% | Three point four seven | One point two seven | -2.20 | -63.40% |

金塔 vs 梦幻主机

| 金塔 vs 梦幻主机 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Zero point nine two | Zero point seven three | -0.18 | -19.94% | Zero point three | Zero point three | -0.01 | -2.21% |
| LCP(秒) | Two point five two | Two point three five | -0.17 | -6.57% | One point four three | One point two eight | -0.16 | -11.01% |
| 三丁基锡化合物(秒) | Zero point two nine | Zero point one five | -0.14 | -48.82% | Zero point two | Zero point zero seven | -0.13 | -65.60% |
| FLT(秒) | Six point six five | Four point nine | -1.75 | -26.36% | Three point eight nine | Three point three five | -0.55 | -14.00% |

Kinsta vs HostGator

| 金斯塔 vs host gatorT3】 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Two point zero two | Zero point five five | -1.47 | -72.94% | One point zero eight | Zero point two four | -0.84 | -77.56% |
| LCP(秒) | Three point seven | Two point four two | -1.28 | -34.51% | Two point zero four | One point four four | -0.60 | -29.35% |
| 三丁基锡化合物(秒) | Zero point two two | Zero point two six | Zero point zero three | 14.64% | Zero point one one | Zero point one two | Zero point zero one | 6.02% |
| FLT(秒) | Five point zero seven | Three point two nine | -1.78 | -35.15% | Two point five seven | One point five | -1.08 | -41.86% |

Kinsta vs 灵动网络

| 金士达 vs 灵动网 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | One point one three | Zero point five five | -0.58 | -51.28% | Zero point nine two | Zero point three nine | -0.53 | -57.65% |
| LCP(秒) | Two point eight | Two point one six | -0.64 | -22.83% | One point seven five | One point one nine | -0.57 | -32.24% |
| 三丁基锡化合物(秒) | Zero point two six | Zero point two seven | Zero point zero one | 3.46% | Zero point one nine | Zero point two two | Zero point zero four | 20.14% |
| FLT(秒) | Four point four five | Three point six six | -0.79 | -17.71% | Two point eight three | One point eight three | -1.00 | -35.21% |

Kinsta vs 亚马逊 AWS

| Kinsta vs 亚马逊 AWS |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | One point two two | Zero point nine six | -0.27 | -21.88% | One point one six | Zero point five one | -0.64 | -55.69% |
| LCP(秒) | Three point zero five | Three point two nine | Zero point two four | 7.71% | Two point zero nine | One point five five | -0.54 | -25.75% |
| 三丁基锡化合物(秒) | Zero point three | Zero point three three | Zero point zero three | 10.05% | Zero point two four | Zero point one seven | -0.07 | -28.73% |
| FLT(秒) | Four point one seven | Four point four six | Zero point two nine | 7.00% | Two point eight two | One point nine one | -0.90 | -32.08% |

金士塔 vs 云威

| 金斯塔 vs 云道 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Zero point seven one | Zero point six three | -0.08 | -11.47% | Zero point four four | Zero point three eight | -0.07 | -15.12% |
| LCP(秒) | Two point four three | Two point four seven | Zero point zero four | 1.71% | One point two six | One point two three | -0.03 | -2.26% |
| 三丁基锡化合物(秒) | Zero point four four | Zero point five | Zero point zero five | 11.93% | Zero point two seven | Zero point two two | -0.05 | -18.52% |
| FLT(秒) | Four point seven nine | Five point one five | Zero point three five | 7.36% | one point three seven | One point six four | Zero point two seven | 19.68% |

金斯塔 vs 数字海洋

| 金士达 vs 数字海洋 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Zero point nine three | Zero point five four | -0.39 | -42.45% | Zero point seven five | Zero point one nine | -0.56 | -74.84% |
| LCP(秒) | Three point two six | Four point two one | Zero point nine five | 29.25% | Two point three seven | One point seven five | -0.62 | -26.15% |
| 三丁基锡化合物(秒) | Zero point three nine | Zero point four | Zero point zero one | 3.33% | Zero point four two | Zero point three nine | -0.03 | -7.03% |
| FLT(秒) | Five point one two | Five point three eight | Zero point two six | 5.12% | Four point three seven | One point nine four | -2.42 | -55.46% |

金士塔 vs 场地

| 【kinta 诉场地场地】 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | Zero point six two | Zero point eight eight | Zero point two seven | 43.41% | Zero point six two | Zero point four | -0.23 | -36.46% |
| LCP(秒) | Two point two one | Two point seven five | Zero point five three | 24.01% | One point four four | One point two five | -0.19 | -13.09% |
| 三丁基锡化合物(秒) | Zero point one nine | Zero point two six | Zero point zero seven | 36.74% | Zero point one one | Zero point one three | Zero point zero two | 17.46% |
| FLT(秒) | Three point one six | Three point four nine | Zero point three three | 10.56% | One point eight nine | One point seven | -0.19 | -10.11% |

金斯塔对其他人

“其他”主机提供商类别包括不是我们主要竞争对手的利基主机。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

| 金斯塔 vs 其他 |
| 公制 | 第一次查看 | 重复查看 |
| 原件 | 金斯塔 | Δ | | 原件 | 金斯塔 | Δ | |
| TTFB(秒) | One point four | Zero point nine one | -0.49 | -35.05% | One point zero three | Zero point four six | -0.57 | -55.75% |
| LCP(秒) | Three point three three | Three point one six | -0.17 | -5.15% | One point nine four | One point four five | -0.49 | -25.11% |
| 三丁基锡化合物(秒) | Zero point three one | Zero point three six | Zero point zero five | 15.80% | Zero point two one | Zero point two one | Zero | 0.86% |
| FLT(秒) | Four point nine nine | Four point seven five | -0.23 | -4.71% | Two point eight nine | Two point three three | -0.56 | -19.34% |

结果中的关键要点

你会注意到,我们在第一次查看结果的一些指标上表现不佳,但在重复查看结果中我们表现得非常好。这充分说明了我们的服务器级缓存解决方案和 CDN 集成。

我们的 TTFB 游戏在所有结果中都是正确的——唯一的例外是对 SiteGround 的第一次查看结果。在重复观看的结果中,我们确实令人信服地击败了他们。

LCP 是提高网站感知性能的最相关的以用户为中心的指标。同样,我们在大多数结果中表现出色,尤其是重复查看结果。根据 LCP 统计,平均而言,通过迁移到 kin sta,客户端站点的加载速度加快了20%。

我们不会详细讨论 TBT 结果,因为它们比托管服务提供商更依赖于网站代码。然而,窥视 TBT 分数可能会为我们新迁移的客户提供网站优化机会,以进一步加速他们的网站。

最后,还有 FLT 指标。总体而言,我们在 FLT 指标的重复观看结果中遥遥领先,在第一次观看结果中,我们击败或几乎赶上了我们的竞争对手——唯一的例外是 Cloudways。

以下是你的网站能跑多快(以及竞争有多慢):

  • 从 BlueHost 到 Kinsta: +39% 改进的页面加载时间(平均。)
  • 从亚马逊 AWS 到 Kinsta: +26% 页面加载次数平均提升。)
  • 从数字海洋到 Kinsta: +26% 页面加载时间(平均。)
  • 从灵动网络到 Kinsta: +32% 页面加载时间(平均。)
  • 从 Cloudways 到 Kinsta: +2% 改进的页面加载时间(平均。)
  • 从 HostGator 到 Kinsta: +29% 改进的页面加载时间(平均。)
  • 从 Dreamhost 到 Kinsta: +11% 页面加载时间(平均。)
  • 从 SiteGround 到 Kinsta: +13% 改善页面加载时间(平均。)
  • 从 Other 到 Kinsta: +25% 改善页面加载时间(平均。)

这怎么可能?这是因为 Kinsta 的所有顾客都喜欢:

我们对这里的结果很满意。但是我们知道我们还有提升的空间!

我们对网站速度的痴迷迫使我们不知疲倦地定期推出新功能。请访问我们的功能更新页面,获取我们所有最新工具和升级的最新列表。

摘要

有很多好的 WordPress 主机,但是我们已经开始让 Kinsta 的托管解决方案成为你网站的最佳选择。许多世界上最大的品牌和网络机构依靠 Kinsta 来增强他们的网站。

经过三个多月的严格测试,我们证明了为什么迁移到 Kinsta 可以给你的网站带来免费的性能提升。

虽然提高站点速度是迁移到新主机时要注意的最重要的标准,但您也应该考虑其他重要因素。例如,我们向所有客户提供许多更有价值的功能:

金士达提供 免费无限制迁移 的一切计划。只需注册一个 我们的计划 即可开始。测试服务和速度无风险,我们提供 30 天的退款保证。如果你不给我们一次机会,你就输了!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何独立完成 WordPress 迁移(不停机)

原文:https://kinsta.com/blog/migrate-wordpress-site/

迁移一个 WordPress 站点是你在某个时候必须要做的事情。也许你正在考虑将一个 WordPress 网站转移到一个新的主机上。也许你已经创建了一个本地站点,或者也许你正在从一个多站点安装进行迁移。

在本指南中,你将学习如何自己迁移一个 WordPress 站点。如果您要切换到 Kinsta,我们会为您处理迁移事宜

如果你使用不同的主机,喜欢手动操作,或者你正在本地和远程站点之间迁移,这个指南将帮助你理解如何将你的 WordPress 站点迁移到一个新的主机上。

当你需要迁移一个 WordPress 站点时

在一些情况下,你可能需要迁移一个 WordPress 站点。让我们来看看其中的一些。

  • 本地开发站点上传到远程托管站点。如果你在本地进行开发工作(这是个好主意),你需要将站点迁移到你的远程站点。稍后,当您开发站点时,您可能只需要迁移文件而不是数据库,或者您可能需要双向迁移数据库,以便您可以用当前数据测试任何更改。
  • 在主机提供商之间切换。这是迁移 WordPress 最常见的场景之一。将一个 WordPress 站点转移到一个新的主机上通常是相当简单的。一个好的 WordPress 主机提供商(包括 Kinsta)将免费为你执行迁移:你只需要提供旧网站的登录信息。如果你的网站有一个更复杂的设置或者你更喜欢自己做,你可以遵循这篇文章中的方法。
  • 从 WordPress 多站点网络中迁移站点。如果你已经在一个多站点网络上托管了一个站点,并且决定你需要把它分离出来,那么你就需要把那个站点从网络上迁移出来,然后把它迁移到一个全新的 WordPress 系统上。这比从一个独立站点迁移到另一个站点要复杂得多,但这是可以做到的。
  • 将网站迁移到 WordPress 多站点网络。有时,您可能需要将现有的单个站点迁移到网络中。同样,这比从一个站点迁移到另一个站点要复杂一些,但是您可以做到。这是我有时为客户做的事情,他们有一个现有的网站,他们想迁移到我的主机上;我更喜欢为我所有的客户网站使用 Multisite。

Kinsta free migrations

Kinsta free migrations

迁移你的 WordPress 站点最简单的方法是使用插件。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

如何用 WordPress 复制插件将 WordPress 站点移动到新的主机上

免费的 WordPress 复制插件是我们推荐的将网站迁移到 Kinsta 的插件。你可以通过插件界面把它安装在你的网站上,而且是免费的。

让我们来看看如何使用 Duplicator 插件将 WordPress 站点迁移到新的主机上。

这些说明将适用于任何类型的标准 WordPress 安装,允许你将你的 WordPress 站点从一个主机移动到另一个主机:远程或本地。如果您想迁移一个完整的多站点网络,这也是可行的。稍后我将介绍将站点迁移到多站点和从多站点迁移出来。

复制插件通过创建两个文件来工作:

  1. 一个 zip 文件,包含旧站点(您正在迁移的站点)中的文件和数据库。
  2. 一份installer.php的文件。

然后,你将这些文件上传到新网站,并运行installer.php文件。该插件将解压 zip 文件并导入您的数据和文件。

下面我们来看看怎么做。

在您开始使用 Duplicator 迁移之前

在运行迁移之前,您需要采取几个步骤。

清理你的旧网站

花点时间清理一下你的旧网站,也就是说删除任何你不用的主题插件。更新到 WordPress 的最新版本,你的主题和插件。迁移运行不需要的代码的站点是没有意义的。

禁用缓存插件

缓存插件会干扰迁移,所以如果你在旧网站上运行这些插件,禁用它们。如果你要迁移到 Kinsta,我们有一个禁止插件(包括缓存插件)的列表,所以确保你没有运行这些插件。

备份您的旧网站

在你将一个 WordPress 站点从一个主机转移到另一个主机之前,做一个备份。这适用于任何托管环境。使用你的备份插件或你的主机提供商的仪表板来创建你的旧网站的备份,并将其存储在安全的地方——而不是在你的主机服务器上。

创建新网站

你需要在你的站点的新位置创建一个新的空站点(没有安装 WordPress)。

如果你要迁移到 Kinsta,你可以在几分钟内从 MyKinsta 创建一个新站点。在你的 MyKinsta 仪表盘中进入站点,点击右上角的添加站点按钮。

migrate WordPress site: Adding a site in MyKinsta

Adding a site in MyKinsta

然后,您可以将文件导入该站点。记住,不要安装 WordPress

如果你要迁移到本地网站,你需要安装一个工具,比如桌面服务器,这样你就可以运行 WordPress。如果您要导入到另一个主机提供商,您将需要 SFTP 访问您的 /public/ 目录。你不需要安装 WordPress。

迁移多站点网络

如果你正在将一个多站点网络迁移到 Kinsta,并且该网络包括子目录,你将需要联系 Kinsta 支持,并要求他们启用必要的 Nginx 配置来完成这项工作。

如果你要迁移到另一个主机提供商或从另一个主机提供商迁移过来,在你迁移之前,问问他们你是否需要他们做什么。

您还应该查看复印机插件的指南,了解多站点迁移需要采取的额外步骤。这些只适用于如果你是移动到一个不同的主机提供商或域名

从旧的 WordPress 站点创建文件和数据的存档

迁移过程的第一步是从旧站点创建文件,以便将它们导入到新站点。

安装并激活 WordPress 复制插件。转到插件>添加新的,然后搜索“WordPress Duplicator”。点击插件的安装按钮,然后点击激活按钮。

Installing the Duplicator plugin

Installing the Duplicator plugin

现在是时候创建将用于迁移您的站点的归档文件了。点击管理菜单中的复制器进入插件设置。

Duplicator settings

Duplicator settings

这个屏幕显示了您创建的所有包——它们是您站点的存档。现在,它将是空的。

要创建您站点的档案,请单击新建按钮。

然后,您将进入一个设置屏幕,在该屏幕中,您可以输入软件包的详细信息,如下所示:

  • Name :给包起一个对你有意义的名字。
  • 存储:指定包文件的存储位置。在插件的免费版本中,你可以把它存储在你的网络服务器上,在这种情况下,你需要以后下载它,或者从插件发送给你的电子邮件中获取它。使用 pro 版插件,可以使用第三方存储服务,如 DropboxGoogle Drive 。选择您要使用的,系统会提示您登录。
  • 存档:指定是只存档数据库还是同时存档数据库和文件。当你迁移你的站点时,你需要所有的东西。不要选中复选框。
  • Installer :在这个部分,通过添加一个密码来为你的包启用密码保护。你正在创建一个文件,里面有你网站上的所有东西,所以安全性很重要

Password protection

Password protection

现在点击下一个按钮继续。

该插件将扫描您的系统,并让您知道是否一切正常。

migrate WordPress site: Package scan

Package scan

如果有任何问题,请遵循插件给出的建议。因为你在开始之前清理了你的站点,你应该不会有任何问题。

现在单击 Build 按钮来构建归档文件。等待该过程完成,不要离开屏幕点击。

完成后,您可以选择下载您的软件包文件。

Download your package

Download your package

点击一键式下载按钮,将两个文件下载到您的电脑。将它们存储在安全的地方,以便在迁移到新站点时能够检索到它们。

你现在有你的档案。

将归档文件导入到新站点

下一步是将文件导入到新站点并运行导入程序文件。

使用 SFTP 将这两个文件上传到新站点的 /public/ 目录中。使用你的 FTP 客户端,上传两个文件到那个文件夹(了解 FTP 和SFTP 的区别)。

Duplicator files in the new site

Duplicator files in the new site

完成后,通过在浏览器中访问其 URL 来运行安装程序。您可以使用新站点的临时 URL 来完成此操作,因为您还没有跨域迁移。

因此,如果你的临时网址是http://temp.kinsta.com,你会在浏览器中访问http://temp.kinsta.com/installer.php

这将打开复印机屏幕。

Duplicator password prompt

Duplicator password prompt

如果您在设置复印机文件时提供了密码,请输入密码并点击提交按钮。

然后将引导您完成运行导入的过程。在下一个屏幕上,选中底部的复选框并点击下一个按钮。

migrate WordPress site: The Duplicator import process

The Duplicator import process

该插件将提取档案文件,这可能需要一段时间,取决于您的网站的大小。下一步是安装新的数据库,这将需要:

  • 主机名。
  • 密码。
  • 用户名。

插件将使用这些数据来更新站点设置。

你可以在 MyKinsta 网站的信息界面中找到所有这些信息。

如果你要迁移到另一个主机提供商,向他们询问详细信息,或者在你注册时他们发给你的电子邮件中找到。

Creating the database in duplicator

Creating the database in duplicator

单击该按钮检查数据库是否正常工作,并根据需要进行任何更正。一旦系统正常,点击下一个按钮。

然后,Duplicator 插件将运行第 3 步,使用新站点的临时 URL 使数据库正常工作。点击下一个按钮的进入第 4 步,从这里您可以登录网站。

当你访问你的网站时,你现在应该有一个旧网站的完美复制品。唯一的区别是域名。

重定向域名

一旦你测试了你的新网站,你很高兴它能正常工作,你就可以把域名重定向到你的新网站。

如果你要更换主机服务提供商,那么你需要更新域名的 DNS ,让它指向你的新网站。

与您的域名注册商,更改域名服务器,一个或 CNAME 记录,以反映您的新位置。您使用哪一个取决于您的设置。

如果你也需要使用你的域名来处理电子邮件,那么你不会想要改变域名服务器,因为这会将你所有版本的域名指向你的新主机提供商。

一旦你这样做了,你需要在你的主机管理员中更新域名。在 MyKinsta 中,进入你网站的域名页面,在这里你可以更新域名

如果您使用的是另一个托管服务提供商,您需要在您的帐户中添加一个附加域,以便将它定向到您的新网站。您的提供商应该能够为您提供这方面的指导。

你还没有完成。

最后一步是在 WordPress 管理界面中更新域名。在你的站点中,进入设置>常规并找到 URL 字段。只有当 DNS 已经传播并且域名指向你的新站点时,你才应该这样做

这可能需要 48 小时,但通常要快得多。

WordPress URL settings

WordPress URL settings

有两个字段需要更新:

  • 【网址】 :这是站点本身的地址,所以是你在站点上使用的主域名。
  • 站点地址(URL) :如果您希望用户看到的地址与实际的站点地址不同,只需更新该字段。如果两者相同(这是正常的),更新两个字段。

点击保存更改按钮保存 URL。

现在,您的新站点已经在新位置运行。如果你不再需要旧网站,是时候删除它了,如果你换了提供商,就关闭你的旧主机账户。

使用插件将网站移入或移出 WordPress Multisite

如果你要将一个网站移入或移出 WordPress Multisite,你可以用一个插件来完成,但是你不能使用 WordPress Duplicator 插件。这是因为您不希望迁移整个数据库和文件:只迁移来自相关站点的那些文件。

要使用插件移入和移出多站点,您需要使用三个插件:

  1. 一个用于迁移内容。
  2. 一个用于迁移小部件设置。
  3. 一个迁移用户。

根据您的设置,您可能不需要使用所有这些。让我们一步一步来看事情。

将文件移入或移出 WordPress Multisite

在您迁移任何内容或设置之前,您需要迁移主题和插件文件。您可以通过以下两种方式之一实现这一点:

这两种方法都可以,但是如果你的主题或者插件是专门为你的站点开发的,你需要从旧站点下载并上传到新站点。或者,如果你在本地保存了文件的备份,或者使用了版本控制系统,比如 Github (这是个好主意),你可以从那里上传它们。

(建议阅读: Git vs Github:两者有什么区别以及如何入门)

如果你需要上传和安装主题和插件到 WordPress 多站点网络中的站点,你需要为网络安装它们,然后为单独的站点激活它们。你可以在 WordPress Multisite 的指南中找到更多相关信息。

信息

不能决定一个 WordPress 主题?看看我们精心挑选的最佳 WordPress 主题列表

激活你的新网站的主题,并激活任何插件。需要注意的几件事:

  • 如果您的新站点在多站点网络中,您需要启用该站点的主题,方法是转到网络>站点,点击您正在处理的站点下方的编辑按钮,然后选择主题选项卡。从那里你可以启用主题。然后转到新站点的外观>主题并激活那里的主题。
  • 你不需要为单独的站点启用插件。相反,你可以安装它们,然后转到该站点的插件屏幕并在那里激活它们。
  • 如果你从网络中的一个站点迁移到一个独立的站点,你可以像对任何站点一样安装并激活主题和插件。

现在,您已经将所有文件放在了新站点上。花一些时间来配置主题和插件:如果你使用插件来完成迁移,你必须手动完成。

您不必做的一个配置是针对小部件的:您可以使用一个插件来完成它,我们很快就会看到。

将用户导入和导出多站点

如果您希望迁移的站点有除您之外的用户,您需要将用户从旧站点导出到新站点。如果您是唯一的用户,您可以跳过这一步,因为您将在创建新网站时将自己创建为用户。

由于 WordPress 并不在 Multisite 中存储每个站点的用户,因此将用户导入和导出 Multisite 变得很复杂。相反,它将它们存储在整个网络的一个数据库表中,称为 wp_users

如果您从网络中的站点导入,您应该只导出那些在您的站点上注册的用户,而不是那些在网络上的其他站点上注册的用户。如果您要导入到网络中的某个站点,您只想激活该站点上的那些用户,而不是网络上的其他站点。

如果您的网站包括多个作者,请在导入内容之前执行此操作,以便在将内容导入新网站时,可以为内容分配正确的用户。所以让我们开始吧!

你可以使用Import Export WordPress Users插件在站点间迁移用户。

首先在你的新旧站点上安装并激活插件。然后在你的旧站点,去用户>用户导入导出

User Import Export settings

User Import Export settings

选择顶部的用户/客户导出选项卡。选择您想要导出的用户角色(如果您保留默认设置,将导出所有角色),然后向下滚动并点击导出用户按钮。

该插件将下载一个 CSV 文件到您的计算机上。将它保存在某个地方,以便在导入时可以再次找到它。

现在,在您的新站点中,转到用户>用户导入导出并选择用户/客户导入选项卡。

User/Customer import

User/Customer import

上传您刚刚创建的 CSV 文件,点击上传文件和导入按钮。该插件将上传文件并将用户导入到您的新站点。

在多站点网络中的站点上工作时,您在站点中而不是在网络管理中进行导入和导出。任何导入的用户都将被添加到整个网络的数据库中,但他们只能在一个站点上被激活。

将内容移入或移出 WordPress Multisite

导出您的内容开始。转到工具>出口。选择所有内容,点击下载导出按钮。

Exporting from Multisite

Exporting from Multisite

将下载文件保存在可以再次找到的地方。它将采用 XML 格式。

在您将任何内容导入新站点之前,如果旧站点中有自定义的文章类型或分类,那么确保您设置了这些类型或分类是很重要的。如果你还没有这样做,回到上一步,确保你在新网站上安装并激活了与旧网站相同的主题和插件。

现在打开新网站,进入工具>导入。向下滚动到部分。如果你已经安装了导入器插件,点击运行导入器。如果您还没有安装它,请按照这里的说明安装并激活它,然后运行它。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

The WordPress importer

The WordPress importer

导入程序将提示您上传要导入的文件。点击选择文件,找到您从旧站点导出的文件,点击上传文件导入按钮。

导入程序会提示您将内容分配给新站点中的正确用户,这就是为什么在导入内容之前导入用户非常重要。如果您还没有这样做,请暂停内容导入并返回到上一步。

Importing in WordPress

Importing in WordPress

选择相关用户,并勾选下载和导入文件附件复选框。WordPress 会在你的旧网站中找到任何附件,如果可以的话,抓取这些附件并导入到新网站中。有时由于安全或访问的原因,这不起作用,但是如果你从一个远程托管的站点迁移到另一个,它通常会起作用。

点击提交按钮。WordPress 将上传文件并创建内容。完成后,您会收到通知。前往你的帖子(点击管理菜单中的帖子,你会在你的新网站中看到你导入的帖子。

您已经在迁移您的站点的路上了——现在剩下的就是迁移小部件设置了。

将小部件移入和移出多站点

最后一步是迁移小部件。你不必手动配置这些:你可以使用小部件导入器&导出器插件来代替。

首先在你的旧站点和新站点上安装并激活插件。

在你的旧站点,进入工具>小部件进出口商。这将带您进入小部件导入/导出屏幕。

The widget import export screen

The widget import export screen

点击导出小部件按钮。这将下载一个文件到您的计算机与小工具的设置。

现在打开你的新网站。确保你已经安装并激活了你在旧网站上安装的所有相同的主题和插件,因为其中一些可能会提供你需要安装的插件。

小部件导入过程不会导入小部件本身。相反,它导入小部件的设置。同样重要的是,你要激活相同的主题,以使窗口小部件区域相同。

转到工具>小部件进出口商。这一次,点击选择文件按钮,上传您刚刚从旧网站下载的文件。它将具有。WIE 分机。

点击导入小部件按钮。该插件将导入小部件,并给你一个状态屏幕,告诉你它们已经被导入。

Widget import results

Widget import results

如果有任何缺少的小部件区域,将从您的旧站点导入小部件,但是它们将被添加到小部件管理屏幕中的非活动小部件区域。

如果你试图导入一个你的新网站上没有的小部件,可能是因为你没有激活插件,你会得到一个错误信息。安装并激活插件,再次运行导入,插件不会复制你已经导入的插件。

现在,您应该在新站点上拥有与旧站点完全相同的副本。花一些时间检查新站点的所有设置和配置,确保它们与旧站点相同(或者如果您想进行更改,可以对它们进行调整)。

然后,如果您的旧站点在多站点网络上,请要求网络管理员将其存档或删除。如果你的旧站点是一个独立的站点,删除它

手动迁移 WordPress 站点

如果你习惯使用 SFTP 和 MySQL,手动迁移你的站点会比使用插件更快更可靠。

在这里,我将着重于将一个独立的 WordPress 安装迁移到另一个。在下一节中,我将看看这对于 WordPress 多站点网络有何不同。

创建新的 WordPress 安装

首先创建一个新的站点,作为一个空的 WordPress 安装。

MyKinsta 中,点击管理菜单中的站点,然后点击屏幕右上角的添加站点按钮。您将看到一个对话框,询问您想要创建哪种类型的站点。

New WordPress site in MyKinsta

New WordPress site in MyKinsta

选择你想在哪个数据中心托管你的网站,然后填写网站名称的详细信息,并选择不要安装 WordPress

这是因为你将从你的旧站点迁移 WordPress 文件。暂时将自定义域名保留为空,因为在新网站启动并运行时,您希望暂时将您的域名保留在旧网站上。

点击添加站点按钮,将为您创建一个新站点。

如果你没有使用 Kinsta,你可以使用你的主机服务提供商的管理界面创建一个新的网站:你需要做的就是创建一个文件夹,或者如果你的主机帐户上没有任何其他网站,你可以跳过这一步,在下一步中只需将文件上传到 /public/ 文件夹。

使用 SFTP 导出文件

下一步是将文件从旧站点迁移到新站点。这将包括主题文件,插件,上传和任何其他文件,插件可能已经添加到您的 wp-content 目录。

通过 SFTP 登录你的旧网站,下载所有的 WordPress 文件。如果你的站点在你的主机的根域中,那么这将意味着下载所有的文件。如果你把 WordPress 安装在一个子目录中,下载那个目录的内容。

要访问您的网站,您需要您的 SFTP 详细信息。在 MyKinsta 中,你可以通过点击网站然后点击网站名称并选择信息标签来找到这些。

The info tab in MyKinsta

The info tab in MyKinsta

下面你可以看到在免费的 FileZilla FTP 客户端中查看的我的站点中的文件。

WordPress files in FTP client

WordPress files in FTP client

从旧站点导出数据库

和文件一样,你的新 WordPress 站点也需要旧数据库的副本。为此,您需要使用一个 MySQL 工具,通常是 phpMyAdmin

在你的旧站点的托管界面中,进入 phpMyAdmin。

厌倦了你的 WordPress 站点缓慢的主机?我们提供超快的服务器和来自 WordPress 专家的 24/7 世界级支持。查看我们的计划

在 MyKinsta 中,你可以点击网站,选择你的网站,然后进入信息屏幕。在数据库访问部分,点击打开 phpMyAdmin 按钮。

系统将提示您输入数据库用户名和密码。这些与您的托管帐户的密码不同。

在 MyKinsta 中,您可以在信息屏幕的数据库访问部分找到数据库用户名和密码。如果你正在迁移到另一个主机提供商,你可能会在注册你的帐户或在你的管理界面中得到这些信息。

在 phpMyAdmin 中,点击数据库选项卡。这将给你一个你在你的托管账户上创建的所有数据库的列表。

Databases in phpMyAdmin

Databases in phpMyAdmin

单击与您要复制的站点相对应的数据库名称。然后,您将看到数据库中所有表的列表。

The database tables

The database tables

点击表格列表下方的 Check all 复选框,在旁边的【T2 与选择:】下拉框中选择 Export。

PhpMyAdmin 将带你到一个新的屏幕。点击屏幕底部的 Go 按钮。

Export tables from database

Export tables from database

PhpMyAdmin 将导出一个 SQL 文件并将其下载到您的计算机上。把它保存在你能再次找到的地方。

将文件导入新的 WordPress 站点

下一步是将所有这些文件上传到您的新网站。

如果你的新站点由 Kinsta 托管,你可以去 MyKinsta 获取通过 SFTP 连接到它的凭证。点击管理菜单中的网站,然后点击你的网站名称。在信息屏幕中,您将找到您的 SFTP 详细信息。

在您的 FTP 客户端中,通过提供以下详细信息进行连接:

  • 连接类型 : SFTP。
  • 主机名、地址、服务器或 URL :您的 IPv4 地址。
  • 用户名:你的 SFTP 用户名。
  • 密码:您的 SFTP 密码。
  • 港口:你的 SFTP 港口。

将文件上传到它们原来所在的目录,通常是 /public/ 目录。

他们可能需要一段时间来上传,所以你可能想在等待的时候喝杯咖啡。

将数据库表导入到新站点

最后一步是导入数据库表

在新站点的托管界面中,转到 phpMyAdmin。在 MyKinsta 中,您可以通过网站的信息屏幕来访问它。

如果你不小心创建了一个 WordPress 安装,或者你需要覆盖一个现有的 WordPress 站点,你需要删除现有的数据库表。按照从旧站点导出表格时的相同方式选择所有表格,并单击 With selected: 下拉列表。选择下降

Drop database tables

Drop database tables

系统将提示您确认是否要删除这些表,然后数据库中的所有内容都将被删除。如果您不确定是否要这样做,首先通过导出表来备份数据库

一旦删除了数据库表,或者如果一开始就没有数据库,就需要将表从旧站点导入到新站点。

在 phpMyAdmin 中,单击导入选项卡。在文件导入部分,点击选择文件按钮,选择您电脑上已经下载的 SQL 文件。

Uploading database tables

Uploading database tables

转到页面底部,点击转到按钮。PhpMyAdmin 将上传 SQL 文件,并使用它为您的新站点创建数据库表,这些表将与旧站点中的表相同。

如果您要将站点迁移到本地安装或除 Kinsta 之外的主机提供商,您可能需要在导入表之前创建一个空数据库。在 phpMyAdmin 中,你可以通过进入数据库屏幕并点击创建数据库按钮来完成。给数据库起一个有意义的名字,然后将表导入其中。

编辑你的 wp-config.php 文件

既然您已经上传了数据库,那么您需要在新站点中编辑wp-config.php 文件,以确保它反映了您刚刚创建的数据库。

回到你的 FTP 客户端,在你的新站点中找到 wp-config.php 文件。做一份备份,以防万一。然后右击文件,点击编辑选项打开。找到包含数据库详细信息的部分:

wp-config.php database details

wp-config.php database details

用您在 MyKinsta 的 Info 屏幕中找到的数据库凭证更新这几行。如果站点位于本地计算机上,请使用这些凭据:

  • Name :创建数据库时给它起的名字。
  • 用户名 : root。
  • 密码 : root。

如果你将你的网站迁移到不同的主机提供商,你需要在你的主机仪表板中找到这些凭证。

信息

如果您跳过这一步,当您第一次尝试访问该站点时,系统会提示您提供这些详细信息。

测试您的站点并更新域

现在你已经建立了新的 WordPress 站点,花一些时间来测试它是否正常工作。当你测试它时,只测试指向新站点的链接,而不是旧站点,因为你会发现数据库中的一些链接有旧的域名。

这是可以的,因为一旦你测试了网站,你将更新域名。

比较新旧站点,检查它们是否相同。

将域名重定向到您的新站点

现在你的新网站已经准备好了,是时候关闭旧网站并将你的域名重定向到新网站。

这个过程和你使用复制插件是一样的,所以按照这篇文章中的说明去做。

现在,您已经在新位置创建了新站点。如果你不再需要旧网站,是时候删除它并关闭你的旧主机账户了。你完了!

手动迁移 WordPress 多站点网络

如果您需要手动迁移多站点网络,或者将一个站点迁移到多站点网络或从多站点网络中迁移出来,并且您不想使用上述插件方法,您可以这样做。

事实上,您只需要迁移一些数据库表和一些文件,这就很复杂了。

我将概述不同之处,而不是完整地描述这个过程,这样您就可以在完成上面的手动迁移时应用这些不同之处。

请注意,如果您要迁移整个网络,过程与单个站点相同,因为您要迁移的是整个安装。在这里,我将重点关注将单个站点移入和移出多站点

重要的

如果你正在将一个多站点网络迁移到 Kinsta,并且该网络包括子目录,你将需要联系 Kinsta 支持,并要求他们启用必要的 Nginx 配置来完成这项工作。

创建新网站

因为你不会迁移整个网络安装,你需要在开始之前设置一个 WordPress 安装。如果您正在迁移到一个现有的网络,您不需要这样做,因为网络已经存在。

当您迁移文件时,您不会导入 WordPress 文件,而只是导入 wp-content 目录的内容。

导出文件

如果您从单个站点导出到网络中,导出文件的过程将与上面相同。

如果您正在导出一个当前位于多站点网络中的站点,您将需要从该站点中查找文件。

插件主题开始。你只需要下载那些在这个特定网站上使用的插件和主题文件,而不是所有安装在网络上的插件和主题。在网站的管理界面中找到这些,并从WP-内容/主题WP-内容/插件目录中下载。

多站点网络中,每个站点的上传都是分开存储的,因此您只需下载您要导出的站点的上传即可。

Files in a Multisite network

Files in a Multisite network

首先找到站点的 ID,这将是一个数字。您可以在网络中的网络管理>站点屏幕中找到这一点。然后在你的 wp-content 目录下,打开 uploads/sites 文件夹,找到一个以站点 ID(编号)为名称的文件夹。下载该文件夹的内容。

导出数据库表

如果从网络中的站点导出,只需导出与该站点相关的表。在 phpMyAdmin 中,找到名为 wp-id-name 的表,其中 id 是站点的 id, name 是每个唯一表的名称。选择所有选项,然后点击导出选项。

下面的例子来自网络中的一个站点,插件为每个站点创建额外的数据库表。你也需要出口那些。

Extra database tables in Multisite

Extra database tables in Multisite

完成后,您需要编辑这些表名,然后才能将它们导入独立的站点。备份 SQL 文件并打开原始文件。搜索(例如) wp-3- 的所有实例,其中 3 是站点的 ID。换成 wp- 。保存文件,然后在导入到新站点时使用最近编辑的文件。

导入文件

如果你要导入到一个多站点网络中的站点,你需要上传上传到 wp-content/uploads/sites 中正确编号的文件夹。

这意味着你需要首先在你的网络中创建一个新的站点,这样 WordPress 就会创建这个文件夹。按照 WordPress Multisite 的指南中的说明来做。

当你导入主题和插件文件时,把它们上传到 wp-content/themeswp-content/plugins 文件夹,就像你对普通 WordPress 站点所做的那样。

导入数据库表

如果您要导入到多站点网络中的站点,您需要确保 SQL 文件中的表在导入前具有正确的前缀。

在网络中创建新的要迁移到的空站点后,记下该站点的 ID。备份从旧网站下载的 SQL 文件,并打开原始文件。在该文件中,将 wp-的所有实例替换为(例如) wp-3- ,其中 3 是新站点的 ID。保存文件。

接下来,在 phpMyAdmin 中,选择已经为您的网络中的新站点创建的文件(所有前缀中带有站点 ID 的文件)。放下这些。完成后,导入新文件来创建这些表的新版本。

如果您不小心删除了错误的文件或错误地编辑了 SQL 文件,它可能会破坏您的多站点网络。因此,只有当您习惯于使用 phpMyAdmin 时才这样做。并且先备份你的网络

导入用户

因为用户是为整个网络存储的,而不是为网络中的单个站点存储的,所以没有手动方式将用户导出到 WordPress 多站点网络中的某个站点或从该站点导出用户。

唯一的方法就是使用本文前面提到的插件方法。在导入了所有其他文件和表格之后,再这样做。

请注意,当您以这种方式导入用户时,在将帖子归属于作者时,他们不会被识别为同一用户。你需要浏览所有的帖子/页面,并手动将它们归属于正确的作者。

预览您的站点

完成多站点子站点或多站点网络的迁移后,可以通过编辑计算机的主机文件轻松预览迁移后的站点。这允许您将本地 DNS 指向托管迁移站点的服务器。有关如何编辑 hosts 文件的更多信息,请点击此处查看或深入了解指南。

Migrating your site to a new host can be a challenging task because of the many elements involved. Check out this (massive) guide on how to perform a WordPress migration without downtimes 🚨💫Click to Tweet

摘要

在主机之间或者从本地到远程安装迁移 WordPress 站点是许多 WordPress 用户在某个时候不得不做的事情。有很多方法可以做到这一点,主要的区别是你是否手动或使用插件。

如果您搬到 Kinsta,我们将很乐意为您负责迁移您的站点

另一方面,如果你决定自己迁移一个 WordPress 站点,上面概述的步骤将帮助你可靠地完成,并确保你的新 WordPress 站点和你的旧站点是一样的。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何缩小 JavaScript——推荐的工具和方法

原文:https://kinsta.com/blog/minify-javascript/

大多数用户都渴望优雅的 web 浏览体验,JavaScript 一直是开发人员提供这种高级体验的最爱。

然而,JavaScript 不仅仅是为了让网站看起来更好。它也直接影响网站的表现和成功。加快网站速度或减少页面加载时间——这是 JavaScript 开发的两个核心概念——是改善用户体验的关键因素。

查看我们的视频指南来缩小 JavaScript

如果你想在最短的时间内提高你的网站的性能,你需要熟悉 JavaScript minification。它将帮助您从 JavaScript 源代码中排除所有不必要的字符,而不会改变其功能。更重要的是,它将减少你的网站的加载时间和带宽的使用。

JavaScript 缩小可能很棘手。在本文中,我们将绘制一个教程来帮助你为 WordPress 和非 WordPress 网站精简 JavaScript 代码。

JavaScript 是什么?

JavaScript title with a demo JavaScript code on a computer screen

JavaScript (Image Source: Medium)

JavaScript 是一种面向文本的脚本语言,用于在客户端和服务器端创建交互式网站。这是一种比大多数语言更简单、更容易学习的语言,这也解释了它被广泛使用的原因。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

HTML 和 CSS构建了一个网站的结构,而 JavaScript 添加了复杂的功能,为你的网站带来交互性,吸引用户。例如,JavaScript 提供了复杂的元素,如滚动视频点唱机、2D/3D 视频和交互式地图。

值得注意的是,网络浏览器可以理解 JavaScript。因此,除了 HTML 和 CSS,如果你对 web 开发感兴趣,这是一个不错的选择。如果你需要创建一个高度互动的网站,可以在所有浏览器上无障碍运行,那么 JavaScript 是你可以采用的最可靠的选择。

信息

Kinsta 客户可以通过 MyKinsta 仪表板快速缩小 JavaScript 和 CSS 文件。

什么是代码精简?

缩小也称为最小化。代码精简意味着优化代码以节省空间,减少页面加载时间,降低网站带宽使用率。然而,最大的问题是在不改变功能的情况下最小化代码。

代码精简在所有核心编程技术中都是可能的,包括 HTMLCSS ,以及我们即将看到的 JavaScript。然而,这个过程不是瞬间的。一些工作致力于使代码更紧凑,同时保持其功能性。

要缩小 JavaScript 代码,您必须解析它、压缩它并获得输出。一旦它被缩小,肉眼几乎看不出来。您已经删除了所有不必要的空格、注释、换行符以及最初使代码清晰易读的所有内容。

您可能还需要对代码做一些进一步的修改——例如,内联函数、删除块分隔符、使用隐式条件或重写局部变量。

未缩小与缩小的 JavaScript 代码示例

让我们来看看一些示例代码。第一个代码块是常规的、未混合的 JavaScript:

// program to check if the string is palindrome or not

function checkPalindrome(str) {

    // find the length of a string
    const len = string.length;

    // loop through half of the string
    for (let i = 0; i < len / 2; i++) {

        // check if first and last string are same
        if (string[i] !== string[len - 1 - i]) {
            return 'It is not a palindrome';
        }
    }
    return 'It is a palindrome';
}

// take input
const string = prompt('Enter a string: ');

// call the function
const value = checkPalindrome(string);

console.log(value);

现在,让我们看看同样的代码被缩小后是什么样子:

function checkPalindrome(n){const t=string.length;for(let n=0;n<t/2;n++)
if(string[n]!==string[t-1-n])return"It is not a palindrome";return"It is a palindrome"}
const string=prompt("Enter a string: "), value=checkPalindrome(string);console.log(value);

如您所见,第二个代码块要小得多,也更紧凑。这意味着它将更快地加载和呈现,减少页面加载时间,加快内容。

这里,我们将 529 字节减少到 324 字节,获得了 205 字节的空闲空间,并将页面负载减少了近 40%。

这就好比拿一本 529 页的书,浓缩成一本 324 页的书。当然,人类会很难读懂它,但是机器可以毫无问题地快速阅读。

当将多个 JavaScript 文件连接成一个单独的缩小文件时,代码缩小减少了对服务器的 HTTP 请求数量。这也降低了网站的带宽消耗。此外,代码精简减少了脚本运行的时间——所有这些都降低了您到达第一个字节(TTFB) 的时间。

为什么要缩小 JavaScript 代码?

在编写初始代码时,大多数开发人员主要关注于完成工作。在这条路上,他们倾向于使用大量的注释、空格和变量,以使代码对于将来使用它的其他人来说更具可读性。

尽管 JavaScript 是一种优秀的编程语言,但它会降低网页的速度。为了重新获得空间并提高页面加载速度,您必须缩减 JavaScript 代码。

缩小版的 JavaScript 代码可以将文件大小减少 30–90%。因此,JavaScript 小型化已经成为所有开发人员熟悉的惯例。

每一个主要的 JavaScript 库开发者(Angular,Bootstrap 等等)都为产品部署提供了一个缩小版的 JavaScript。并且每一个都使用一个 min.js 扩展名来表示这一点。

精简 JavaScript 代码的好处

以下是使用 JavaScript 化后您将获得的好处的简要概述:

  • 减少页面加载时间
  • 减少网站的带宽消耗
  • 缩短脚本执行时间
  • 对服务器的 HTTP 请求更少(负载更轻)
  • 防盗保护(缩小版或丑化版很难阅读和窃取再利用)

JavaScript 缩小、丑化和压缩之间的区别

JavaScript 缩小、丑化或压缩在功能上是相似的。然而,他们有不同的目的。

JavaScript 丑化重写了代码,使其可读性更差。该过程删除了空格、分号和注释,同时重命名了变量和内联函数,使代码难以阅读。

JavaScript 有一个名为 UglifyJS 的库,可以自动丑化代码。它提高了性能,降低了可读性,使代码更安全,对窃贼的吸引力更小。

压缩不同于缩小或丑化。它使用像 GZIP 这样的压缩算法将代码重写为二进制格式,使其更小,加载更快。

虽然缩小意味着减少空白和注释,但通过改变函数名、变量名等,完全丑化代码会将其转换成不可读的形式。压缩以二进制重写代码以减小文件大小。

缩小和压缩都是可逆的,这意味着您可以将代码还原到其原始形式,但丑化是不可逆的。

如何精简 JavaScript 代码

您可以通过多种方式缩减 JavaScript 代码。这些方法中的每一种都采用了不同于其他方法的方法。

手动缩小大型 JavaScript 文件中的所有代码几乎是不可能的。手动缩小 JavaScript 文件只适用于小文件,因为这非常耗时。

要开始手动 JavaScript 缩小过程,您可以在您最喜欢的文本编辑器中打开您的 JavaScript 文件,然后手动一个接一个地删除所有空格。删除为 JavaScript 文件设置的所有空格和注释需要几分钟时间。其中一些文本编辑器甚至支持正则表达式,这可以大大加快这个过程。

另一个选择是在你的计算机上安装缩小工具,并从命令行使用它们。您必须选择想要缩小的文件,并将其与目标文件一起添加到命令行开关中。然后缩小工具会处理剩下的事情。

如何手动缩小 JavaScript 大工具

开发人员依靠几个 JavaScript 精简工具来精简代码并获得更好的性能。然而,每个开发人员都有自己的偏好,选择不同的工具。有很多 JavaScript 缩小工具,它们都有独特的品质,所以你需要仔细考虑你的选择。

我们不会根据任何排名或类别列出这些工具。我们只包括了最有效和最流行的 JavaScript 缩小工具。

这里是最好的 JavaScript 缩小工具,可以帮助你提高你的网页性能。

1.我是 jsm

JSMin 是一个专用的命令行 JavaScript 缩小工具和库,用来缩小 JavaScript 代码,使代码尽可能的轻量级。只需将 JSMin 作为全局脚本安装,它将非常有效地删除代码中的所有空白和不必要的注释。因此,它可以立即将您的 JavaScript 文件大小减少 50%左右。

因此,减小的大小将为快速下载提供机会。您还会注意到,随着下载新的、文学化的自我文档的成本增加,更具交流性的编程风格也在增加。

然而,JSMin 有一个缺点,它不能产生最佳的节省。由于算法过于简单,它保留了许多换行符不变。否则,它可能会在代码中引入新的 bug。

2.微软 Ajax Minify

Microsoft Ajax Minifier 通过减小 JavaScript 和 CSS 文件的大小,使您能够提高 web 应用程序的性能。它删除注释、不必要的空格、分号、函数和括号。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

除了缩短局部变量、函数名、引号/双引号、组合相邻的变量声明,删除未执行的代码。

有了 AjaxMin,你就可以分析生产力,在后台给 JS minifier 充电。而且,当它完成缩小,你可以打开生产力文件夹。

3.Google 闭包编译器

Google Closure 编译器是另一个优秀的 JavaScript 缩小工具。它为快速下载和更流畅的性能制定了 JavaScript。它还验证语法和可更改的建议,删除死代码和类型,并通知您 JavaScript 的缺点。这个工具收集您的 JavaScript,评估它,删除冗余代码,并重写它。

此外,它还为非法的 JavaScript 和潜在的危险操作提供警告。此外,它是从常规 JavaScript 到更好、更精简的 JavaScript 的合适编译器。

4.YUI 压缩机

YUI 压缩器是一个命令行 JavaScript 和 CSS 缩小工具,保证你比其他大多数压缩工具有更高的压缩比。这是一个用 Java 编写的缩小工具,依靠 Rhino 来标记源 JavaScript 文件。

首先,YUI 检查源 JavaScript 文件以确定其结构。然后它打印出令牌流。然后,它删除尽可能多的空白字符,并用 1(或 2,或 3)个字母符号替换所有本地符号。

由于 YUI 压缩器是开源的,您可以查看源代码来了解它是如何工作的。此外,YUI 是最安全的 JavaScript 缩小工具,具有令人信服的压缩比。

5.丑陋

UglifyJS 是最流行的 JavaScript 缩小工具之一。它可以解析、缩小和压缩 JavaScript 代码。此外,该工具在压缩时会生成一个源映射文件,以便追溯到您的原始代码。

此外,它可以同时获取多个输入文件,首先解析输入文件,然后解析选项。

UglifyJS 按顺序解析输入文件,并应用任何压缩选项。这些文件在同一个全局范围内被解析,这意味着从一个文件到另一个文件中声明的变量/函数的引用将被适当地匹配。

如何自动缩小 JavaScript:五大在线工具

有大量的在线 JavaScript minifiers 可以在线压缩你的代码。几乎所有在线 JavaScript 缩小工具都遵循类似的缩小过程。

首先,您将复制并粘贴您的 JavaScript 源代码,或者在工具上上传源代码文件。然后,您将优化缩小工具的设置,以获得基于特定需求的输出(如果选项可用)。

最后,您将获得这个缩小的文件,并在网站上使用它,而不是原始的扩展代码(尽管您应该妥善保管原始的源代码文件,以防万一)。

这里有 5 个最好的在线 JavaScript 缩小工具,可以帮助你丰富你的网络性能。虽然我们没有按照任何特定的顺序或类别列出这些工具,但我们只包括了最流行和最有效的 JavaScript 缩小化解决方案。

1.顶级 JavaScript 迷你程序

Toptal JavaScript Minifier while Minifying JavaScript code

Toptal JavaScript Minification Tool

Toptal JavaScript Minifier 提供了一个高效而简单的在线 JavaScript Minifier,你可以在几秒钟内压缩你的 JavaScript。它还允许你将代码转换成一个。js 文件以备将来使用。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

2.JSCompress

"<yoastmarkT2】

JSCompress 可以缩小和减少 80%的 JavaScript 代码。它提供了一个简单的点击操作界面,你可以粘贴你的代码或者上传你的。用于缩小的 js 文件。您将会收到简洁的、可复制的代码,而不是一个。js 文件。值得注意的是,该工具使用 UglifyJS 和 Babel-minify 来缩小和压缩 JavaScript。

3.Minifier.org

Minifier.org JavaScript Minifier while minifying JavaScript

Minifier.org JavaScript Minification Tool

Minfier.org 是最简单的 JavaScript 迷你工具之一,你可以利用它来缩小你的代码。它使用多种方法来缩减 JavaScript 代码。该工具对缩小前后的 JavaScript 代码大小进行加权。然后计算缩小后脚本的增益,并显示在屏幕上。

4.TutorialsPoint 在线 JavaScript Minifier

Tutorialspoint JavaScript Minifier while minifying JavaScript

Tutorialspoint JavaScript Minification Tool

可以输入一个。js 文件,提供一个 URL 或者直接将你的原始代码粘贴到教程要点 JavaScript minifier 工具。如果您愿意,该工具有一个可编辑的字段来直接编码。此外,它有一个单击缩小选项,你可以在一个中下载缩小的代码。js 文件。

5.打包器:狄恩·爱德华兹 JavaScript 压缩器

Packer JavaScript Minifier while minifying JavaScript

Packer JavaScript Minifier Tool

如果你需要压缩你的 JavaScript 代码,狄恩·爱德华兹的 Packer 可以为你提供最令人满意的在线 JavaScript 压缩体验。它与 JavaScript 标记/原子以及位和字节模式一起工作。

此外,它让您实现 Base62 编码和收缩变量选项,同时缩小您的代码。要缩小您的 JS 代码,请将其复制并粘贴到 JavaScript 中,然后按“打包”按钮。它会自动为你生成精简的代码。

如何在 WordPress 中简化 JavaScript 大工具和插件

JavaScript 缩小在 WordPress 中遵循不同的程序。缩小 JavaScript 需要主机支持或者安装一个 WordPress 插件。安装一个 WordPress 缩小插件后,它会为你处理缩小过程。

有许多 JavaScript minification WordPress 插件。大多数插件遵循相同的缩小程序,可以从 WordPress 仪表盘运行。

让我们探索一些在 WordPress 中修改 JavaScript 的最有效的工具:

1.MyKinsta 中的代码精简

A screenshot of the Code minification feature in MyKinsta dashboard.

Code minification in MyKinsta.

如果你是 Kinsta 的客户,你可以使用我们的代码缩减功能来缩减你网站的 JS 和 CSS 文件。你所要做的就是启用 Kinsta CDN,并在你的 MyKinsta dashboard 中勾选几个复选框。你不必安装任何第三方插件-你的文件现在将被最小化。

这种缩小发生在 Cloudflare 的边缘网络上,该网络也支持 Kinsta CDN 。您的所有精简文件也缓存在 Cloudflare 的网络上,转化为额外的性能优势。

2.W3 总缓存

W3 Total Cache WordPress JavaScript Minification Plugin

W3 Total Cache WordPress JavaScript Minification Plugin

W3 Total Cache 让您通过精细控制来缩小 JavaScript、CSS 和 HTML。此外,它允许你缩小内嵌的,嵌入式的,或任何第三方的 JavaScript 或 CSS 代码。除了缩小之外,它还推迟了 JavaScript 和 CSS 以加快页面加载。此外,这些插件为 WordPress 网站提供了多个 JavaScript 缩小的机会。

3.WP-优化

WP Optimize WordPress JavaScript Minification Plugin

WP-Optimize WordPress JavaScript Minification Plugin

WP-Optimize 是一个 WordPress 优化插件,它提供了一个先进的缩小工具来缩小 CSS 和 JavaScript,同时清除缓存并优化你的 WordPress 网站。此外,它使您能够推迟 CSS 和 JavaScript。因此,网站会在主页加载后加载非关键资产,从而提高页面性能。

4.自动优化

Autoptimize WordPress JavaScript Minification Plugin

Autoptimize WordPress JavaScript Minification Plugin

自动优化是一个 WordPress 缩小插件,它可以聚集、缩小和缓存非聚集的 CSS 和 JavaScript,以减少页面加载时间,提高网站性能。它可以缩小和缓存脚本,内联关键 JavaScript,异步非聚合 JavaScript。

如果你期待一个主要关注网站性能的 WordPress JavaScript 化插件,自动优化是一个很好的选择。

5.快速缩小

Fast Velocity Minify WordPress JavaScript Minification Plugin

Fast Velocity Minify WordPress JavaScript Minification Plugin

Fast Velocity Minify 为 WordPress 用户提供高级的 JavaScript、CSS 和 Minify。当第一个未缓存的请求发生时,它在前端进行缩小。此外,该插件有一个直观的用户界面和简单的可用性。
T3】

摘要

从网页中获得最佳性能需要注意微小的细节。因此,缩小 HTML,CSS 和 JavaScript 进入你的网站性能待办事项。

我们已经探索了许多工具和插件,可以帮助您缩小 JavaScript。然而,每个提到的工具或插件都服务于相同的目的并有效地运行。
JavaScript 缩小化可能有些棘手...但是这个指南可以帮助你🚀 点击发送推文
根据您的使用案例,从该列表中选择一个工具,开始缩小您的 JavaScript 代码,以获得更快的网站性能

我们错过了你喜欢的 JavaScript 缩小工具或 WordPress 缩小插件吗?请在评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何快速修复混合内容警告(HTTPS/SSL)

原文:https://kinsta.com/blog/mixed-content-warnings/

HTTPS 运营你的网站不再是可选的。它不仅更安全(一切都是加密的,没有任何东西以明文形式传递),而且它还建立了信任,是一个搜索引擎排名因子,并提供更准确的推荐数据。不幸的是,当从 HTTP 迁移到 HTTPS 时,网站所有者会遇到几个问题。其中之一是“混合内容警告”。

由于 HTTP/2 ,与加密相关的性能问题在很大程度上得到了解决,而让我们加密为您提供了一种获得免费 SSL 证书的简单方法,从而改变了整个行业。

对在线业务来说,最重要的是,谷歌 Chrome 和 Mozilla Firefox 等网络浏览器正在打击不运行 HTTPS 的网站,并对潜在访问者发出更严格的警告。例如,如果你使用传统的 TLS 版本,你可能会在 Chrome 中遇到 ERR_SSL_OBSOLETE_VERSION 通知。警告是你最不希望访问者看到的。

为了帮助您避免这些问题,我们有一个关于如何从 HTTP 迁移到 HTTPS 的深入指南。但是,在完成该过程后,您可能仍然会看到混合内容的警告。

今天,我们将向您展示几种不同的方法,您可以在您的网站上解决这个问题。

更喜欢看视频版

什么是混合内容警告?

当用户试图访问的网站同时加载 HTTPS 和 HTTP 脚本或内容时,用户的浏览器中会出现混合内容警告。这可能会导致问题,因为 HTTP 和 HTTPS 是完全独立的协议。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

当你迁移到 HTTPS 时,所有东西都需要在那个协议上运行,包括你的图像,JavaScript 文件等等。下面是一些例子,说明如果你的一些内容仍然通过 HTTP 加载会发生什么。

混合内容警告示例

Chrome 是目前最受欢迎的浏览器,超过 77%的网络用户使用它。所以下面的警告是大多数访问者会看到的:

chrome mixed content

A mixed content warning in Google Chrome

当然,并不是所有人都在使用 Chrome。

下面是一个例子,说明当一个网站上显示混合内容警告时,Firefox 会发生什么:

firefox mixed content

A mixed content warning in Firefox

下面是 Microsoft Edge 中此警告的一个示例:

microsoft edge mixed content

A mixed content warning in Microsoft Edge

下面是它在 Internet Explorer 中的显示方式:

mixed content internet explorer

Internet Explorer mixed content warning

如您所见,Internet Explorer 可能是出现此警告的最糟糕的地方之一,因为它实际上会中断页面的呈现,直到弹出窗口被单击。

这不是你想让任何浏览器的访问者看到的错误。它是可以修复的,但是首先,你需要理解它为什么会发生。

在 HTTPS 运营您的网站不再是可选的。✅,但从 HTTP ➡️ HTTPS 可以带来混合内容的警告。通过本指南了解如何快速解决这些问题💥 点击推文

什么导致混合内容警告?

我们发现,最常见的混合内容警告出现在有人将其网站从 HTTP 迁移到 HTTPS 之后。一些 HTTP 链接只是被遗留下来,这导致混合内容警告开始触发。

以下是此警告的一些其他原因:

*不幸的是,在您开始故障诊断之前,您可能不会发现问题的真正根源。

记住这一点,让我们来看看一些可以用来修复混合内容警告的方法。

如何修复混合内容警告(4 个步骤)

您可以按照下面的四个简单步骤来修复混合内容警告。此过程假设您已经完成了以下工作:

在下面的例子中,我们将使用一个示例开发站点。

1.找出哪些资源是通过 HTTP 加载的

您需要做的第一件事是找出哪些资源仍在通过 HTTP 加载。

请记住,这些警告可能只发生在网站的某些区域,而不是全球范围。浏览到提示警告的页面,点击以下按钮启动 Chrome DevTools :

  • 窗口: F12 或 CTRL + Shift + I
  • macOS : Cmd + Opt + I

您也可以从浏览器的工具菜单中打开 Chrome DevTools:

launch chrome devtools

Chrome developer tools in browser tools menu

有几个地方你可以查看哪些资源没有在 HTTPS 加载。

第一个是控制台选项卡。请注意,您可能需要在打开 Chrome DevTools 后刷新页面,以便正确加载所有内容。

如果出现混合内容错误,它们将以红色或黄色突出显示。通常,它们会附带解释“该请求已被阻止;内容必须通过 HTTPS 提供。”这意味着浏览器设置被配置为自动阻止任何 HTTP 内容。

为了确保页面只在 HTTPS 上加载,Chrome 79 开始默认阻止混合内容。最近,他们推出了一些功能,开始自动升级混合图像和媒体。

因此,当使用 Chrome DevTools 时,您可能会看到混合内容的消息,指示某些请求的元素已自动升级:

mixed content warnings console

Chrome DevTools mixed content in console

在这里,我们可以清楚地看到,有各种不安全的元素导致了混合内容警告,包括样式表和脚本。

您还会注意到,一个请求是针对一个不安全的发出的。jpg 图片,自动升级到 HTTPS。(注意:如果这是在 Chrome 以外的其他浏览器中,它不会自动升级)。

你也可以在 Chrome DevTools 的安全标签中查看。这将显示任何不安全的来源:

chrome security devtools

Chrome DevTools security

网络选项卡下,您还可以找到被阻止请求的列表:

devtools network requests

Chrome DevTools Network

如果你没有使用 Chrome,或者你只是想快速总结错误,你也可以使用一个免费的工具,比如为什么没有挂锁

它会扫描单个页面,并向您显示所有不安全的资源:

whynopadlock mixed content

Why No Padlock summary of mixed content errors

这个工具很容易使用。您可以简单地输入您的 URL 并点击测试页面,它会向您显示存在的任何错误。另外,它是免费的!

批量检查 HTTPS 警告

如果你担心你的网站的其他部分,你可能想批量检查它。以下是为此推荐的一些选项:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

  • JitBit 有一个免费的小工具叫做 SSL Check ,你可以用它来抓取你的 HTTPS 网站,搜索不安全的图片和脚本,这些图片和脚本会在浏览器中触发警告信息。每个网站抓取的页面数量限制为 400 个。
  • Ahrefs 站点审计工具能够检测 HTTPS/HTTP 混合内容。如果您已经有了这个解决方案,或者您的营销团队中的某个人有,这可能是一个很好的彻底的方法。
  • HTTPS 检查器是一款桌面软件,你可以安装它来扫描你的网站。它可以帮助您检查“不安全”警告和内容发生重大变化后。它可以在 Windows、Mac 和 Ubuntu 上使用。免费计划允许您每次扫描检查多达 500 页。
  • SSL 不安全内容修复程序是一个 WordPress 插件,你可以安装在你的网站上来发现导致混合内容警告的错误。它可以免费使用,甚至可以自动修复错误。

使用上述任何工具都可以帮助您节省时间,而不必手动检查网站上的每个页面是否有混合内容警告和错误。为了彻底评估您站点上的潜在错误,您可以考虑使用这些解决方案的组合。

2.验证是否可以通过 HTTPS 访问 HTTP 资源

下一步是确认通过 HTTP 加载的资源可以通过 HTTPS 访问。他们很可能是,你只需要更新链接。

例如,假设我们的混合内容错误指向以下不安全的 jQuery 脚本和。jpg 图像:

如果我们将这两个 URL 都输入到浏览器的地址栏中,并将开头的“http”替换为“https ”,我们可以看到它们加载得很好。因此,我们只需要在我们的网站上进行搜索和替换。

3.执行搜索和替换

有很多方法可以执行搜索并替换。在本节中,我们将带您了解两个不同的推荐选项。

如果你很好奇,我们不推荐使用像真正简单的 SSL 这样的工具。虽然它是一个很棒的插件,但最好不要长期依赖这样的解决方案。您以后不会再迁移回 HTTP,所以最好用正确的方式,在您的数据库中更新您的 HTTP URLs(如下所示)。

如果你是 Kinsta 的客户,你可以使用我们的搜索和替换工具,它就在 MyKinsta 的仪表板中。

进入你网站的工具页面,点击搜索并替换:

The Search and Replace tool in MyKinsta

The Search and Replace tool in MyKinsta

接下来,在搜索字段中,输入要在数据库中查找的值。

在这种情况下,我们将使用我们的 HTTP 域:http://kinstalife.com。然后点击搜索按钮。搜索和替换工具将显示给定字符串的出现次数。

勾选更换框,继续更换过程。在替换为字段中,输入应该替换您正在搜索的值的内容。在这种情况下,我们将使用我们的 https://kinstalife.com 的 HTTPS 域名:

*我们还建议选中准备就绪时清除缓存复选框,以便在搜索和替换过程完成后自动清除 Kinsta 缓存。最后,点击替换按钮:

kinsta search and replace

HTTP to HTTPS search and replace in MyKinsta

重要提示:确保在这些字段中不包含任何前导/尾随空格,因为这可能会产生不良结果。

搜索和替换备选方案

如果你没有使用 Kinsta,你可以用免费的 Better Search Replace 插件完成同样的任务,然后在完成后简单地删除它:

厌倦了低于 1 级的 WordPress 托管支持而没有答案?试试我们世界一流的支持团队!查看我们的计划

The Better Search Replace WordPress plugin

The Better Search Replace WordPress plugin

你可以从 WordPress 插件目录下载这个工具,或者在你的 WordPress 仪表盘中搜索它。

激活后,只需搜索你的 HTTP 域名(http://yourdomain.com)并替换成你的 HTTPS 域名(https://yourdomain.com):

run better search replace

The Better Search Replace WordPress plugin options

或者,你也可以用互连/it 搜索替换 DB PHP 脚本WP-CLI 进行搜索和替换。

查看我们的视频,了解更多关于在 WordPress:

4.确认混合内容警告已消失

完成搜索和替换后,您需要再次检查您的站点以确认混合内容警告已经消失。我们建议在前台访问你的网站,点击几个页面,同时查看地址栏中的浏览器状态指示器。

在我们的网站上,我们可以看到。jpg 图像现已修复,但不安全的脚本警告仍然存在。

这是因为我们对从我们自己的域加载的资源进行了搜索和替换。jQuery 警告是由必须手动更新的外部脚本引起的:

mixed content script

Mixed content warning in Console

在这种情况下,需要将脚本手动添加到我们的头(【header.php】)中。应该是使用相对 URL,所以我们更新为//Ajax . Google APIs . com/Ajax/libs/jquery/3 . 3 . 1/jquery . min . js:

http external request

HTTP external script added to WordPress header in Theme Editor

搜索和替换很可能会解决您的所有问题。

一般来说,如果你的站点上有硬编码的东西,你只会遇到额外的问题。

如果你认为在你的插件主题中有一个外部脚本被硬编码,并且你很难找到它,请随时向相关开发者寻求帮助。

无混合内容警告示例

现在,您知道应该寻找什么来修复这些混合内容错误了。

以下是 Chrome 中的一个例子,当一切都在 HTTPS 上正确加载,没有混合内容警告时会发生什么:

chrome secure connection

Chrome no mixed content warnings

Firefox 将提供类似的信息:

firefox secure connection

Firefox no mixed content warnings

以下是您将在 Microsoft Edge 中看到的内容:

microsoft edge secure

Microsoft Edge no mixed content warnings

虽然消息的措辞可能会因您使用的浏览器而略有不同,但您应该会看到一个通知,指示一个安全连接。如果你这样做了,你会知道你不再处理你的网站上的混合内容错误。

HSTS 怎么样?

有些人可能想知道为什么不能简单地使用 HSTS (HTTP 严格传输安全)来解决这个问题。创建 HSTS 是为了当一个网站在 HTTPS 上运行时,强制浏览器使用安全连接。

它是一个安全头,你可以添加到你的 web 服务器中,并在响应头中反映为“严格传输安全”。

然而, HSTS 并不是所有混合内容警告的快速解决方案。HSTS 仅仅处理重定向,而混合内容警告是浏览器本身的一个特性。您也无法控制第三方网站是否启用 HSTS。

因此,你总是需要更新你的http://URL。Esa Jokinen 在这次服务器故障讨论中深入探究了原因。

其他建议(特殊情况)

如果您使用的是 Elementor 页面生成器,您还必须进入 Elementor 设置并在那里更新您站点的 URL,这样 CSS 文件将使用新的 URL 重新生成。

一旦你这样做了,清除缓存应该可以解决任何由 Elementor 引起的不安全警告。此外,如果你正在使用 Kinsta CDN ,建议也清除 CDN 区

Ready to make the switch to HTTPS, but frustrated by mixed content warnings? 🥴 Learn how to resolve this issue with help from this guide!Click to Tweet

摘要

处理混合内容的警告可能会令人沮丧,尤其是当它们可以归因于少数几个原因时。幸运的是,你可以采取一些简单的步骤来解决这些问题。

在大多数情况下,一个简单的搜索和替换应该可以快速解决您的混合内容警告,并让您的网站在几分钟内恢复正常。如果这不能解决所有问题,很可能会留下一两个硬编码的脚本。你需要找到它们并手动更新它们来清除这个错误,或者雇佣一个开发人员来为你做这件事。

如果您有任何反馈或遇到任何问题,请在下面的评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。**

2022 年,你的网站将使用 50 多种现代字体

原文:https://kinsta.com/blog/modern-fonts/

创建网站时,你需要准备好所有合适的工具来产生有效的影响。这包括一系列现代字体!

然而,你的主题可能没有你需要选择的 HTML 字体。或者,你可能对那些为你挑选的人不满意。

由于这些因素,能够安装一些自定义字体是必不可少的。今天我们将在这里讨论各种字体选项。但是首先,让我们把技术问题解决掉。

是什么让字体变得现代?

现代字体一点都不新鲜。这种风格最初是在 18 世纪发展起来的。尽管如此,他们的设计仍然与现代世界息息相关。事实上,你可以在任何地方看到它们。

那么,现代字体是什么样子的呢?

现代字体清晰、圆滑、大胆、专业、时尚。它们通常也是无衬线字体(但不总是如此),有时也属于草书字体(T2 字体)的范畴。他们的设计立刻与众不同,他们经常被用于标题和标志。他们可以很有团队精神,但不咄咄逼人。相反,他们很大胆,需要关注。

这里有一个使用现代字体的作品集网站的例子。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

注意到它有多浓缩和狭窄了吗?

chris wilhite

chriswilhitedesign.com

当然,这些都是泛泛而谈。现代印刷术已经发展,你也可以经常找到更多的风格的例子。但希望这能让你对什么是现代字体有一个大致的概念(以及为什么你会想使用它)。

Get fancy with your ✨ fonts ✨ thanks to this list of 50+ modern options ⬇️Click to Tweet

如何将下载的字体上传到 WordPress

从网上下载的自定义字体需要做一些额外的工作来运行,因为你不能像对谷歌字体这样的在线服务那样导入它们。相反,你需要手动上传你的字体或者使用插件来完成这项工作。

但是在你上传之前,你需要首先确保你的字体可以上网。我们这样说是什么意思?嗯,并不是所有的字体都是网页安全的或者与所有的浏览器兼容的。

但这不是一个巨大的麻烦。只需使用免费的 Webfont Generator 工具就可以将你在网上找到的任何自定义字体转换成所有 web 浏览器都可读和可用的格式。

Modern fonts

Turn any fonts into web-safe fonts

完成这一步对优化你的字体速度也有很大的帮助。然而,这还不是所有的全部。你也应该遵循一些提示来确保你的自定义字体不会消耗资源或者不必要地减慢你的站点的加载时间:

  • 检查性能 使用 GTmetrix ,监控 HTTP 请求的数量。如果有很多,这可能意味着你的网站使用的字体比你意识到的要多得多。我这里说的是自动安装在插件和主题旁边的字体(不是你手动添加的)。
  • 检查你的分析。在这里,您可以看到哪些字体容器格式在您的网站上最常被访问。最常见的选择是 EOT、TTF、WOFF 和 WOFF2。当考虑支持哪些时,这可以帮助您确定优先支持哪些。
  • 确保字体缓存在本地。又不是每隔一天就更新字体。这意味着字体可以安全地缓存在经常访问的浏览器中。随着时间的推移,这将限制 HTTP 请求的数量。

手动上传字体需要一点技术技巧,但对大多数网站所有者来说并不是遥不可及的。

  1. 下载你选择的自定义现代字体(下面有很多例子)。
  2. 保存你网站的备份(包括所有内容和数据库)和/或使用子主题进行以下更改。
  3. 将. zip 格式的字体文件上传到文件夹 WP-content/themes/your-theme-name/fonts。如果没有“字体”文件夹,那就创建一个,然后上传你的。zip 字体文件。使用您选择的任何FTP 客户端来完成此操作。
  4. WordPress 仪表盘中,导航到外观>主题编辑器并访问 style.css 文件。您需要向该文件添加一个自定义代码片段。将适当的字体系列和 URL 添加到代码片段中,然后单击更新文件
@font-face { 
font-family: YOUR FONT NAME; 
src: url(http://sitename.com/wp-content/themes/themename/fonts/font-name.ttf); 
font-weight: normal; 
}

上面的代码将字体添加到您的站点中。接下来,你需要告诉 WordPress 应该在哪里使用字体。为此,再次打开 style.css 并使用以下代码片段:

.SITE ELEMENT {
font-family: "FONT NAME", Helvetica, sans-serif; 
}

在这个代码片段中,您需要确定您希望字体应用到站点的哪个方面,并在更新文件之前指定字体名称。

相反,如果你想跳过所有这些手动上传的东西,你可以使用插件将字体添加到 WordPress。实心选项包括使用任何字体。顾名思义,您可以使用它将任何自定义字体上传到您的站点,并将其分配给 CSS 元素。
T3】

2022 年将使用的 56 种最现代的字体

既然你已经知道了如何优化和上传自定义字体,我们现在可以提供一个健康的现代字体和选项列表供你选择。

1.介绍

Modern fonts: intro

Intro

Intro 是一种标准外观的现代字体,提供粗体线条和演示,可轻松用于标题。该字体系列包括 72 种字体,从细到粗有 8 种不同的粗细,给您极大的灵活性。

2. Komoda

Modern fonts: komoda

Komoda

另一个选择是 Komoda 。这个字体是浓缩的,看着超级有意思。这是所有的大写字母和无衬线的块状外观,每个字母的中线被抬高。它的连字说明了一点。这是标识的完美选择。

3.煽动

Modern fonts: stoked

Stoked

Stoked 是另一个全大写字母系列,为标题和徽标提供了独特的外观。保持清晰的同时很有趣。它的定义特征是在每个字母上包含双线,以及给它一种模版外观的换行符。

4.经典玛丽莎

classy marisa

Marisa

还有优雅的玛丽莎。这种现代字体优雅流畅,为你的标识和标题提供了一种更细更精致的字体选择。它有非常有趣的连字、替代符号和装饰,可以为你想要分享的任何文本添加更多的字符。

5 .中心

canter

Canter

慢跑是另一个不错的选择。这是一种无衬线字体,特点是全部大写,并有压缩的间距。它还有六种不同的重量,包括一个 3D 选项和一个突出的投影选项。

6.幸运

lucky

Lucky

Lucky 是另一种值得考虑的现代字体。这是另一个无衬线选择,可以很好地作为一个标志或标题。它还具有独特的编辑品质,可以很容易地应用于杂志在线出版物

7.扎菲尔

Modern fonts: zafir

Zafir

Zafir 提供了另一种值得考虑的现代字体选择。在演示中它是超级小的。Zafir 是另一个全大写选项。这是一种带有曲线的衬线字体,整体看起来很有趣,可以很好地用于徽标和标题

8.小海湾

coves

Coves

或者你可以使用凹槽。它有两种重量,轻和大胆,并为您的最新项目提供了一个优雅和精简的字体选项。它也可以用于标准文本和标题。它确实是多用途的。

9. Azonix

azonix

Azonix

Azonix 提供了另一种现代字体选择,这次是未来风格。这是一种强调几何外观的无衬线字体。它全是大写字母,看起来很容易被用在科幻电影的片头字幕中。

10.方舟

arkhip

Arkhip

Arkhip 是另一个免费的字体选择,它保持了的现代设计,同时回忆起过去的时代。它使用俄罗斯印刷元素来创造一些现代和真正新的东西。

11.最好的

Modern fonts: prime

Prime

还有一种字体可以考虑,叫做 Prime 。这是一种现代的无衬线字体,具有粗体线条和整体未来感。它有几何角,看起来非常适合未来派或科技主题的网站。

12.地球仪

glober

Glober

Glober 是另一种你应该看看的现代字体。该字体系列包括 18 种粗细字体,平均分为 9 种竖排字体和 9 种斜体字。这是一种 san serif 字体,易于阅读,易于应用于许多不同的情况,包括标题以及正文

13.变得温柔

made gentle

MADE Gentle

造得温柔是另一种值得考虑的现代字体。它被认为是一种软衬线,灵感来自库珀黑色字体。这是一种大胆而圆润的复古字体,看起来让人想起 20 世纪 70 年代的旧书封面和标牌。

14.北欧的

nordic

Nordic

Nordic 既现代又经典,提供两种字体和三种重量可供选择。这个设计的灵感来自挪威的符文,非常适合用在标题和标志上。

15.马达克

Modern fonts: maddac

Maddac

Maddac 字体为你的网站提供了一个 T2 风格的选择。它是粗体,块状,无衬线。它设计现代,制作独特。每个字母对其设计的一个方面都有轻微的角度或倾斜,为等式提供了一点风格。

16.鳄鱼

croc

Croc

Croc 不就是这么酷的字体吗?这是一种大胆的衬线字体,具有标志性的风格,既怀旧又不失清新。

17.浅绿色

Modern fonts: aqua

Aqua

Aqua 是你应该看看的另一种字体。这一个有它的新艺术品质,使它看起来永恒。这是一种大胆而简单的字体,它的特色是装饰和连字,使它从其他类似的字体中脱颖而出。

18.宣言

manifesto

Manifesto

宣言做一个大胆的声明。这种字体的灵感来自意大利理性主义运动,并具有明显的编辑性质。将其用于标题、徽标和标题。将其用于印刷和在线设计。在这方面,它确实是多功能的。

19.奥克尼群岛

orkney

Orkney

奥克尼是一种可爱的看起来很专业的字体。字体是几何设计,可用于多种用途。将其用于标题或徽标。将其用于标准文本。在印刷媒体或数字媒体中使用。这里没有限制。

20.埃尔帕

elppa

Elppa

Elppa 拥有迷人的多面未来外观。字体很小,但也捕捉到了一种太空时代的感觉。用它来印刷和网页设计。它适用于徽标和标题,可能不适用于正文,但肯定对图形等有用。

21.玉米

corn

Corn

玉米是一种有趣的字体,有着圆角和农场风格的感觉。它由 14 种不同的样式组成,您可以立即开始将它们用于标题、页眉和徽标。如果您愿意,有些样式甚至可以用于正文。你可以用它来构建一个完整的网站设计。

22. Koliko

koliko

Koliko

或者你可以选择 Koliko T1,这是一种非常有趣的字体,具有广泛的吸引力。它有三种风格,每一种都包含了形式和功能的完美结合。

23.怪癖

Modern fonts: quirk

Quirk

古怪的字体实际上是一种看起来很古怪的字体。它的名字是个不错的选择。这是一种全大写字体,包括有趣的连字和可堆叠元素。

24.法语

le french

Le French

Le French 是一种复杂的字体选择,尤其是如果你想要复制那种复古的法国咖啡馆风格。菜单和美食相关网站的绝佳选择。它也可以用于标题、页眉、徽标和正文。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

25.慕尼黑

munich

Munich

慕尼黑是一个可爱的无衬线字体选择,这将是一个标志或标题图形的绝佳选择。它巍然屹立,气势磅礴,不具威胁性。

26.西北

northwest

Northwest

西北是一种现代风格的字体,有复古的感觉。这让人想起运动装备标志和户外杂志标题。有了方形衬线和装饰元素,这种字体可以很好地用于任何户外主题的内容。

27.莫德卡

modeka

Modeka

Modeka 四四方方的,现代的,说实话超级酷。这是一个现代的选择,可以适应多种用途。每个字母都添加了角度,这提供了一种独特的风格,可能正好适合你的下一个项目。

28.放弃

disclaimer

Disclaimer

免责声明是一种窄而粗的字体选择,非常适合各种用途。它有一个超级浓缩的风格,使字母挺立,气势磅礴。这对于页眉或标题来说非常有用。

29.第五大道

5th avenue

5th Avenue

第五大道非常别致,古典气息非常适合官方标志和品牌。这是一种带有衬线的粗体字体,由于大量的替代字母增加了风格和兴趣,因此非常突出。

30.魁克斯

Modern fonts: quakiez

Quakiez

Quakiez 是另一个现代字体选择,为我们的列表提供了衬线选项。它的设计考虑到了奢华,但仍然保留了极简主义的元素。它有两种样式,可用于徽标、标题、标题等。

31.现代户外

modern outdoor

Modern Outdoor

或者你可以选择现代户外并且一看到就立即调用露营和户外。这种字体非常适合标题、页眉和徽标,并且会对海报产生真正的影响。它需要关注,漂亮的帽子进一步保证了它的户外感觉。

32.双曲线

Modern fonts: Hyperbola

双曲线圆润,充满未来感。事实上,它看起来非常太空——从好的方面来说。这种字体有圆形的柜台,同时保持了整体的盒子形状。

33.拳击

boxing

Boxing

Boxing 字体方方正正、干净利落,非常适合标题、标题和标志。都是大写的,高大上的,看着挺有意思的。最重要的是,它非常实用,可以以无数种方式重新利用。

34. Sonder

sonder

Sonder

Sonder 是另一种多面字体,真的。它带有一个平板和无衬线字体选项。它有多种重量以及规则和粗糙的风格。粗糙风格的特点是字母之间有一些间隙,营造出质朴自然的外观。

35.龙目岛

lombok

Lombok

Lombok 是一种非常优雅的细字体。这是一个无衬线选项,带有几何元素,使其脱颖而出,显得非常独特。这是页眉、徽标和标题的理想选择。

厌倦了慢热的主持人?Kinsta 的设计考虑了速度和性能。查看我们的计划

36.地区

distrito

Distrito

Distrito 是一种风格独特的全大写字体。每个字母稍微倾斜,提供了一个独特的外观,可以很好地翻译用于标志和标题。这也是一种受哥伦比亚模块化设计启发的全大写字体。

37.副翼

ailerons

Ailerons

副翼看起来像是外星人标志上出现的字体。它很好地实现了这种美感。它是无衬线和全大写的,无论你把它放在哪里都会产生影响,尽管标题和页眉是最好的。

38.埃特纳

Modern fonts: ethna

Ethna

Ethna 外观经典,但又不失现代风格。这是一个受人文主义设计启发的无衬线字体系列,很好地将复古和现代设计元素结合起来,创造出新的东西。这个在任何用例中都能很好地工作。

39.罗亚路

noelle

Noelle

Noelle 是一种几何衬线字体,旨在给人留下积极的第一印象。它的设计非常简约,适合任何行业的标题和页眉。它有一些复古元素,但看起来仍然很新鲜。在网上或书面上使用它。另外,它附带了一个脚本字体作为奖励。

40.后果

sequel

Sequel

Sequel 是一种圆形字体,非常适合标识和标题。最重要的是,它配有一系列连字,为您用它们创作的任何东西提供了风格和趣味。这里的设计很大胆,但不气派。

41.高等级的;级别较高的;较重要的

Higher

更高的是另一种精致的字体选择,提供了经典的外观。这种全大写字体非常简洁,要求很高,可以为你使用它的任何东西提供即时的风格。

42.毫微;纤(10 的负九次方)

nano

Nano

Nano 是一种非衬线字体,具有未来主义的外观,并且全部是小写字母,这使它成为这个列表中的一个独特选项。字母本身非常现代,易于识别,是标识和其他品牌材料的绝佳选择。然而,它最适合短短语,因为长句子可能有点难以辨认。

43.我叫 joliet

jollin

Jollin

Jollin 是一种现代字体,在一些字母上有卷曲的线索,看起来很厚实。这种无衬线字体有常规和斜体版本,包括各种替代字母,因此您可以根据自己的心情让您的文本看起来更简单或更花哨。

44.现象

phenomena

Phenomena

现象是一种窄而块状的字体,边缘呈圆形。它是一种声明,可以很容易地用于标题、标志或页眉。它有 7 种不同的风格,从细到粗,提供了大量的标准文本使用机会。

45.口径

calibre

Calibre

Calibre 是一种超级浓缩字体,如果你愿意的话,它可以盖过你的内容——以一种好的方式。这是一个全大写的选项,另外还包括数字、字形和西文字符

46.星期天

sundays

Sundays

Sundays 是一种衬线字体,绝对属于当今时代,但也有一种不可否认的经典感。它比经典的类似字体更薄、更弯曲,并且具有适合杂志标题、网站徽标、页眉等的样式。

47.基础

cornerstone

Cornerstone

基石是另一种块状字体,它提供了模块化设计,可以在从徽标到标题的许多不同应用中工作。

48.有一天

one day

One Day

有一天是一种细字体,带有有趣的断开线,使其独一无二。这是另一种全大写字体,具有轻薄的风格。它包括数字和字形,感觉几何而不太方方正正。

49. Kollektif

kollektif

Kollektif

Kollektif 是一种古典现代字体,可以有多种用途。它的设计是几何的,有两种重量。它也是为印刷和网络使用而优化的。

50.乡愁

Modern fonts: nostalgia

Nostalgia

然后是怀旧,一种具有足够复古吸引力的现代字体,让人感觉仿佛是几十年前创作的。它包括 3 种字体,以及替代字形,连字和花。这将是一个伟大的选择标志,标题,海报,或邀请函。

51.埃利夏

elixia

Elixia

Elixia 有着适合炼丹师巢穴的缥缈外观。它是几何图形,每个字母上都有额外的线角,提供了独特的风格。

52.鲑

salmon

Salmon

或者你可以选择三文鱼。这种无衬线字体是大胆和最小的。它是标题、徽标和页眉的理想选择。这是一个全大写的设计,包括一个填充和轮廓的版本,可以很好地搭配在一起。

53.Thinoo

thinoo

Thinoo

Thinoo 是另一种 san serif 字体。它有一个薄和大胆的风格,并包括所有的字母风格,包括数字,符号和标点符号。既专业又干净。简单却引人注目。这一款适用于任何类型的网站和印刷材料。

54.热爱夏天

summer loving

Summer Loving

或者你可以使用夏日爱好,这是一种超级有趣的现代字体,包括多种字体样式,这样你就可以只用一种字体来创建一个完整的设计。它带有 sans 字体和画笔细节,可以立即为您的项目添加维度。它还包括连字和替代字母。

55.Silverfake

Silverfake

Silverfake

Silverfake 为标题、徽标、页眉和印刷材料提供宽间距衬线字体选项。举例来说,这个作为 t 恤标志会很好看。

56.维也纳

vienna

Vienna

最后,还有维也纳。这种现代字体是一种衬线字体,具有杂志封面上使用的经典字体的所有吸引力,并经过足够的修改以迎合当今的审美。它很简单,包括所有大写字母、数字和标点符号。

If modern fonts are just what your website needs 📝, you'll want to check out this guide to 50+ fresh options✨Click to Tweet

总结

在你的网站上使用自定义字体有很多原因。无论你是想更好地适应你的品牌,还是想让你的内容在所有浏览器上都更具可读性,上传你自己的 T2 现代风格字体是值得的。

即便如此,这个过程初看起来可能令人望而生畏。你必须找到一种字体,下载它,把它放到一个. zip 文件中,然后用一个 FTP 客户端把它上传到你网站上的正确目录。你需要将代码片段粘贴到你的主题的 CSS 文件的的适当区域。你可以选择手动或者通过使用插件来完成(或者你可以雇佣一个开发者)。

然而,无论你如何处理这个过程,你都可以放心,最终的结果将是时尚的,并为你的网站的整体外观增添特色。希望我们在这里收集的现代字体能够帮助你找到适合你网站的字体。无论是粗或细,圆或粗,点缀或平原,你选择的字体将产生影响!

(建议阅读:如何隐藏 WordPress 中的页面和帖子标题)


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何创建 MongoDB 数据库:需要了解的 6 个关键方面

原文:https://kinsta.com/blog/mongodb-create-database/

根据您对软件的需求,您可以优先考虑灵活性、可伸缩性、性能或速度。因此,开发人员和企业在选择他们需要的数据库时经常感到困惑。如果您需要一个提供高度灵活性和可伸缩性的数据库,以及用于客户分析的数据聚合,MongoDB 可能是您的最佳选择!
在这本有用的指南中了解更多关于 MongoDB 数据库的结构以及如何创建、监控和管理您的数据库🛠 点击发推文
在本文中,我们将讨论 MongoDB 数据库的结构以及如何创建、监控和管理您的数据库!让我们开始吧。

MongoDB 数据库是如何构造的?

MongoDB 是一个无模式的 NoSQL 数据库。这意味着您不像为 SQL 数据库那样为表/数据库指定结构。
您知道 NoSQL 数据库实际上比关系型数据库更快吗?这是由于索引、分片和聚合管道等特征。MongoDB 还以其快速的查询执行而闻名。这就是谷歌、丰田和福布斯等公司青睐它的原因。

下面,我们将探讨 MongoDB 的一些关键特征。

文档

MongoDB 有一个文档数据模型,将数据存储为 JSON 文档。文档自然地映射到应用程序代码中的对象,使得开发人员使用起来更加简单。

在关系数据库表中,必须添加一列才能添加新字段。JSON 文档中的字段就不是这样了。JSON 文档中的字段可能因文档而异,所以它们不会被添加到数据库中的每条记录中。

文档可以存储像数组这样的结构,这些结构可以嵌套起来表达层次关系。此外,MongoDB 将文档转换成二进制 JSON (BSON)类型。这确保了更快的访问和对各种数据类型的支持,如字符串、整数、布尔数等等!

副本集

当您在 MongoDB 中创建新数据库时,系统会自动为您的数据创建至少 2 个副本。这些副本被称为“副本集”,它们不断地在它们之间复制数据,确保提高数据的可用性。它们还提供系统故障或计划维护期间的停机保护。

收集

集合是与一个数据库相关联的一组文档。它们类似于关系数据库中的表。

然而,集合要灵活得多。首先,它们不依赖于模式。其次,文档不必是相同的数据类型!

要查看属于一个数据库的集合列表,使用命令listCollections

聚合管道

你可以使用这个框架来组合几个操作符和表达式。它很灵活,因为它允许您处理、转换和分析任何结构的数据。

正因为如此,MongoDB 允许跨 150 个操作符和表达式的快速数据流和特性。它还有几个阶段,比如 Union 阶段,可以灵活地将多个集合的结果放在一起。

指数

您可以索引 MongoDB 文档中的任何字段,以提高效率和查询速度。索引通过扫描索引来限制检查的文档,从而节省了时间。这难道不比阅读集合中的每个文档好得多吗?

您可以使用各种索引策略,包括多个字段的复合索引。例如,假设您有几个文档,在不同的字段中包含员工的名字和姓氏。如果希望返回名字和姓氏,可以创建一个同时包含“姓氏”和“名字”的索引。这比在“姓”上有一个索引,在“名”上有另一个索引要好得多。

您可以利用 Performance Advisor 之类的工具来进一步了解哪个查询可以从索引中受益。

分片

分片将单个数据集分布在多个数据库中。然后,该数据集可以存储在多台机器上,以增加系统的总存储容量。这是因为它将较大的数据集分割成较小的块,并将它们存储在不同的数据节点中。

MongoDB 在集合级别对数据进行分片,将集合中的文档分布到集群中的各个分片上。这通过允许架构处理最大的应用程序来确保可伸缩性。

如何创建 MongoDB 数据库

您需要首先安装适合您的操作系统的 MongoDB 软件包。进入'下载 MongoDB 社区服务器'页面。从可用选项中,选择最新的“版本”、“打包”格式作为 zip 文件,选择“平台”作为您的操作系统,然后单击“下载”,如下所示:

This image depicts the available options- Version, Platform, and Package while downloading MongoDB Community Server.

MongoDB community server download process. (Image source: MongoDB Community Server)

这个过程非常简单,所以您很快就可以在系统中安装 MongoDB 了!

一旦你完成了安装,打开你的命令提示符并输入mongod -version来验证它。如果您没有得到以下输出,而是看到一串错误,您可能需要重新安装它:

This is a code snippet to check the MongoDB version after installation.

Verifying MongoDB version. (Image source: configserverfirewall)

使用 MongoDB Shell

在我们开始之前,请确保:

  • 您的客户端具有传输层安全性,并且在您的 IP 允许列表中。
  • 您在所需的 MongoDB 集群上有一个用户帐户和密码。
  • 您已经在设备上安装了 MongoDB。

步骤 1:访问 MongoDB Shell

要访问 MongoDB shell,请键入以下命令:

net start MongoDB

这将产生以下输出:

This is a code snippet to initialize the MongoDB server

MongoDB server initialization. (Image source: c-sharpcorner)

前面的命令初始化了 MongoDB 服务器。要运行它,我们必须在命令提示符下键入mongo

This is a code snippet to run the MongoDB server.

Running MongoDB server. (Image source: bmc)

在 MongoDB shell 中,我们可以执行命令来创建数据库、插入数据、编辑数据、发出管理命令和删除数据。

步骤 2:创建数据库

与 SQL 不同,MongoDB 没有数据库创建命令。取而代之的是一个名为use的关键字,它切换到一个指定的数据库。如果数据库不存在,它将创建一个新的数据库,否则,它将链接到现有的数据库。

例如,要启动名为“公司”的数据库,请键入:

use Company

This is a code snippet to create a database in MongoDB.

Creating database in MongoDB.

您可以输入db来确认您刚刚在系统中创建的数据库。如果您创建的新数据库弹出,则您已经成功地连接到它。

如果您想检查现有的数据库,输入show dbs,它将返回您系统中的所有数据库:

This is a code snippet to view the existing databases in the system.

Viewing databases in MongoDB.

默认情况下,安装 MongoDB 会创建管理、配置和本地数据库。

您是否注意到我们创建的数据库没有显示出来?这是因为我们还没有将值保存到数据库中!我们将在数据库管理部分讨论插入。

使用 Atlas 用户界面

您还可以开始使用 MongoDB 的数据库服务 Atlas。虽然您可能需要付费才能使用 Atlas 的一些功能,但大多数数据库功能都可以通过免费层获得。免费层的特性足以创建一个 MongoDB 数据库。

在我们开始之前,请确保:

  1. 你的 IP 在黑名单上。
  2. 您在想要使用的 MongoDB 集群上有一个用户帐户和密码。

要用 AtlasUI 创建一个 MongoDB 数据库,打开一个浏览器窗口并登录到https://cloud.mongodb.com。从你的集群页面,点击浏览收藏。如果集群中没有数据库,您可以通过点击添加我自己的数据按钮来创建您的数据库。

提示将要求您提供数据库和集合名称。给它们命名后,点击创建,就大功告成了!您现在可以输入新文档或使用驱动程序连接到数据库。

管理您的 MongoDB 数据库

在这一节中,我们将介绍一些有效管理 MongoDB 数据库的好方法。您可以通过使用 MongoDB Compass 或通过集合来实现这一点。

使用集合

关系数据库拥有定义良好的表,具有指定的数据类型和列,而 NoSQL 拥有集合而不是表。这些集合没有任何结构,并且文档可以不同—您可以有不同的数据类型和字段,而不必在同一集合中匹配另一个文档的格式。

为了演示,让我们创建一个名为“Employee”的集合,并向其中添加一个文档:

db.Employee.insert(
  {
   	"Employeename" : "Chris",
   	"EmployeeDepartment" : "Sales"
  }
)

如果插入成功,将返回WriteResult({ "nInserted" : 1 }):

This code snippet returns WriteResult({

Successful insertion in MongoDB.

这里,“db”指的是当前连接的数据库。“雇员”是公司数据库中新创建的集合。

我们在这里没有设置主键,因为 MongoDB 会自动创建一个名为“_id”的主键字段,并为它设置一个默认值。

运行以下命令以 JSON 格式签出集合:

db.Employee.find().forEach(printjson)

输出:

{
  "_id" : ObjectId("63151427a4dd187757d135b8"),
  "Employeename" : "Chris",
  "EmployeeDepartment" : "Sales"
}

虽然“_id”值是自动分配的,但您可以更改默认主键的值。这一次,我们将在“雇员”数据库中插入另一个文档,其“_id”值为“1”:

db.Employee.insert(
  {  
   	"_id" : 1,
   	"EmployeeName" : "Ava",
   	"EmployeeDepartment" : "Public Relations"
  }
)

在运行命令db.Employee.find().forEach(printjson)时,我们得到以下输出:

The output shows the documents in the Employee collection along with their primary key

Documents in the collection with their primary key.

在上面的输出中,“艾娃”的“_id”值被设置为“1 ”,而不是自动赋值。

现在我们已经成功地将值添加到数据库中,我们可以使用以下命令检查它是否出现在系统中现有的数据库中:

show dbs

The output shows the Employee collection in the existing databases in our system.

Displaying the list of databases.

瞧啊。您已经在系统中成功创建了一个数据库!

使用 MongoDB 指南针

虽然我们可以在 Mongo shell 中使用 MongoDB 服务器,但有时会很繁琐。您可能会在生产环境中遇到这种情况。

然而,有一个由 MongoDB 创建的 compass 工具(适当地命名为 Compass)可以使它变得更容易。它有一个更好的 GUI,并增加了一些功能,如数据可视化、性能分析和对数据、数据库和集合的 CRUD(创建、读取、更新、删除)访问。

你可以为你的操作系统下载 Compass IDE 并通过简单的过程安装它。

接下来,打开应用程序,通过粘贴连接字符串来创建与服务器的连接。如果找不到,可以点击单独填写连接字段。如果您在安装 MongoDB 时没有更改端口号,只需单击 connect 按钮,您就可以进入了!否则,只需输入您设置的值并点击连接

This image shows the New Connection window, where you can choose to paste the connection url.

New Connection window in MongoDB.. (Image source: mongodb)

接下来,在新的连接窗口中提供主机名、端口和身份验证。

在 MongoDB Compass 中,您可以创建一个数据库并同时添加它的第一个集合。你可以这样做:

  1. 点击创建数据库打开提示。
  2. 输入数据库及其第一个集合的名称。
  3. 点击创建数据库

您可以通过点击数据库的名称,然后点击收藏的名称来查看 Documents 选项卡,将更多的文档插入到您的数据库中。然后,您可以单击添加数据按钮,将一个或多个文档插入您的收藏。

添加文档时,您可以一次输入一个文档,或者作为一个数组中的多个文档输入。如果要添加多个文档,请确保这些逗号分隔的文档用方括号括起来。例如:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] },
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] },
{ _id: 6, item: { name: "strawberry", code: "123" }, tags: [ "B" ] }

最后,单击插入将文档添加到您的收藏中。这是文档正文的样子:

{
  "StudentID" : 1
  "StudentName" : "JohnDoe"
}

这里,字段名是“学生 ID”和“学生名”。字段值分别为“1”和“JohnDoe”。

有用的命令

您可以通过角色管理和用户管理命令来管理这些集合。

用户管理命令

MongoDB 用户管理命令包含与用户相关的命令。我们可以使用这些命令创建、更新和删除用户。

dropUser

此命令从指定的数据库中删除单个用户。下面是语法:

db.dropUser(username, writeConcern)

这里,username是一个必需字段,它包含带有关于用户的认证和访问信息的文档。可选字段writeConcern包含创建操作的写关注级别。写关注级别可由可选字段writeConcern决定。

在删除具有userAdminAnyDatabase角色的用户之前,确保至少有一个其他用户具有用户管理权限。

在本例中,我们将在测试数据库中删除用户“user26 ”:

use test
db.dropUser("user26", {w: "majority", wtimeout: 4000})

输出:

> db.dropUser("user26", {w: "majority", wtimeout: 4000});
true
创建用户

该命令为指定的数据库创建新用户,如下所示:

db.createUser(user, writeConcern)

这里,user是一个必需字段,包含要创建的用户的认证和访问信息的文档。可选字段writeConcern包含创建操作的写关注级别。写关注级别可由可选字段writeConcern确定。

如果数据库中已经存在用户,createUser将返回重复用户错误。

您可以在测试数据库中创建新用户,如下所示:

use test
db.createUser(
  {
    user: "user26",
    pwd: "myuser123",
    roles: [ "readWrite" ]  
  }
);

输出如下所示:

Successfully added user: { "user" : "user26", "roles" : [ "readWrite", "dbAdmin" ] }
grantRolesToUser

您可以利用此命令向用户授予额外的角色。要使用它,您需要记住以下语法:

db.runCommand(
  {
    grantRolesToUser: "<user>",
    roles: [ <roles> ],
    writeConcern: { <write concern> },
    comment: <any> 
  }
)

您可以在上述角色中指定用户定义的角色和内置角色。如果您想要指定一个存在于运行grantRolesToUser的同一个数据库中的角色,您可以使用一个文档来指定角色,如下所述:

{ role: "<role>", db: "<database>" }

或者,您可以简单地用角色的名称指定角色。例如:

"readWrite"

如果您想要指定存在于不同数据库中的角色,您必须使用不同的文档来指定角色。

要在数据库上授予角色,您需要在指定的数据库上执行grantRole操作。

这里举个例子给你一个清晰的画面。例如,以 products 数据库中具有以下角色的用户 productUser00 为例:

"roles" : [
  {
    "role" : "assetsWriter",
    "db" : "assets"
  }
]

grantRolesToUser操作为“productUser00”提供了股票数据库上的readWrite角色和产品数据库上的读取角色:

use products
db.runCommand({
  grantRolesToUser: "productUser00",
  roles: [
    { role: "readWrite", db: "stock"},
    "read"
  ],
  writeConcern: { w: "majority" , wtimeout: 2000 }
})

产品数据库中的用户 productUser00 现在拥有以下角色:

"roles" : [
  {
    "role" : "assetsWriter",
    "db" : "assets"
  },
  {
    "role" : "readWrite",
    "db" : "stock"
  },
  {
    "role" : "read",
    "db" : "products"
  }
]
用户信息

您可以使用usersInfo命令返回一个或多个用户的信息。下面是语法:

db.runCommand(
  {
    usersInfo: <various>,
    showCredentials: <Boolean>,
    showCustomData: <Boolean>,
    showPrivileges: <Boolean>,
    showAuthenticationRestrictions: <Boolean>,
    filter: <document>,
    comment: <any> 
  }
)
{ usersInfo: <various> }

在访问方面,用户可以随时查看自己的信息。要查看另一个用户的信息,运行该命令的用户必须拥有对另一个用户的数据库执行viewUser操作的权限。

运行userInfo命令时,根据指定的选项,您可以获得以下信息:

{
  "users" : [
    {
      "_id" : "<db>.<username>",
      "userId" : <UUID>, // Starting in MongoDB 4.0.9
      "user" : "<username>",
      "db" : "<db>",
      "mechanisms" : [ ... ],  // Starting in MongoDB 4.0
      "customData" : <document>,
      "roles" : [ ... ],
      "credentials": { ... }, // only if showCredentials: true
      "inheritedRoles" : [ ... ],  // only if showPrivileges: true or showAuthenticationRestrictions: true
      "inheritedPrivileges" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true
      "inheritedAuthenticationRestrictions" : [ ] // only if showPrivileges: true or showAuthenticationRestrictions: true
      "authenticationRestrictions" : [ ... ] // only if showAuthenticationRestrictions: true
    },
  ],
  "ok" : 1
} 

现在您已经对使用usersInfo命令可以完成什么有了大致的了解,接下来可能会出现的一个明显的问题是,对于查看特定用户和多个用户,什么命令会很方便?

这里有两个简单的例子来说明这一点:
要查看特定用户的特定权限和信息,而不是凭证,对于在“office”数据库中定义的用户“Anthony ”,执行以下命令:

db.runCommand(
  {
    usersInfo:  { user: "Anthony", db: "office" },
    showPrivileges: true
  }
)

如果您想查看当前数据库中的某个用户,您只能通过名称来提及该用户。例如,如果您在主数据库中,并且主数据库中存在名为“Timothy”的用户,您可以运行以下命令:

db.getSiblingDB("home").runCommand(
  {
    usersInfo:  "Timothy",
    showPrivileges: true
  }
)

接下来,如果希望查看不同用户的信息,可以使用数组。您可以包含可选字段showCredentialsshowPrivileges,也可以选择不包含它们。该命令如下所示:

db.runCommand({
usersInfo: [ { user: "Anthony", db: "office" }, { user: "Timothy", db: "home" } ],
  showPrivileges: true
})
revokeRolesFromUser

您可以利用revokeRolesFromUser命令从角色所在的数据库上的用户中删除一个或多个角色。revokeRolesFromUser命令的语法如下:

db.runCommand(
  {
    revokeRolesFromUser: "<user>",
    roles: [
      { role: "<role>", db: "<database>" } | "<role>",
    ],
    writeConcern: { <write concern> },
    comment: <any> 
  }
)

在上述语法中,您可以在roles字段中指定用户定义的和内置的角色。与grantRolesToUser命令类似,您可以在文档中指定要撤销的角色或使用其名称。
要成功执行revokeRolesFromUser命令,需要在指定的数据库上有revokeRole动作。

这里有一个例子来说明这一点。产品数据库中的productUser00实体具有以下角色:

"roles" : [
  {
    "role" : "assetsWriter",
    "db" : "assets"
  },
  {
    "role" : "readWrite",
    "db" : "stock"
  },
  {
    "role" : "read",
    "db" : "products"
  }
]

下面的revokeRolesFromUser命令将删除用户的两个角色:来自products的“读取”角色和来自“资产”数据库的assetsWriter角色:

use products
db.runCommand( { revokeRolesFromUser: "productUser00",
  roles: [
    { role: "AssetsWriter", db: "assets" },
    "read"
  ],
  writeConcern: { w: "majority" }
} )

产品数据库中的用户“productUser00”现在只剩下一个角色:

"roles" : [
  {
    "role" : "readWrite",
    "db" : "stock"
  }
]

角色管理命令

角色授予用户对资源的访问权限。管理员可以使用几个内置角色来控制对 MongoDB 系统的访问。如果角色不包含所需的特权,您甚至可以在特定的数据库中创建新的角色。

水滴角色

使用dropRole命令,您可以从运行该命令的数据库中删除用户定义的角色。要执行此命令,请使用以下语法:

db.runCommand(
  {
    dropRole: "<role>",
    writeConcern: { <write concern> },
    comment: <any> 
  }
)

为了成功执行,您必须对指定的数据库执行dropRole操作。以下操作将从“产品”数据库中删除writeTags角色:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

use products
db.runCommand(
  {
    dropRole: "writeTags",
    writeConcern: { w: "majority" }
  }
)
创建角色

您可以利用createRole命令来创建一个角色并指定其权限。该角色将应用于您选择运行命令的数据库。如果角色已经存在于数据库中,那么createRole命令将返回一个重复的角色错误。

要执行此命令,请遵循给定的语法:

db.adminCommand(
  {
    createRole: "<new role>",
    privileges: [
      { resource: { <resource> }, actions: [ "<action>", ... ] },
    ],
    roles: [
      { role: "<role>", db: "<database>" } | "<role>",
    ],
    authenticationRestrictions: [
      {
        clientSource: ["<IP>" | "<CIDR range>", ...],
        serverAddress: ["<IP>" | "<CIDR range>", ...]
      },
    ],
    writeConcern: <write concern document>,
    comment: <any> 
  }
)

角色的权限将应用于创建该角色的数据库。该角色可以从其数据库中的其他角色继承权限。例如,在“admin”数据库上创建的角色可以包括应用于集群或所有数据库的权限。它还可以从其他数据库中的角色继承权限。

要在数据库中创建角色,您需要具备以下两点:

  1. 对数据库的grantRole操作,以提及新角色的特权以及要继承的角色。
  2. 数据库资源上createRole动作。

下面的createRole命令将在用户数据库上创建一个clusterAdmin角色:

db.adminCommand({ createRole: "clusterAdmin",
  privileges: [
    { resource: { cluster: true }, actions: [ "addShard" ] },
    { resource: { db: "config", collection: "" }, actions: [ "find", "remove" ] },
    { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert" ] },
    { resource: { db: "", collection: "" }, actions: [ "find" ] }
  ],
  roles: [
    { role: "read", db: "user" }
  ],
  writeConcern: { w: "majority" , wtimeout: 5000 }
})
grantRolesToRole

使用grantRolesToRole命令,您可以将角色授予用户定义的角色。grantRolesToRole命令会影响执行该命令的数据库中的角色。

grantRolesToRole命令的语法如下:

db.runCommand(
  {
    grantRolesToRole: "<role>",
    roles: [
     { role: "<role>", db: "<database>" },
    ],
    writeConcern: { <write concern> },
    comment: <any> 
  }
)

访问权限类似于grantRolesToUser命令——为了正确执行命令,您需要对数据库执行grantRole操作。

在下面的例子中,您可以使用grantRolesToUser命令更新“产品”数据库中的productsReader角色,以继承productsWriter角色的权限:

use products
db.runCommand(
  { 
    grantRolesToRole: "productsReader",
    roles: [
      "productsWriter"
    ],
    writeConcern: { w: "majority" , wtimeout: 5000 }
  }
)
revokeprivalegesfromrole

您可以使用revokePrivilegesFromRole从执行命令的数据库上的用户定义角色中删除指定的特权。为了正确执行,您需要记住以下语法:

db.runCommand(
  {
    revokePrivilegesFromRole: "<role>",
    privileges: [
      { resource: { <resource> }, actions: [ "<action>", ... ] },
    ],
    writeConcern: <write concern document>,
    comment: <any> 
  }
)

要撤销权限,“资源文档”模式必须与该权限的“资源”字段相匹配。“操作”字段可以是完全匹配或子集。

例如,假设 products 数据库中的角色manageRole具有以下权限,该权限将“managers”数据库指定为资源:

{
  "resource" : {
    "db" : "managers",
    "collection" : ""
  },
  "actions" : [
    "insert",
    "remove"
  ]
}

您不能仅从 managers 数据库中的一个集合撤销“插入”或“删除”操作。以下操作不会导致角色发生变化:

use managers
db.runCommand(
  {
    revokePrivilegesFromRole: "manageRole",
    privileges: [
      {
        resource : {
          db : "managers",
          collection : "kiosks"
        },
        actions : [
          "insert",
          "remove"
        ]
      }
    ]
  }
)
db.runCommand(
  {
    revokePrivilegesFromRole: "manageRole",
    privileges:
      [
        {
          resource : {
          db : "managers",
          collection : "kiosks"
        },
        actions : [
          "insert"
        ]
      }
    ]
  }
)

要撤销角色manageRole的“插入”和/或“移除”操作,您需要精确匹配资源文档。例如,以下操作仅从现有权限中撤销“删除”操作:

use managers
db.runCommand(
  {
    revokePrivilegesFromRole: "manageRole",
    privileges:
      [
        {
          resource : {
            db : "managers",
            collection : ""
        },
        actions : [ "remove" ]
      }
    ]
  }
)

以下操作将删除经理数据库中“执行”角色的多个权限:

use managers
db.runCommand(
  {
    revokePrivilegesFromRole: "executive",
    privileges: [
      {
        resource: { db: "managers", collection: "" },
        actions: [ "insert", "remove", "find" ]
      },
      {
        resource: { db: "managers", collection: "partners" },
        actions: [ "update" ]
      }
    ],
    writeConcern: { w: "majority" }
    }
)
角色信息

rolesInfo命令将返回指定角色的特权和继承信息,包括内置和用户定义的角色。您还可以利用rolesInfo命令来检索数据库范围内的所有角色。

为了正确执行,请遵循以下语法:

db.runCommand(
  {
    rolesInfo: { role: <name>, db: <db> },
    showPrivileges: <Boolean>,
    showBuiltinRoles: <Boolean>,
    comment: <any> 
  }
)

要从当前数据库返回角色的信息,可以按如下方式指定其名称:

{ rolesInfo: "<rolename>" }

要从另一个数据库返回某个角色的信息,您可以在提及该角色和数据库的文档中提及该角色:

{ rolesInfo: { role: "<rolename>", db: "<database>" } }

例如,以下命令返回经理数据库中定义的角色执行者的角色继承信息:

db.runCommand(
   {
      rolesInfo: { role: "executive", db: "managers" }
   }
)

下一个命令将返回执行该命令的数据库上的角色继承信息:accountManager:

db.runCommand(
   {
      rolesInfo: "accountManager"
   }
)

以下命令将返回经理数据库中定义的角色“executive”的权限和角色继承:

db.runCommand(
   {
     rolesInfo: { role: "executive", db: "managers" },
     showPrivileges: true
   }
)

要提到多个角色,可以使用一个数组。您还可以将数组中的每个角色作为字符串或文档来提及。

仅当执行命令的数据库中存在该角色时,才应使用字符串:

{
  rolesInfo: [
    "<rolename>",
    { role: "<rolename>", db: "<database>" },
  ]
}

例如,以下命令将返回三个不同数据库中三个角色的信息:

db.runCommand(
   {
    rolesInfo: [
      { role: "executive", db: "managers" },
      { role: "accounts", db: "departments" },
      { role: "administrator", db: "products" }
    ]
  }
)

您可以获得权限和角色继承,如下所示:

db.runCommand(
  {
    rolesInfo: [
      { role: "executive", db: "managers" },
      { role: "accounts", db: "departments" },
      { role: "administrator", db: "products" }
    ],
    showPrivileges: true
  }
)

嵌入 MongoDB 文档以获得更好的性能

像 MongoDB 这样的文档数据库允许您根据自己的需要定义模式。要在 MongoDB 中创建最佳模式,可以嵌套文档。因此,您可以构建一个与您的用例相匹配的数据模型,而不是将您的应用程序与数据模型相匹配。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

嵌入式文档让您能够存储一起访问的相关数据。在为 MongoDB 设计模式时,建议您默认嵌入文档。只有在值得的时候才使用数据库端或应用程序端的连接和引用。

确保工作负载可以根据需要经常检索文档。同时,文档还应该有它需要的所有数据。这对于您的应用程序的卓越性能至关重要。

下面,您会发现一些不同的嵌入文档的模式:

嵌入式文档模式

您可以使用它在文档中嵌入复杂的子结构。在单个文档中嵌入连接的数据可以减少获取数据所需的读取操作次数。通常,您应该构建您的模式,以便您的应用程序在一次读取操作中接收所有需要的信息。因此,这里要记住的规则是一起使用的应该一起存储

嵌入子集模式

嵌入子集模式是一种混合情况。您可以将它用于一长串相关项目的单独集合,您可以将其中一些项目放在手边以供展示。

下面是一个列出电影评论的例子:

> db.movie.findOne()
{   
  _id: 321475,   
  title: "The Dark Knight"
}  
> db.review.find({movie_id: 321475})
{   
  _id: 264579,   
  movie_id: 321475,   
  stars: 4   
  text: "Amazing"   
}
{   
  _id: 375684,   
  movie_id: 321475,   
  stars:5,   
  text: "Mindblowing"
}

现在,想象一千条相似的评论,但是你只打算在放映电影时显示最近的两条。在这种情况下,将子集作为列表存储在电影文档中是有意义的:

> db.movie.findOne({_id: 321475})   
{   
  _id: 321475,   
  title: "The Dark Knight",   
  recent_reviews: [   
    {_id: 264579, stars: 4, text: "Amazing"},   
    {_id: 375684, stars: 5, text: "Mindblowing"}   
  ]   
}</code

简而言之,如果您经常访问相关项目的子集,请确保嵌入它。

独立访问

您可能希望将子文档存储在它们的集合中,以将其与父集合分开。

比如拿一个公司的产品线来说。如果公司销售少量产品,您可能希望将它们存储在公司文档中。但是如果你想在公司之间重用它们,或者通过他们的库存单位(SKU)直接访问它们,你也想把它们存储在他们的集合中。

如果您独立地操作或访问一个实体,则创建一个集合来单独存储它,这是最佳做法。

无界列表

在他们的文档中存储相关信息的短列表有一个缺点。如果你的列表继续增长,你不应该把它放在一个单独的文档中。这是因为你无法支撑很长时间。

这有两个原因。首先,MongoDB 对单个文档的大小有限制。第二,如果你访问文档的频率太多,你会看到不受控制的内存使用带来的负面结果。

简单地说,如果一个列表开始无限制地增长,就创建一个集合来单独存储它。

扩展参考模式

扩展参考模式类似于子集模式。它还优化了您经常访问并存储在文档中的信息。
在这里,它不是一个列表,而是当一个文档引用同一个集合中的另一个文档时使用的。同时,它还存储了另一个文档中的一些字段,以便于访问。

例如:

> db.movie.findOne({_id: 245434})
{   
  _id: 245434,   
  title: "Mission Impossible 4 - Ghost Protocol",   
  studio_id: 924935,   
  studio_name: "Paramount Pictures"   
}

如您所见,存储了“studio_id ”,以便您可以查找制作这部电影的工作室的更多信息。但是为了简单起见,工作室的名字也被复制到这个文档中。

若要定期嵌入修改过的文档中的信息,请记住在文档被修改时更新您复制了该信息的文档。换句话说,如果您经常访问引用文档中的一些字段,请嵌入它们。

如何监控 MongoDB

你可以使用监控工具比如 Kinsta APM 来调试长时间的 API 调用、缓慢的数据库查询、长时间的外部 URL 请求等等。您甚至可以利用命令来提高数据库性能。您还可以使用它们来检查您的数据库实例的健康状况。

为什么应该监控 MongoDB 数据库?

数据库管理规划的一个关键方面是监控集群的性能和健康状况。MongoDB Atlas 通过其容错/伸缩能力处理大部分管理工作。

尽管如此,用户需要知道如何跟踪集群。他们还应该知道如何在危机爆发前调整或调整他们所需要的一切。

通过监视 MongoDB 数据库,您可以:

  • 观察资源的利用情况。
  • 了解数据库的当前容量。
  • 对实时问题做出反应并进行检测,以增强您的应用堆栈。
  • 观察是否存在性能问题和异常行为。
  • 符合您的治理/数据保护和服务级别协议(SLA)要求。

要监控的关键指标

在监控 MongoDB 时,您需要记住四个关键方面:

1.MongoDB 硬件指标

以下是监控硬件的主要指标:

标准化进程 CPU

它被定义为 CPU 花费在维护 MongoDB 进程的应用软件上的时间百分比。

您可以将它除以 CPU 核心数,从而将其调整到 0-100%的范围内。它包括内核和用户等模块利用的 CPU。

高内核 CPU 可能通过操作系统操作显示 CPU 耗尽。但是与 MongoDB 操作相关联的用户可能是 CPU 耗尽的根本原因。

标准化系统 CPU

它是 CPU 花费在服务于此 MongoDB 进程的系统调用上的时间百分比。通过除以 CPU 核心的数量,您可以将其调整到 0-100%的范围内。还包括 iowait、user、kernel、steal 等模块使用的 CPU。

用户 CPU 或高内核可能通过 MongoDB 操作(软件)显示 CPU 耗尽。高 iowait 可能与导致 CPU 耗尽的存储耗尽有关。

圆盘 IOPS

磁盘 IOPS 是 MongoDB 磁盘分区上每秒消耗的平均 IO 操作。

磁盘延迟

这是 MongoDB 中磁盘分区的读写磁盘延迟,以毫秒为单位。高值(> 500ms)表明存储层可能会影响 MongoDB 的性能。

系统内存

使用系统内存来描述使用的物理内存字节与可用的空闲空间。

可用指标近似于可用系统内存的字节数。您可以使用它来执行新的应用程序,而无需交换。

可用磁盘空间

这被定义为 MongoDB 的磁盘分区上空闲磁盘空间的总字节数。MongoDB Atlas 提供了基于这一指标的自动伸缩能力。

交换用法

您可以利用交换使用图来描述交换设备上放置了多少内存。此图中的高使用率指标表明正在利用交换。这表明当前工作负载的内存供应不足。

MongoDB 集群的连接和操作指标

以下是操作和连接指标的主要指标:

操作执行次数

在所选采样周期内执行的平均操作时间(写入和读取操作)。

操作计数器

它是在所选采样周期内每秒执行操作的平均速率。操作计数器图表/度量显示实例的操作类型和速度的操作细分。

连接

此度量指的是实例的打开连接数。高峰值或高数量可能表明没有响应的服务器或客户端的连接策略不理想。

查询目标和查询执行器

这是扫描文档的选定样本周期内每秒的平均速率。对于查询执行者,这是在查询计划评估和查询期间。查询目标显示扫描的文档数和返回的文档数之间的比率。

较高的数字比率表明操作不理想。这些操作扫描大量文档以返回较小的部分。

扫描和订购

它描述了在选定的查询采样周期内每秒的平均速率。它返回无法使用索引执行排序操作的排序结果。

行列

队列可以描述等待锁的操作数量,包括写操作和读操作。高队列可能表明存在非最佳模式设计。它还可能指示冲突的写入路径,引发对数据库资源的激烈竞争。

MongoDB 复制指标

以下是复制监控的主要指标:

复制操作日志窗口

此指标列出了主节点的复制操作日志中可用的大致小时数。如果辅助节点的延迟超过这个数量,它将无法跟上,需要完全重新同步。

复制滞后

复制延迟定义为在写入操作中,辅助节点落后于主节点的大约秒数。高复制延迟表明辅助节点在复制时面临困难。考虑到连接的读/写问题,这可能会影响操作的延迟。

复制扩展空间

此指标指的是主复制的操作日志窗口和辅助复制的复制延迟之间的差异。如果该值变为零,可能会导致辅助节点进入恢复模式。

Opcounters -repl

Opcounters -repl 定义为在选定的采样周期内每秒执行的复制操作的平均速率。使用 opcounters -graph/metric,您可以查看指定实例的操作速度和操作类型的细分。

操作日志 GB/小时

这被定义为主服务器每小时生成千兆字节操作日志的平均速率。意外的大量操作日志可能表明写入工作负载严重不足或存在模式设计问题。

MongoDB 性能监控工具

MongoDB 在 Cloud Manager、Atlas 和 Ops Manager 中内置了用户界面工具,用于性能跟踪。它还提供了一些独立的命令和工具来查看更多基于原始数据的数据。我们将讨论一些工具,您可以从具有访问权限和适当角色的主机上运行这些工具来检查您的环境:

蒙古顶

您可以利用这个命令来跟踪 MongoDB 实例在每个集合中读写数据所花费的时间。使用以下语法:

mongotop <options> <connection-string> <polling-interval in seconds>

rs.status()

此命令返回副本集状态。它是从执行方法的成员的角度来执行的。

蒙古统计局

您可以使用mongostat命令快速了解 MongoDB 服务器实例的状态。为了获得最佳输出,您可以使用它来观察特定事件的单个实例,因为它提供了一个实时视图。

利用这个命令来监控基本的服务器统计信息,比如锁队列、操作分解、MongoDB 内存统计信息和连接/网络:

mongostat <options> <connection-string> <polling interval in seconds>

dbStats

该命令返回特定数据库的存储统计信息,例如索引数量及其大小、总集合数据与存储大小以及与集合相关的统计信息(集合和文档的数量)。

db.serverStatus()

您可以利用db.serverStatus()命令来了解数据库的状态。它为您提供了一个表示当前实例度量计数器的文档。定期执行此命令以整理有关实例的统计信息。

collStats

collStats命令在收集级别收集类似于dbStats提供的统计信息。它的输出包括集合中的对象计数、集合消耗的磁盘空间量、集合的大小以及关于给定集合的索引的信息。

您可以使用所有这些命令来提供对数据库服务器的实时报告和监视,这使您可以监视数据库性能和错误,并帮助做出明智的决策来优化数据库。

如何删除 MongoDB 数据库

要删除您在 MongoDB 中创建的数据库,您需要通过 use 关键字连接到它。

假设您创建了一个名为“工程师”的数据库。要连接到数据库,您将使用以下命令:

use Engineers

接下来,键入db.dropDatabase()删除这个数据库。执行后,这是您可以预期的结果:

{ "dropped"  :  "Engineers", "ok" : 1 }

您可以运行showdbs命令来验证数据库是否仍然存在。

摘要

要想从 MongoDB 中榨出最后一滴价值,你必须对基本面有很强的理解。因此,对 MongoDB 数据库了如指掌是非常重要的。这需要你先熟悉创建数据库的方法。
在寻找一个具有高度灵活性和可扩展性的数据库吗?🛠·蒙戈 DB 可能是答案...👀 点击发送推文
在本文中,我们将介绍在 MongoDB 中创建数据库的不同方法,然后详细描述一些漂亮的 MongoDB 命令,帮助您掌握数据库最后,我们讨论了如何利用 MongoDB 中的嵌入式文档和性能监控工具来确保工作流功能达到最高效率,从而结束了讨论。

你对这些 MongoDB 命令有什么看法?我们是否错过了您希望在这里看到的某个方面或方法?请在评论中告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

您需要知道的 9 种 Mongodb 操作符

原文:https://kinsta.com/blog/mongodb-operators/

在任何业务中,数据都是你最大的资产。通过分析数据,可以对客户趋势和行为预测做出决策。这提高了企业盈利能力和有效的决策。

如果没有数据库软件,在一个充满记录的系统中寻找所有值的平均值这样简单的任务将会很乏味。幸运的是,数据库通过函数和操作符使数据分析变得更加容易和快速。

Databases have made analyzing data easier and faster with functions and operators- and this guide will make understanding MongoDB a breeze 💪.Click to Tweet

本文将介绍 MongoDB 数据库软件中使用的操作符。

什么是 MongoDB 运算符?

MongoDB 是一个管理面向文档信息的 NoSQL 数据库软件。

MongoDB 的一个关键特性是它的速度。为了更快地返回查询,MongoDB 可能会使用操作符来执行特定的功能。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

运算符是帮助编译器执行数学或逻辑任务的特殊符号。MongoDB 提供了几种类型的操作符来与数据库交互。

MongoDB 运算符类型

有九种类型的运算符,每一种都以其功能命名。例如,逻辑运算符使用逻辑运算。要执行它们,您需要使用特定的关键字并遵循语法。然而,它们很容易理解!

到本文结束时,您将能够学习每个操作符及其功能的基础知识。

逻辑运算符

逻辑运算符通常用于根据给定的条件过滤数据。它们还允许对许多条件进行评估,我们将对此进行更详细的讨论。

下面是一些您可以使用的逻辑运算符:

$和

“与”条件对包含两个或更多表达式的数组执行逻辑“与”运算。它选择满足所有表达式条件的文档。

这是$and表达式的标准语法:

{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } For example, if we want to select documents where the price is $10 and the quantity is less than 15, we can input the following query:
db.inventory.find( { $and: [ { quantity: { $lt: 15 } }, { price: 10 } ] } )

美元或

“或”条件对包含两个或更多表达式的数组执行逻辑“或”运算。它选择至少有一个表达式为真的文档。

这是$or表达式的标准语法:

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }.

例如,如果我们想要选择价格为$10 或数量少于 15 的文档,我们可以输入以下查询:

db.inventory.find( { $or: [ { quantity: { $lt: 15 } }, { price: 10 } ] } )

我们不必将表达式限制为两个标准,我们可以添加更多标准。例如,下面的查询选择那些价格等于$10、数量低于 15 或者标签固定的文档:

db.inventory.find( { $or: [ { quantity: { $lt: 15 } }, { price: 10 }, { tag: stationary }] } )

当运行这些子句时,MongoDB 要么执行集合扫描,要么执行索引扫描。如果所有索引都支持子句,那么 MongoDB 使用索引来检查一个$or表达式。否则,它将使用集合扫描。

但是如果您想在同一个字段中测试标准,您可能想使用$in操作符而不是$or操作符。例如,如果您想要数量为 10 或 20 的文档集合,您可能需要运行下面的$in查询:

db.inventory.find ( { quantity: { $in: [20, 50] } } )

稍后,我们将详细介绍$in操作符。

$nor

该运算符使用一个或多个表达式对数组执行逻辑“或非”运算。接下来,它选择查询表达式失败的文档。更简单地说,它与$or条件相反。

这是一般语法:

{ $nor: [ { <expression1> }, { <expression2> }, ...  { <expressionN> } ] }

让我们考虑以下查询:

db.inventory.find( { $nor: [ { price: 3.99 }, { sale: true } ]  } )

该查询选择包含以下内容的文档:

  • 价格字段值不等于$3.99,销售值不等于 true 或者
  • 不等于$3.99 的价格字段值,以及空的或不存在的销售字段;或者
  • 没有价格字段,销售字段不等于真;或者
  • 价格字段和销售字段均未填充或存在。

$不

该运算符对指定表达式的数组执行逻辑“非”运算。然后,它选择与查询表达式不匹配的文档。这包括不包含该字段的文档。

这是一般语法:

{ field: { $not: { <operator-expression> } } }

例如,以下面的查询为例:

db.inventory.find( { price: { $not: { $lt: 3.99 } } } )

该查询将选择包含以下内容的文档:

  • 其值大于或等于 3.99 美元的价格字段;和
  • 价格字段未填写或不存在。

信息

{ $not: { $lt: 3.99 } }不同于$gte运算符。{ $gte: 3.99 }仅返回存在价格字段并且其值小于或等于\(3.99 的文档( `\)not`操作符甚至返回不存在价格字段的文档)。

比较运算符

比较运算符可用于比较一个或多个文档中的值。

下面是一个超市商店的简单库存收集的示例代码:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] },
{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] },
{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] },
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] },
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] },
{ _id: 6, item: { name: "strawberry", code: "123" }, tags: [ "B" ] }

我们将使用这个例子,同时详细说明每个比较操作符。

等于($eq)

该运算符匹配等于给定值的值:

{ <field>: { $eq: <value> } }

例如,如果我们想从 inventory 集合中检索一个具有确切数量值“20”的特定文档,我们可以输入以下命令:

db.inventory.find( { qty: { $eq: 20 } } )

该查询将返回以下内容:

{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] }, 
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

大于($gt)

如果值大于给定值,则此运算符匹配:

{ field: { $gt: value } }

在本例中,我们检索数量大于 15 的文档:

db.inventory.find({"qty": { $gt: 15}})

该查询将返回以下内容:

{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

少于($lt)

如果值小于提供的值,则此运算符匹配:

{ field: { $lt: value } }

让我们找到数量小于 25 的文档:

db.inventory.find({"qty": { $lt: 25}})

该查询将返回以下内容:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

大于或等于($gte)

当值大于或等于给定值时,此运算符匹配:

{ field: { $gte: value } }

在本例中,我们检索数量大于或等于 25 的文档:

db.inventory.find({"qty": { $gte: 25}})

该查询将返回以下内容:

{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }

小于或等于(lte)

仅当值小于或等于给定值时,此运算符才匹配:

{ field: { $lte: value } }

让我们找到数量小于或等于 25 的文档。

db.inventory.find({"qty": { $lte: 25}})

我们可以预期该查询将返回以下内容:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }

英寸(英寸)

该运算符返回与指定值匹配的文档:

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

字段的值等于指定数组中的任何值。例如,要在库存集合中检索值为“30”和“15”的文档,您应该这样做:

db.collection.find({ "qty": { $in: [30, 15]}})

输出将是:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }

The query run in MongoDB Shell.

不在(nin)

该操作符返回与给定值不匹配的文档。下面是$nin操作符的基本语法:

{ field: { $nin: [ <value1>, <value2> ... <valueN> ]

$nin选择文档,其中:

  • 字段值不在指定的数组中;或者
  • 该字段不存在。

如果该字段包含数组,它将选取值部分中没有指定元素的数组。例如,我们希望选择那些数量既不等于 20 也不等于 15 的文档。

此外,它还匹配没有数量字段的文档:

db.collection.find({ "qty": { $nin: [ 20, 15 ]}}, {_id: 0})

输出将是:

{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 6, item: { name: "strawberry", code: "123" }, tags: [ "B" ] }

不相等($ne)

$ne运算符返回指定值不相等的文档:

{ $ne: value } }

例如,假设我们想要选择数量不等于 20 的所有文档:

db.inventory.find( { qty: { $ne: 20 } } )

输出将是:

{ _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 6, item: { name: "strawberry", code: "123" }, tags: [ "B" ] }

从上面的输出中,我们可以看到查询将选择没有数量字段的文档。

元素运算符

元素查询操作符可以使用文档的字段来识别文档。元素运算符由$exist$type组成。

$存在

该操作符匹配具有指定字段的文档。该操作符有一个布尔值,可以是truefalse

如果指定为true,则匹配包含该字段的文档,包括字段值为空的文档。如果<布尔值>是false,那么查询只返回不包含该字段的文档。

以下是标准语法:

{ field: { $exists: <boolean> } }

让我们举一个例子,我们有一个名为“bagofmarbles”的数组的集合数据,其中每个袋子都包含不同颜色的弹珠:

{ red: 5, green: 5, blue: null }
{ red: 3, green: null, blue: 8 }
{ red: null, green: 3, blue: 9 }
{ red: 1, green: 2, blue: 3 }
{ red: 2, blue: 5 }
{ red: 3, green: 2 }
{ red: 4 }
{ green: 2, blue: 4 }
{ green: 2 }
{ blue: 6 }

假设我们想要一个查询,只返回那些有红色弹珠的袋子。这意味着我们必须输入布尔值作为true。让我们来看看:

db.bagofmarbles.find( { red: { $exists: true } } )

结果将由包含字段“red”的文档组成,即使值为null。但是,它不会包含甚至不存在“红色”字段的文档:

{ red: 5, green: 5, blue: null }
{ red: 3, green: null, blue: 8 }
{ red: null, green: 3, blue: 9 }
{ red: 1, green: 2, blue: 3 }
{ red: 2, blue: 5 }
{ red: 3, green: 2 }
{ red: 4 }

如果我们只想要那些红色弹珠甚至不存在的袋子,我们可以输入下面的查询:

db.bagofmarbles.find( { red: { $exists: false} }

结果将由不包含字段“红色”的那些文档组成:

{ green: 2, blue: 4 }
{ green: 2 }
{ blue: 6 }

$类型

该运算符根据指定的字段类型匹配文档。当您有高度非结构化的数据,或者数据类型不可预测时,这很有用。这些字段类型是指定的 BSON 类型,可以通过类型号或别名来定义。

这是$type的一般语法:

{ field: { $type: <BSON type> } }

假设我们有一个包含以下文档的地址簿:

db={
  addressBook: [
    {
      "_id": 1,
      address: "2100 Jupiter Spot",
      zipCode: "9036325"
    },
    {
      "_id": 2,
      address: "25 Moon Place",
      zipCode: 26237
    },
    {
      "_id": 3,
      address: "2324 Neptune Ring",
      zipCode: NumberLong(77622222)
    },
    {
      "_id": 4,
      address: "33 Saturns Moon",
      zipCode: NumberInt(117)
    },
    {
      "_id": 5,
      address: "1044 Venus Lane",
      zipCode: [
        "99883637232",
        "73488976234"
      ]
    }
  ]
}

观察上面的文档,邮政编码有不同的数据类型。这包括长整型、双精度型、整型和字符串型值。

如果我们只想要那些具有指定数据类型作为 zipcode 的文档——让我们以 string 为例——我们必须向编译器输入以下查询:

db.addressBook.find({
  "zipCode": {
    $type: "string"
  }
})

这将返回以下文档:

[
  {
    "_id": 1,
    "address": "2100 Jupiter Spot",
    "zipCode": "9036325"
  },
  {
    "_id": 5,
    "address": "1044 Venus Lane",
    "zipCode": [
      "99883637232",
      "73488976234"
    ]
  }
]

The above query run in a MongoDB Shell.

此外,还有一种“数字”类型,它将所有长整型、整型或双精度型值作为包含指定类型元素的数组包含在内:

db.addressBook.find( { "zipCode" : { $type : "number" } } )

输出:

[
{
      "_id": 2,
      address: "25 Moon Place",
      zipCode: 26237
    },
    {
      "_id": 3,
      address: "2324 Neptune Ring",
      zipCode: NumberLong(77622222)
    },
    {
      "_id": 4,
      address: "33 Saturns Moon",
      zipCode: NumberInt(117)
    }
]

如果文档有一个数组字段类型,$type操作符返回至少有一个数组元素与传递给操作符的类型相匹配的文档。

信息

从 MongoDB 3.6 和更高版本开始,查询$type: array将返回字段本身是数组的文档。但是,在使用相同的查询时,以前的版本用于返回字段是数组的文档,并且至少有一个元素的数据类型是数组。

数组运算符

MongoDB 还包含数组操作符,用于查询包含数组的文档。

有三个主要操作符:$all$elemMatch$size。我们将在下面详细讨论每一个。

所有美元

$all操作符选择其中字段值是包含指定元素的数组的文档:

{ : { $all: [ <value1> , <value2> ... ] } }

例如,假设我们有一个服装店的文档集合,下面是库存。

{
   _id: ObjectId("5234cc89687ea597eabee675"),
   code: "shirt",
   tags: [ "sale", "shirt", "button", "y2k", "casual" ],
   qty: [
          { size: "S", num: 10, color: "blue" },
          { size: "M", num: 45, color: "blue" },
          { size: "L", num: 100, color: "green" }
        ]
},

{
   _id: ObjectId("5234cc8a687ea597eabee676"),
   code: "pant",
   tags: [ "y2k", "trendy", "shine" ],
   qty: [
          { size: "6", num: 100, color: "green" },
          { size: "6", num: 50, color: "blue" },
          { size: "8", num: 100, color: "brown" }
        ]
},

{
   _id: ObjectId("5234ccb7687ea597eabee677"),
   code: "pant2",
   tags: [ "trendy", "shine" ],
   qty: [
          { size: "S", num: 10, color: "blue" },
          { size: "M", num: 100, color: "blue" },
          { size: "L", num: 100, color: "green" }
        ]
},

{
   _id: ObjectId("52350353b2eff1353b349de9"),
   code: "shirt2",
   tags: [ "y2k", "trendy" ],
   qty: [
          { size: "M", num: 100, color: "green" }
        ]
}

我们希望从库存中检索任何与标签“trendy”和“y2k”相关联的文档(在本例中是衣服)。以下查询使用了$all运算符,其中 tags 字段的值是一个数组,其元素包括“y2k”和“trendy”:

db.inventory.find( { tags: { $all: [ "y2k", "trendy" ] } } )

上述查询返回以下内容:

{
   _id: ObjectId("5234cc8a687ea597eabee676"),
   code: "pant",
   tags: [ "y2k", "trendy", "shine" ],
   qty: [
          { size: "6", num: 100, color: "green" },
          { size: "6", num: 50, color: "blue" },
          { size: "8", num: 100, color: "brown" }
        ]
}

{
   _id: ObjectId("52350353b2eff1353b349de9"),
   code: "shirt2",
   tags: [ "y2k", "trendy" ],
   qty: [
          { size: "M", num: 100, color: "green" }
        ]
}

The above query run in a MongoDB Shell.

从上面的例子中,我们还发现$all操作符只是执行与$and操作相同的功能。

或者,我们可以使用下面的查询,它会给出与上面类似的输出:

db.collection.find({
  $and: [
    {
      tags: "y2k"
    },
    {
      tags: "trendy"
    }
  ]
})

The above query run in a MongoDB shell.

$elemMatch

$elemMatch操作符匹配包含一个数组字段的文档,该数组字段至少有一个元素匹配所有指定的查询条件:

{ : { $elemMatch: { <query1>, <query2>, ... } } }

虽然我们可以使用比较操作符,如$lte$gte,但是如果我们在$elemMatch中只指定了一个查询条件,并且没有使用$not$ne操作符,那么可以省略使用$elemMatch,因为它本质上执行的是相同的功能。

使用该操作符时,还有一些事情需要记住,主要是:

  • 不能在$elemMatch操作中指定$where表达式。
  • 不能在$elemMatch操作中指定$text查询表达式。

例如,我们在学生成绩集合中有以下文档:

{ _id: 1, results: [ 92, 89, 98 ] }
{ _id: 2, results: [ 85, 99, 99 ] }

以下查询仅匹配结果数组包含至少一个大于或等于 90 且小于 95 的元素的文档:

db.studentresults.find(  { results: { $elemMatch: { $gte: 90, $lt: 95 } } })

我们的查询返回以下文档,因为元素 92 既大于或等于 90,又小于 95:

{ "_id" : 1, "results" :[ 92, 89, 98 ] }

美元大小

$size运算符返回数组大小与参数中指定的元素数量相匹配的文档:

{ field: { $size: value } }

这里有一个例子:

db.collection.find( { field: { $size: 2 } });

这将返回指定集合中的所有文档,其中字段是一个包含两个元素的数组:{ field: [ orange, apple] }{ field: [ blue, red] },而不是{ field: blue}{ field: [ raspberry, lemon, grapefruit ] }

然而,虽然我们可以输入特定的值作为大小,但我们不能指定值的范围作为大小。

地理空间操作员

MongoDB 允许您以 GeoJSON 类型的形式存储地理空间数据。GeoJSON 是一种基于 JavaScript 对象符号的开放标准格式,可以表示地理要素并支持非空间属性。我们将在本文中讨论两种类型的地理空间操作符:几何说明符和查询选择器。

$几何

该操作符提到了 GeoJSON 几何,用于以下地理空间查询操作符:$geoIntersects$geoWithin$nearSphere$near$geometry利用 EPSG:4326 作为默认坐标参考系统(CRS)。

要提到带有默认 CRS 的 GeoJSON 对象,您可以利用下面的代码片段作为$geometry:

$geometry: {
   type: "<GeoJSON object type>",
   coordinates: [ <coordinates> ]
}

要提到带有定制的 MongoDB CRS 的单环 GeoJSON 多边形,可以使用下面的代码片段(只能对$geoWithin$geoIntersects使用这个代码片段):

$geometry: {
   type: "Polygon",
   coordinates: [ <coordinates> ],
   crs: {
      type: "name",
      properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
   }
}

$多边形

$polygon操作符可用于为传统坐标对上的地理空间$geoWithin查询指定多边形。然后,该查询将返回落在多边形范围内的对。但是, $polygon不会查询任何 GeoJSON 对象。要定义多边形,您需要指定一组坐标点,如下所示:

{
   : {
      $geoWithin: {
         $polygon: [ [ <x1> , <y1> ], [ <x2> , <y2> ], [ <x3> , <y3> ], ... ]
      }
   }
}

在这里,最后一点隐含地与第一点相联系。你可以尽可能多地提及要点或侧面。

例如,以下查询将返回坐标位于由[0,0]、[1,5]和[3,3]定义的多边形内的所有文档:

db.places.find(
  {
     loc: {
       $geoWithin: { $polygon: [ [ 0 , 0 ], [ 1 , 5 ], [ 3 , 3 ] ] }
     }
  }
)

$地理范围内

此运算符可用于选择包含地理空间数据的文档,这些数据完全包含在特定形状中。指定的形状可以是 GeoJSON 多重多边形、GeoJSON 多边形(多环或单环),也可以是由传统坐标对定义的形状。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

$geoWithin操作符将利用$geometry操作符来引用 GeoJSON 对象。

要通过默认坐标参考系统(CRS)提及 GeoJSON 多面或多边形,您可以使用下面提到的语法:

{
   : {
      $geoWithin: {
         $geometry: {
            type: <"Polygon" or "MultiPolygon"> ,
            coordinates: [ <coordinates> ]
         }
      }
   }
}

对于提及面积大于单个半球的 GeoJSON 几何图形的$geoWithin查询,使用默认 CRS 将导致对互补几何图形的查询。

要提到带有自定义 MongoDB CRS 的单环 GeoJSON 多边形,您可以利用下面在$geometry表达式中提到的原型:

{
   : {
      $geoWithin: {
         $geometry: {
           type: "Polygon" ,
           coordinates: [ <coordinates> ],
           crs: {
              type: "name",
              properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
           }
         }
      }
   }
}

以下示例拾取完全存在于 GeoJSON 多边形内的所有 loc 数据,多边形的面积小于单个半球的面积:

db.places.find(
   {
     loc: {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
          }
       }
     }
   }
)

$box

您可以使用$box为地理空间$geoWithin查询指定一个矩形,根据基于点的位置数据提供矩形范围内的文档。当您将$geoWithin$box一起使用时,您将获得基于查询坐标的文档。在这种情况下,$geoWithin不会查询任何 GeoJSON 形状。

为了利用$box操作符,您需要在一个数组对象中提到矩形的右上角和左下角:

{ <location field> : { $geoWithin: { $box: [ [ <bottom left coordinates> ],
 [ <upper right coordinates> ] ] } } }

上述查询将通过利用平面几何来计算距离。下面的查询将返回位于[0,0],[0,30],[30,0],[30,30]的框内的所有文档:

db.places.find ( { 
 loc: { $geoWithin: { $box: [ [ 0,0 ], [ 30,30 ] ] } }
} )

$nearSphere

您可以使用$nearSphere来指出地理空间查询从最近到最远返回文档的点。

MongoDB 使用球面几何来计算$nearSphere的距离。它将需要如下地理空间索引:

  1. 描述为传统坐标对的位置数据的 2d 索引。要利用 GeoJSON 点上的 2d 索引,需要在 GeoJSON 对象的坐标字段上生成索引。
  2. 描述为 GeoJSON 点的位置数据的二维球体索引。

要提及 GeoJSON 点,您可以利用以下语法:

{
  $nearSphere: {
     $geometry: {
        type : "Point",
        coordinates : [ <longitude>, <latitude> ]
     },
     $minDistance: <distance in meters>,
     $maxDistance: <distance in meters> 
  }
}

这里,$minDistance$maxDistance是可选的。$minDistance可以将结果限制在距离中心至少指定距离的文档中。您可以将$maxDistance用于任一索引。

现在,考虑一个“地点”集合,它由带有 location 字段的文档组成,该字段有一个 2dsphere 索引。以下示例将返回距离您选择的点至少 2000 米、最多 6000 米的点,按从最近到最远的顺序排列:

db.places.find(
   {
     location: {
        $nearSphere: {
           $geometry: {
              type : "Point",
              coordinates : [ -43.9532, 50.32 ]
           },
           $minDistance: 2000,
           $maxDistance: 6000
        }
     }
   }
)

$ geoIntersects

$geoIntersects操作符允许您选择其地理空间数据与特定 GeoJSON 对象相交的文档(即指定对象和数据的交汇处非空)。它利用$geometry操作符来指定 GeoJSON 对象。

要通过默认坐标参考系统(CRS)提及 GeoJSON 多面或多边形,可以使用以下语法:

{ <location field>: {
     $geoIntersects: {
        $geometry: {
           type: "<GeoJSON object type>" ,
           coordinates: [ <coordinates> ]
        }
     }
  }
}

以下实例将使用$geoIntersects选择与坐标数组描述的多边形相交的所有 loc 数据:

db.places.find(
   {
     loc: {
       $geoIntersects: {
          $geometry: {
             type: "Polygon" ,
             coordinates: [
               [ [ 0, 0 ], [ 2, 6 ], [ 4, 1 ], [ 0, 0 ] ]
             ]
          }
       }
     }
   }
)

$center

$center操作符为一个$geoWithin查询提到了一个圆,该查询返回该圆范围内的遗留坐标对。

$center不返回 GeoJSON 对象。为了利用$center操作符,您需要指定一个数组,该数组包含:

  1. 圆的半径,以坐标系使用的单位测量。
  2. 圆的中心点的网格坐标。
{
  <location field> : {
      $geoWithin: { $center: [ [ <x> , <y> ] , <radius> ] }
   }
}

下面提到的示例将返回坐标位于以[2,3]为圆心、半径为 40 的圆内的所有文档:

db.places.find(
   { loc: { $geoWithin: { $center: [ [2, 3], 40 ] } } }
)

投影算子

您可以使用投影运算符来表示操作返回的字段。MongoDB projection operators 允许将find()函数用于数据过滤参数。这有助于用户仅从文档中提取所需的数据字段。因此,它允许您投射透明和简洁的数据,而不影响整体数据库性能。

$elemMatch(投影)

$elemMatch操作符负责将查询结果中的字段内容限制为只包含匹配$elemMatch条件的第一个元素。

在使用$elemMatch之前,你需要记住以下几点:

  • 从 MongoDB 4.4 开始,不管文档中字段的顺序如何,现有字段的$elemMatch投影返回包含其他现有字段之后的字段。
  • $elemMatch和` ,
    { : { $slice: } }
    );

也可以这样表达:

db.collection.find(
,
{ : { $slice: [ , ] } }
);


为了进行同样的演示,您可以使用以下文档创建一个示例 tweets 集合:

db.posts.insertMany([
{
_id: 1,
title: "Nuts are not blueberries.",
comments: [ { comment: "0. true" }, { comment: "1. blueberries aren't nuts."} ]
},
{
_id: 2,
title: "Coffee please.",
comments: [ { comment: "0. Indubitably" }, { comment: "1. Cuppa tea please" }, { comment: "2. frappucino" }, { comment: "3. Mocha latte" }, { comment: "4. whatever" } ]
}
])


下面的操作将在 tweets 数组上使用`$slice`投影操作符来返回包含前两个元素的数组。如果数组包含的元素少于两个,则返回数组中的所有元素:

db.posts.find( {}, { comments: { $slice: 2 } } )


该操作将返回以下文档:

{
"_id" : 1,
"title" : "Nuts are not blueberries.",
"comments" : [ { "comment" : "0. true" }, { "comment" : "1. blueberries aren't nuts." } ]
}
{
"_id" : 2,
"title" : "Coffee please.",
"comments" : [ { "comment" : "0. Indubitably" }, { "comment" : "1. Cuppa tea please" } ]
}


#### $(预测)

位置运算符`: <condition> ... },
                    { "<array>.$": 1 } )
db.collection.find( { <array.field>: <condition> ...},
                    { "<array>.$": 1 } )

在本例中,students集合由以下文档组成:

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

{ "_id" : 1, "semester" : 2, "grades" : [ 75, 67, 93 ] }
{ "_id" : 2, "semester" : 2, "grades" : [ 60, 68, 72 ] }
{ "_id" : 3, "semester" : 2, "grades" : [ 95, 82, 67 ] }
{ "_id" : 4, "semester" : 3, "grades" : [ 89, 95, 70 ] }
{ "_id" : 5, "semester" : 3, "grades" : [ 68, 98, 82 ] }
{ "_id" : 6, "semester" : 3, "grades" : [ 65, 70, 76 ] }

在以下查询中,投影{ "grades.$": 1 }仅返回grades字段中大于或等于 89 的第一个元素:

db.students.find( { semester: 2, grades: { $gte: 89 } },
                  { "grades.$": 1 } )

该操作返回以下文档:

{"_id": 3, "grades": [95] }

评估运算符

您可以利用 MongoDB 评估操作符来评估整个数据结构或文档中的单个字段。

我们来看看一些常见的 MongoDB 求值运算符。

$mod

您可以使用此运算符来匹配指定字段的值等于除以指定值后的余数的文档:

{ field: { $mod: [ divisor, remainder ] } }

假设您的展厅中有一张属于不同品牌的汽车表。以下查询将为您提供股票编号是 250 的倍数的所有汽车品牌。

db.cars.find ( { qty: { $mod: [ 250,0 ] } } )

$jsonSchema

$jsonSchema允许您匹配与指定 JSON 模式相匹配的文档。MongoDB 对 JSON 模式的实现包括添加了bsonType关键字,这允许您在$jsonSchema操作符中使用所有 BSON 类型。

bsonType可以接受与type操作符相同的字符串别名。这就是$jsonSchema的语法:

{ $jsonSchema: <JSON Schema object> }

这里,JSON 模式对象是基于 JSON 模式标准的草案 4 格式化的:

{ <keyword1>: <value1>, ... }

这里有一个例子来演示$jsonSchema是如何工作的:

{ $jsonSchema: {
     required: [ "name", "major", "gpa", "address" ],
     properties: {
        name: {
           bsonType: "string",
           description: "must be a string and is required"
        },
        address: {
           bsonType: "object",
           required: [ "zipcode" ],
           properties: {
               "street": { bsonType: "string" },
               "zipcode": { bsonType: "string" }
           }
        }
     }
  }
}

您还可以在文档验证器中使用$jsonSchema,在更新和插入操作中实施指定的模式:

db.createCollection(<collection> , { validator: { $jsonSchema: <schema> } } )
db.runCommand( { collMod: <collection>, validator:{ $jsonSchema: <schema> } } )

请记住,$jsonSchema操作符不支持几件事情:

  1. 整数类型。您需要通过 BSON type 关键字利用 BSON 类型 long 或 int。
  2. 未知关键字。
  3. JSON 模式的链接属性和超媒体,以及 JSON 引用和 JSON 指针的使用。

$text

$text操作符将在指定字段的内容中查找文本,并用文本索引进行索引:

{  
  $text:  
    {  
      $search: <string>,  
      $language: <string>,  
      $caseSensitive: <boolean>,  
      $diacriticSensitive: <boolean>   
    }  
}

在这种情况下,下面的代码片段将筛选出表中包含文本“Porsche”的所有汽车:

db.cars.find( { $text: { $search: "Porsche" } } )

$regex

$regex操作符提供了正则表达式能力来匹配查询中的字符串。MongoDB 利用与 Perl 兼容的正则表达式:

{<field> : /pattern/ <options>}

以下示例有助于筛选出所有包含字符串“$78900”的汽车:

db.cars.find( { price: { $regex: /$78900/ } } )

$expr

$expr操作符允许您在查询语言中利用聚合表达式:

{ $expr: { <expression> } }

您也可以使用$expr构建查询表达式,在$match阶段比较同一文档中的字段。如果$match阶段恰好是$lookup阶段的一部分,$expr可以借助 let 变量比较字段。

$哪里

您可以利用$where操作符将包含完整 JavaScript 函数的字符串或 JavaScript 表达式传递给查询系统。$where操作符提供了更大的灵活性,但是需要数据库为集合中的每个文档处理 JavaScript 函数或表达式。您可以使用objthis在 JavaScript 函数或表达式中引用该文档。

下面是一个语法示例:

{ $where: <string|JavaScript Code> }

在我们深入使用$where操作符的例子之前,有几个关键的注意事项要记住:

  • 您应该只对顶级文档使用$where查询操作符。像在$elemMatch查询中一样,$where查询操作符在嵌套文档中不起作用。
  • 一般来说,只有当您无法通过另一个操作符表达您的查询时,才应该使用$where。如果必须使用$where,确保至少包含一个其他标准查询操作符来过滤结果集。独立使用$where需要集合扫描才能正确执行。

这里有一个例子来说明这一点:

db.cars.find( { $where: function() {  
   return (hex_md5(this.name)== "9a43e617b50cd379dca1bc6e2a8")  
} } );

按位运算符

按位运算符根据位的位置条件返回数据。简而言之,它们用于匹配数值或二进制值,其中一组位位置中的任何位的值为 1 或 0。

$bitsAllSet

此运算符将匹配所有文档,其中查询提供的所有位位置都在字段中设置(即 1):

{ <field> : { $bitsAllSet: <numeric bitmask> } }
{ <field> : { $bitsAllSet: < BinData bitmask> } }
{ <field> : { $bitsAllSet: [ <position1> , <position2> , ... ] } }

字段值应该是 BinData 实例或数字,以便$bitsAllSet匹配当前文档。

在下面的例子中,我们利用了包含以下文档的集合:

db.collection.save({ _id: 1, a: 54, binaryValueofA: "00110110" })
db.collection.save({ _id: 2, a: 20, binaryValueofA: "00010100" })
db.collection.save({ _id: 3, a: 20.0, binaryValueofA: "00010100" })
db.collection.save({ _id: 4, a: BinData(0, "Zg=="), binaryValueofA: "01100110" })

下面提到的查询将使用$bitsAllSet操作符来测试字段 a 是否在位置 1 和位置 5 设置了位,其中最低有效位将在位置 0:

db.collection.find( { a: { $bitsAllSet: [ 1, 5 ] } }

该查询将匹配以下文档:

{ "_id" : 1, "a" : 54, "binaryValueofA" : "00110110" }
{ "_id" : 4, "a" : BinData(0,"Zg=="), "binaryValueofA" : "01100110" }

$bitsAllClear

$bitsAllClear操作符将匹配查询提供的所有位位置都是空的文档,或者0:

{ <field> : { $bitsAllClear: <numeric bitmask> } }
{ <field> : { $bitsAllClear: < BinData bitmask> } }
{ <field> : { $bitsAllClear: [ <position1> , <position2> , ... ] } }

这里我们将使用用于$bitsAllSet的例子来演示$bitsAllClear的用法。以下查询将使用此运算符来检查字段 a 是否在位置 1 和 5 清除了位:

db.collection.find( { a: { $bitsAllClear: [ 1, 5 ] } } )

该查询将匹配以下文档:

{ "_id" : 2, "a" : 20, "binaryValueofA" : "00010100" }
{ "_id" : 3, "a" : 20, "binaryValueofA" : "00010100" }

元运算符

在 MongoDB 中,有各种查询修饰符可以让您修改查询的行为或输出。驱动程序接口可能会提供游标方法,将它们包装起来供您使用。

$提示

MongoDB 从 3.2 版起就不推荐使用$hint,但是,这个操作符可能仍然适用于 MongoDB 驱动程序,比如 Go、Java、Scala、Ruby、Swift 等等。它可以迫使查询优化器利用特定的索引来完成查询,然后可以通过文档或索引名称来提及该索引。

您还可以使用$hint操作符来测试索引策略和查询性能。例如,采取以下操作:

db.users.find().hint( { age: 1 } )

该操作将通过利用age字段上的索引返回名为users的集合中的所有文档。

你也可以使用以下两种形式之一来提及提示:

db.users.find()._addSpecial( "$hint", { age : 1 } )
db.users.find( { $query: {}, $hint: { age : 1 } } )

如果查询形状存在索引过滤器,MongoDB 将简单地忽略$hint

$注释

$comment操作符允许您在$query可能出现的任何上下文中将注释附加到查询中。因为注释会传播到配置文件日志,所以添加注释可以更容易地解释和跟踪您的配置文件。

您可以通过以下三种方式之一利用$comment:

db.collection.find( { <query> } )._addSpecial( "$comment", <comment> )
db.collection.find( { <query> } ).comment( <comment> )
db.collection.find( { $query: { <query> }, $comment: <comment> } )

如果您想在其他上下文中为查询表达式附加注释,比如使用db.collection.update(),那么利用$comment查询操作符而不是元操作符。

最大值

您可以提到一个$max值来指定特定索引的独占上限,以约束find()的结果。该操作符将为索引中特定顺序的所有键指定上限。

Mongosh 为您提供了以下max()包装器方法:

db.collection.find( { <query> } ).max( { field1: <max value> , ... fieldN: <max valueN> } )

你也可以用以下两种形式提到$max:

db.collection.find( { <query> } )._addSpecial( "$max", { field1: <max value1> ,
 ... fieldN: <max valueN> } )
db.collection.find( { $query: { <query> }, $max: { field1: <max value1> ,
 ... fieldN: <max valueN> } } )

例如,如果您想要指定独占上限,请记住对包含索引{ age: 1 }的名为 collection 的集合的以下操作:

db.collection.find( { <query> } ).max( { age: 100 } ).hint( { age: 1 } )

该操作将把查询限制在字段 age 小于 100 的文档中,并强制执行一个将从minKey到 100 扫描{ age: 1 }索引的查询计划。

$解释

该操作符将为您提供有关查询计划的信息。它返回一个文档,描述用于返回查询的索引和过程。这在尝试优化查询时会很有用。

您可以用以下任何一种形式提及$explain运算符:

db.collection.find()._addSpecial( "$explain", 1 )
db.collection.find( { $query: {}, $explain: 1 } )

MongoDB 操作员的最佳实践

在这一节中,我们将看看使用这些 MongoDB 操作符时的一些最佳实践。

嵌入和引用

嵌入是数据建模的自然延伸。它允许您避免应用程序连接,这可以减少更新和查询。

您可以在单个文档中嵌入一对一关系的数据。也就是说,具有多:1 关系的数据(其中“多”对象与其父文档一起出现)也可能是很好的候选对象。

将这些类型的数据存储在同一个文档中听起来是一个谨慎的选择。但是,嵌入为这种数据局部性的读操作提供了更好的性能。

嵌入式数据模型还可以帮助开发人员在一次写操作中更新相关数据。这是因为单个文档写入是事务性的。

您应该考虑在下列情况下使用引用:

  • 当你更新一个文件片段,它变得越来越长,而其余的文件是静态的。
  • 当文档被访问但包含很少使用的数据时。嵌入只会增加内存需求,所以引用更有意义。
  • 当文档大小超过 MongoDB 的 16MB 文档限制时。这可能发生在建模多对一关系时(例如,雇员:部门)。

检查分析和查询模式

对于大多数开发人员来说,优化性能的第一步是理解实际的和预期的查询模式。一旦您足够了解应用程序的查询模式,您就可以建立数据模型并选择适当的索引。

MongoDB 开发人员可以使用各种强大的工具来提高性能。但是这并不意味着可以忽略查询概要文件和模式。

例如,提高性能的一个简单方法是分析查询模式,了解可以在哪里嵌入数据。在确定主要查询模式后,提高 MongoDB 性能的其他方法包括:

  • 确保您查询的所有字段都有索引。
  • 存储文档上频繁子查询的结果以减少读取负载。
  • 查看您的日志以了解缓慢的查询,然后检查您的索引。

查看数据索引和建模

在建立数据模型时,您将决定如何对数据之间的关系进行建模。例如,选择何时嵌入一个文档,而不是在不同集合中的不同文档之间创建一个引用,这是一个特定于应用程序的考虑的例子。

JSON 文档的一个主要优点是,它们允许开发人员根据应用程序的需求对数据进行建模。嵌套子文档和数组通过利用简单的文本文档帮助您对数据之间的复杂关系进行建模。

您还可以使用 MongoDB 对以下内容进行建模:

  • 地理空间数据
  • 表格、平面和柱状结构
  • 简单的键值对
  • 时间序列数据
  • 连通图数据结构的边和节点等

监控分片和复制

复制对于提高性能至关重要,因为它通过水平扩展提高了数据可用性。复制可以通过冗余带来更好的性能和更高的安全性。

性能监控可能会很麻烦,需要额外的资源和时间来确保平稳运行。您可以利用市场上可以满足您特定需求的性能监控工具。

例如, Kinsta APM 可以获取你的 WordPress 站点的 MySQL 数据库查询、PHP 进程、外部 HTTP 调用等等的时间戳信息。您也可以使用这个免费工具来调试:

  • 长 API 调用
  • 长外部 URL 请求
  • 缓慢的数据库查询等等。

在 MongoDB 中,复制可以通过副本集来实现,副本集允许开发人员从主节点或服务器跨多个辅助节点复制数据。这使您的复制可以在辅助服务器上运行一些查询,而不是在主服务器上运行,从而避免争用并实现更好的负载平衡。

MongoDB 中的分片集群是潜在提高性能的另一种方式。与复制类似,分片可用于跨多个服务器分布大型数据集。

通过利用碎片密钥,开发人员可以在多台服务器上复制数据的碎片或片段。这些服务器可以协同工作来使用所有的数据。

分片有它的优势,包括写/读的水平扩展、更高的可用性和增加的存储容量。

确定内存使用

当一个应用程序的工作集(即频繁访问的数据和索引)在内存中没有问题时,MongoDB 的性能最佳。虽然其他因素对性能至关重要,但 RAM 大小是确定实例大小的最重要因素。

当应用程序的工作集适合 RAM 时,从磁盘读取的活动需要很少。但是,如果您的工作集超过了实例服务器的 RAM 或大小,读取活动将开始激增。

如果您看到这种情况发生,您可以通过转移到一个具有更多内存的更大的实例来解决这个问题。

将多值字段放在末尾

如果您正在索引几个字段,并且您想要查询的字段之一使用了那些“多值”操作符中的一个,那么您应该将它们放在索引的末尾。您需要对索引进行排序,以便首先显示精确值的查询字段,最后显示“多值”运算符。

一个例外是根据字段进行排序。将它们放在“多值”和精确字段之间,以减少所需的内存排序量。

摘要

对于 MongoDB 来说,速度是游戏的名字。为了快速返回查询,MongoDB 利用操作符来执行数学或逻辑任务。简单来说,理解 MongoDB 运算符是掌握 MongoDB 的关键。

Ready to dive deep into the world of MongoDB operators? 👀 You've come to the right place 💪Click to Tweet

本文重点介绍了一些关键的 MongoDB 操作符,例如比较操作符、逻辑操作符、元操作符和投影操作符等等。它还帮助您理解如何使用 MongoDB 操作符,以及让您充分利用它们的最佳实践。

在所有运算符中,您最常用哪一个,为什么?在下面的评论中分享吧——我们很想听听你的想法!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

MongoDB 与 PostgreSQL: 15 个关键差异

原文:https://kinsta.com/blog/mongodb-vs-postgresql/

当开始一个新的项目时,开发人员最头疼的事情之一就是选择一个堆栈。专注于正确的技术来解决问题可能是一种令人头疼的经历。数据库尤其是很难确定,尤其是当你不清楚你的数据将如何被使用的时候。

由于数据库是软件开发的基础,并且它们为构建各种类型和规模的项目提供各种用途,因此了解数据库的重要性有助于为您的堆栈选择合适的数据库结构。

本文将通过探索两个伟大的数据库管理系统: MongoDB 和 PostgreSQL 之间的差异,帮助您选择正确的开源数据库

什么是 MongoDB?

The MongoDB logo, showing the text beside an upright, green leaf.

MongoDB logo. (Image Source: Mecdata)

MongoDB 是一个跨平台、开源的非关系数据库,于 2009 年 2 月 11 日发布。它以使用带有可选模式的类 JSON 文档而闻名。
MongoDB 被认为是市场上最先进的云数据库服务之一,在 Azure、AWS 和 Google Cloud 之间具有无与伦比的数据移动性和分布性,内置自动化工作负载和资源优化。

它还允许您使用 Atlas CLI、UI 或基础架构即服务(IaaS) 资源提供商在几分钟内创建一个云数据库。

有了 MongoDB Atlas,您可以让您的应用程序保持运行,以便在新功能进入您的管道时跟上您激增的流量。MongoDB Atlas 为其用户提供了先进的数据库优化工具,以便您始终拥有持续构建所需的数据库资源。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

在本指南的帮助下,确定哪种数据库管理系统最适合您🚀 点击推文

主要特征

下面是 MongoDB 的几个关键特性,这些特性使它成为市场上最好的非关系数据库之一:

  • 性能建议:随着应用程序的发展,MongoDB 会帮助您实现最佳的随需应变模式设计实践,以达到最高效率。
  • 多云集群:使用 MongoDB,您可以实现同时利用两个或更多云的弹性强大的应用程序。
  • 负载平衡 : MongoDB 有助于控制并发性,以并行处理多个客户端对其他服务器的请求。这有助于降低每台服务器的负载,同时确保数据一致性和正常运行时间,并允许可扩展的应用程序。

用例

MongoDB 被全球数千个组织用于数据存储需求或作为其应用程序的数据库服务。

MongoDB 在以下方面发挥着关键作用:

  • 内容管理:使用 MongoDB,您可以提供和存储任何类型的内容,构建任何特性,并在单个数据库中编织任何类型的数据。MongoDB 通过商用硬件和更高效的团队帮助您取得成功,使您的项目成本降低 10%,同时提供构建内容丰富的应用程序所需的所有功能。
  • 支付:如果你正在开发一个新的支付产品,MongoDB 的数据灵活性将允许新产品快速进入市场,而不必担心数据碎片等不必要的复杂性。即使你正带领一家成熟的企业试图实现其支付生态系统的现代化,你也可以利用 MongoDB 的灵活性,将其作为一个整合的运营数据层,允许你使用现有数据构建新产品和服务,而无需一个有风险的千篇一律的解决方案。
  • 个性化:MongoDB 允许您实时个性化数百万客户的体验,包括定向优惠、定制主页和社交媒体网络登录等功能。您甚至可以直接对数据运行复杂的查询,而不必担心转换、提取和加载。
  • 大型机卸载:您可以使用 MongoDB 轻松地将工作负载从大型机中移出。大型机卸载是将经常访问的大型机数据复制到构建在 MongoDB 上的操作数据层(ODL)的过程,操作可以从消费应用程序重定向到该层。

PostgreSQL 是什么?

The PostgreSQL logo, showing the text below a stylized blue elephant head outlined in black and white.

PostgreSQL Logo. (Image Source: Uberconf)

尽管 NoSQL 数据库很受欢迎,但关系数据库由于其健壮性和强大的查询能力而继续与各种应用程序相关。

在数据结构不经常变化的情况下,关系数据库非常适合运行复杂的查询和基于数据的报告。与同时代的许可数据库如 SQL Server 和 Oracle 相比,像 PostgreSQL 这样的开源数据库作为稳定的生产级数据库提供了一种经济高效的替代方案。

PostgreSQL 是一个高度稳定的数据库管理系统,由超过 20 年的社区开发提供支持,其高度的完整性、弹性和正确性。您可以将 PostgreSQL 用作各种移动、地理空间、分析和 web 应用程序的主要数据仓库或数据源。

PostgreSQL 也没有许可成本,消除了过度部署的风险。它的热心者和贡献者组成的专门小组定期发现漏洞和解决方案,为数据库系统的整体安全性出一份力。

主要特征

以下是 PostgreSQL 的一些显著特性,这些特性使其成为当今使用最广泛的数据库之一:

  • 非原子列:关系模型的主要约束之一是列必须是原子的。然而,PostgreSQL 没有这种限制,它允许列具有查询可以轻松访问的子值。
  • 支持 JSON 数据:查询和存储 JSON 的能力也允许 PostgreSQL 运行 NoSQL 工作负载——比如,如果您正在设计一个数据库来存储来自多个传感器的数据,并且您不确定您将需要哪些特定的列来支持所有类型的传感器。在这个场景中,您可以构建一个表,其中一列是 JSON,用于存储不断变化的或非结构化数据。
  • 窗口函数 : PostgreSQL 窗口函数在使其成为分析应用程序的最爱方面起着不可或缺的作用。使用窗口函数,您可以执行跨越多行的函数,并返回相同数量的行。窗口函数不同于聚合函数,因为聚合函数在聚合后只能返回一行。

用例

以下是 PostgreSQL 派上用场的一些用例:

  • 联合中心数据库 : PostgreSQL 的 JSON 支持和外来数据包装器允许它与其他数据存储连接——包括 NoSQL 类型——并作为多语言数据库系统的联合中心。
  • 科学数据:科学和研究项目会产生万亿字节的数据,必须以最高效、最有益的方式对其进行管理。PostgreSQL 提供了一个出色的 SQL 引擎,具有强大的分析能力,这使得处理大量数据变得轻而易举。
  • 制造业:各种世界级的工业制造商利用 PostgreSQL 加速创新,并通过以客户为中心的流程推动增长,同时通过使用 PostgreSQL 作为存储后端来优化供应链性能。
  • LAPP 开源栈 : PostgreSQL 可以运行动态应用和网站,作为 LAMP 栈的强大替代方案的一部分。LAPP 代表 Linux、Apache、PostgreSQL、Python、PHP 和 Perl。

MongoDB 与 PostgreSQL 的比较

真正的问题不是 MongoDB 和 PostgreSQL,而是最好的文档数据库和最好的关系数据库。

通常,在开发项目的开始,项目领导很好地掌握了用例,但是对于他们的用户和业务需要的特定应用程序特性却不清楚。他们最终不得不在一个选择上下注,并希望这是最合适的。

在下一节中,我们将阐明 MongoDB 和 PostgreSQL 之间的区别,以帮助您轻松做出决定。我们的信息基于关键因素,如架构、ACID 合规性、可扩展性、复制、安全性和支持等。

让我们开始吧!

酸性顺应性

关系数据库中使编写应用程序变得更简单的最关键的特性之一是 ACID 事务。就数据库事务中的隔离级别而言,默认情况下,PostgreSQL 使用 read committed 隔离级别。它还允许用户将读提交隔离级别调整到可序列化隔离级别。

这里需要注意的重要一点是,事务允许在一个组中对数据库进行各种更改或回滚。因此,在关系数据库中,数据将以表格模式跨独立的父子表建模。

相比之下,文档数据库更容易执行事务,因为它们整理文档中的数据,并且由于读写是原子操作,所以不需要多文档事务。

在更新文档时,MongoDB 支持完全隔离。任何错误都会触发更新操作回滚,从而逆转更改并确保客户端获得一致的文档视图。

MongoDB 还支持跨多个文档的数据库事务,允许相关更改作为一个组回滚或提交。由于其多文档事务能力,MongoDB 是少数几个将文档模型的灵活性、速度和功能与传统数据库的 ACID 保证结合在一起的数据库之一。

架构/文档模型

MongoDB 的文档模型允许用户自然地映射到应用程序代码中的对象,使得全栈开发人员更容易学习和使用。文档为您提供了描述层次关系的能力,以便轻松地存储数组和其他更复杂的结构。

通过将数据存储在嵌套子文档和数组等字段中,可以将 JSON 文档中的相关信息存储在一起,以便通过 MongoDB 查询语言进行快速查询访问。

使用 MongoDB,您可以将数据作为文档存储在二进制表示中,称为二进制 JSON (BSON)。字段可以根据它所服务的文档而不同,因此,没有必要向系统声明文档的结构——文档是自描述的。

如果您需要向文档添加新字段,那么可以在不影响集合中的其他文档或更新 ORM 或中央系统目录的情况下生成该字段。

MongoDB 还为您提供了模式验证选项,以便对每个集合实施数据治理控制。当整理来自多个不同来源的信息或随着时间的推移适应文档中的修改时,这种灵活性非常方便,尤其是在新的应用程序功能被一致部署时。

PostgreSQL 包含一个客户端-服务器架构模型,该模型由以下两个过程组成:

  • 客户端进程:这些是用户用来与数据库交互的应用程序。通常,它有一个简单的用户界面,用于通过 API 在用户和数据库之间进行通信。

  • Server-side process: This is the “Postgres” application that tackles operations, connections, dynamic, and static assets. A running PostgreSQL site is handled by a Postmaster, a central coordinating process. The postmaster daemon is responsible for:

    • 执行恢复
    • 正在初始化服务器
    • 关闭服务器
    • 运行后台进程
    • 管理来自新客户端的连接请求

展开性

可扩展性就是被设计成允许添加新的能力或功能的性质。

PostgreSQL 以多种方式支持可扩展性,包括存储函数和存储过程。PostgreSQL 的广泛之处在于其目录驱动的操作。

关系数据库通常存储关于表、数据库、列等的信息。在系统目录中。这些“数据字典”以表格的形式出现在用户面前,但它们确实有数据库系统内部存储的信息。

PostgreSQL 存储关于列和表的信息,以及关于数据类型、函数和访问方法的信息。

还有:PostgreSQL 还可以通过动态加载将用户编写的代码合并到自身中。通常,用户可能需要某些可以通过共享库实现的功能。用户可以简单地指定代码文件,PostgreSQL 将根据需要加载它,从而使它特别适合于新应用程序的快速原型开发。

另一方面,MongoDB 最终变得可扩展,允许用户创建自己的函数并在框架中使用它们。它相当于用户定义函数(UDF ),允许关系数据库(如 PostgreSQL)的用户扩展 SQL 语句。

此外,PostgreSQL 和 MongoDB 都支持几个扩展和插件,如用于数据库管理的 Adminer

协作和敏捷性

MongoDB 有一个文档模型,使得协作和开发更容易、更快地实现。MongoDB 本质上使用 JSON 或 BSON 将其数据存储为文档。

BSON 包括 JSON 数据中不存在的几种数据类型,如DateTimelongintbyte数组,它们有助于更有效地处理数据,因为根据数据类型它会更具体,而不是像处理通用的“数字”类型一样处理一切。它使查询执行得更快,因为它是一种序列化格式,可以有效地归档类似 JSON 的文档。

BSON 跳过对查询没有用的键,这样可以更快地检索数据。用户可以进一步定义文档的结构,并通过引入新的字段、修改数据或在他们认为合适的时候进行开发来进行一些开发。

这种灵活性对于 MongoDB 来说是一个巨大的优势,因为它有助于避免由于要求管理员重新构建数据定义语言语句,然后通过重新创建或重新加载数据库从头开始而导致的延迟。

MongoDB 还使开发人员或团队之间的协作变得容易,因此,团队之间不需要中介或复杂的通信。

谈到协作,PostgreSQL 包括用户级特权、角色继承和表级特权。您可以管理用户并授予他们读写权限。

此外,您还可以使用审计选项来检查各种组或用户的数据访问活动,这提供了一个额外的安全层。然而,PostgreSQL 没有 MongoDB 快,因为它是一个关系数据库,以行和列的形式存储数据。

外键支持

MongoDB 区别于 PostgreSQL 的一个关键特性是它存储数据的方式。

由于它是非关系的,MongoDB 使用集合而不是表。外键只是一个表中引用另一个表的主键的一组属性。外键将这两个表相互链接起来。

由于 MongoDB 中没有表,所以 MongoDB 中也没有外键;因此没有外键约束。然而,MongoDB 确实有一个 DBRef 标准,它有助于标准化引用的创建。

另一方面, PostgreSQL 支持外键,因为它与 SQL 兼容。通过启用外键约束,PostgreSQL 可以阻止将无效数据插入外键列。

分区和分片

分区和分片本质上是将大型数据集分解成较小的子集。分片意味着数据存储在多台计算机上,而分区将这些数据分组到单个数据库实例中。

MongoDB 是可伸缩的,因为它在集群中跨实例划分数据。它没有将文档分割成小块,因为它们是独立的单元,这样可以更容易地将它们分发到不同的服务器上,同时数据可以在本地保存。

通过 MongoDB Atlas 云服务,数据可以轻松地分布在不同的区域。您还可以选择将它们持续存储在特定区域或全局区域中,以确保减少延迟。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

从版本 5.0 开始,MongoDB 包含了一个“实时”重散列特性,因为您只需要设置一个策略,所以它可以节省大量时间。到时候数据库可以自动重新分配数据。

以前,您可以在不关闭系统的情况下这样做,但是这个过程既复杂又有风险。虽然 MongoDB 有一段时间没有全球地理分区了,但是不同国家的数据增长速度不同。对于必须保留在一个国家本地的数据来说,实时重新共享可能是有益的。

另一方面,PostgreSQL 支持声明性分区,这实质上是一种指定如何将表划分为分区的方法。被划分的表称为分区表,规范由分区方法组成,要使用的列或表达式的列表称为分区键。

您可以通过一个范围实现分区,其中表可以通过由一个键列或一组列定义的范围进行分区,分配给不同分区的值的范围之间没有重叠。

还可以实现列表分区,根据指定的键值对表进行分区。

分身术

复制是在多台服务器上创建同一数据集副本的过程。它使数据库管理员能够提供高数据冗余和高数据可用性。

对于 MongoDB,这是通过使用“副本集”来实现的,副本集是一个由三个或更多服务器组成的同步集群,这些服务器之间不断复制数据。这提供了冗余和保护,以防在计划的维护中断或系统故障时可能发生的任何停机,从而提高了数据库的容错能力。

副本集也可以跨不同的数据中心实现,因为它们在区域停机时会派上用场。这可以通过 MongoDB Atlas 来完成,它使得构建和配置这些集群更加简单快捷。

PostgreSQL 提供主从复制。预写日志允许共享对复制副本节点所做的更改,从而使异步复制成为可能。其他类型的复制包括逻辑复制、流复制和物理复制。

指数

索引是允许我们更快地检索特定行或数据的对象或结构。

PostgreSQL 提供了一系列独特的索引类型来高效地匹配任何查询工作负载。它的索引技术包括 B 树、多列和表达式。此外,部分和高级索引技术,如 GiST、KNN Gist、SP-Gist、GIN、BRIN、覆盖索引和 bloom filters 也可以在 PostgreSQL 中实现。

另一方面,MongoDB 允许您将数据存储在任何可以通过索引快速访问的结构中,无论它在数组或子文档中的嵌套有多深。

语言和语法

MongoDB 和 PostgreSQL 都支持多种语言。

MongoDB 为一些最好的数据库语言提供了驱动支持,如 Python 、R、Java、Scala、C、C++、C#、Node.js 等等。这些 MongoDB 库和驱动程序支持 MongoDB 的所有特性,在所有应用程序中提供高性能和可伸缩性。

PostgreSQL 支持几种过程语言,包括 PL/pgSQL、PL/Python、PL/Perl 和 PL/Tcl 等基础发行版,以及在核心 PostgreSQL 发行版之外开发和维护的其他语言,如 PL/Java、PL/PHP 和 PL/Ruby。

正常化

规范化是结构化关系数据库以减少数据冗余、最小化数据修改中的异常并提高数据完整性的过程。

MongoDB 可以处理规范化和反规范化的数据模型(也称为嵌入式模型)。

嵌入式模型允许应用程序将相关的信息片段存储在同一个数据库记录中,这将为读取操作提供更好的性能,并能够在单个数据库操作中检索相关数据。

此外,您还可以在单个原子写操作中更新相关数据,同时应用程序发出更少的查询来完成常见操作。MongoDB 中用于嵌入式数据模型的文档必须小于最大 BSON 文档大小(16 MB)。

规范化数据模型使用文档之间的引用来描述关系。当嵌入可能导致数据重复,但读取性能不足的优势超过重复的影响时,这将是有益的。

但是,当数据库中以前规范化的数据被分组以提高性能时,反规范化过程通常会导致大量内存消耗。

PostgreSQL 模式具有确定的关系。该结构可以用 1:1、1:多或多:1 关系来标识。数据的标准化可能非常有益,因为它删除了数据的冗余副本,从而也确保了完整性。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

表演

评估两个不同数据库系统的性能具有挑战性,因为 MongoDB 和 PostgreSQL 都有不同的数据存储和检索方式。

MongoDB 是为了水平扩展而构建的,因为它通常将其功能与额外的机器相结合,并且不依赖于处理能力。它能够支持大规模应用程序,无论是以数据大小还是用户数量来衡量。

MongoDB 还可以适应需要快速执行查询的用例,并且可以处理大量数据。它可以整合数百台机器。

从 MongoDB 4.4 开始,针对副本集实现的查询通过“对冲”读取产生了改进的和可预测的性能。这些读取被定向到副本集中的多个节点,直到最快的节点回复。

PostgreSQL 虽然在原始插入速度方面不如 MongoDB 快,但在 ACID 遵从性方面却表现出色。安全可靠地处理事务,允许整个事务失败,而不是执行部分成功的写操作。

MongoDB 直到最近(版本 4)才开始支持类似于 SQL 数据库的 ACID 事务。

与 MongoDB 不同,PostgreSQL 依赖于纵向扩展策略(垂直扩展)来处理数据量和扩展写入。这是通过向现有数据库节点添加更多硬件资源(如磁盘、CPU 和内存)来实现的。

然而,PostgreSQL 在性能优化方面做出了一些努力,包括一个成熟的查询规划器、表达式的实时(JIT)编译、表分区和读查询的并行化。

价格

PostgreSQL 是完全免费和开源的。因此,任何人都可以使用它的特性,并在必要时轻松地修改代码。

MongoDB 也是一个开源工具。然而,MongoDB 确实有其他选项,如 enterprise 和 Atlas(针对云),它们的价格各不相同。MongoDB 企业版提供了一个内部定价模型。

Mongo RealmDB 免费提供给所有 Atlas 用户进行评估和轻度使用,使开发人员能够构建和发布移动应用程序。

MongoDB Realm pricing options compute, sync, request, and transfer listed in a tabular format.

Pricing options for Mongo RealmDB. (Image Source: MongoDB Pricing)

数据迁移也可能产生开销;然而,这是标准的,与您在系统中实现的数据库无关。

询问处理

PostgreSQL 使用关系数据库模型,该模型依赖于在表中存储数据,并利用结构化查询语言(SQL)进行数据库访问。可以使用 PostgreSQL 终端 psql 输入 SQL 命令。它有一个大对象工具,提供对存储在特殊大对象结构中的用户数据的流样式访问。

在添加数据之前,必须构建数据库模式,以便清楚地了解数据关系,从而处理查询。相关信息可以存储在数据库的不同表中。这可以通过外键和连接来访问。

一旦数据库被加载,就很难调整它的结构。它需要开发、运营和数据库管理员中的几个团队来仔细协调结构中所做的更改。

另一方面,MongoDB 的数据结构不需要提前规划,因为它本质上处理的是非结构化数据。数据结构也更容易调整。

开发人员可以选择应用程序中最重要的部分,并进行必要的修改。MongoDB 使用 MQL,它可以用来处理 MongoDB 中的文档和取出数据,同时提供 SQL 所具有的灵活性和强大功能。

MongoDB 将数据作为 JSON 文档处理。您也可以查询 JSON 文档中的字段。因此,当您希望在灵活的数据字段中存储文档时,MongoDB 非常有用。

PostgreSQL 使用GROUP_BY函数来处理和运行聚合查询,而 MongoDB 通常使用聚合管道来处理其查询。

然而,MongoDB 的一个主要缺点是不能轻松地连接表。在 PostgreSQL 中,使用一个 JOIN 语句可以简化这一过程。

MongoDB 试图通过引入多维数据类型来解决这个问题,在多维数据类型中,可以将一个文档存储嵌入到另一个文档存储中。然而,它没有条理,也不像 PostgreSQL 包含的简单的join函数那样优雅。

安全性

当谈到安全性时,PostgreSQL 胜过 MongoDB。管理数据库结构的严格规则使 PostgreSQL 成为一个非常安全的数据库,因此它可以可靠地用于银行系统。

PostgreSQL 提供了大量的身份验证方法,包括可插拔身份验证模块(PAM)和轻量级目录访问协议(LDAP),这减少了服务器的攻击面。它还通过基于主机的身份验证和证书身份验证来确保服务器级保护。

此外,PostgreSQL 提供数据加密,当您的数据通过 web 或公共网络高速公路传输时,允许您使用 SSL 证书。PostgreSQL 还使您能够实现客户端证书认证(CCA)工具,并使用加密函数在 PostgreSQL 中存储加密数据。

然而,PostgreSQL 的安全级别可能会因云系统而异,即使是同一个数据库。

MongoDB Atlas 在三个最大的云提供商中表现相同,使得在多个云之间的迁移更加容易。

此外,MongoDB 具有客户端和字段级加密,这使用户能够在通过网络将数据发送到数据库之前对数据进行加密。然而,由于数据是以键-值对的形式存储在一条记录中的,它缺乏 PostgreSQL 所吹嘘的安全性;MongoDB 的主要焦点仍然是速度。

支持和社区

PostgreSQL 是完全开源的,并得到其社区的支持,这加强了它作为一个完整生态系统的地位。PostgreSQL 经常定期发布更新版本,开发者、发烧友或第三方公司提供支持,试图通过修复 bug 或对数据库系统进行细微修改来开发系统。

像 PostgreSQL 一样,MongoDB 也有一个社区论坛,使用户能够与其他几个用户联系,并获得他们的一般查询的答案。MongoDB 企业支持可以进一步包括一个广泛的知识库,其中包含用例、详细的教程、关于优化的技术说明和最佳实践。

此外,还有 MongoDB 免费提供的培训和认证在线课程。

挑战

虽然我们已经讨论了 MongoDB 和 PostgreSQL 的特性,这些特性使它们受到开发人员的欢迎,但是它们也有各自的弱点。

MongoDB 倾向于关注快速数据操作,但缺乏 PostgreSQL 似乎拥有的数据安全性。这相当耗费内存,因为反规范化过程通常会导致很高的内存消耗。

此外,由于不支持连接,MongoDB 数据库被过量供应了数据——有时是重复的——因此加重了内存负担。MongoDB 还试图将解释纳入其他查询语言,作为其可扩展性的一部分;然而,它可能会降低性能,因为数据库最初不是为处理关系数据模型而构建的。

SQL 到 MongoDB 查询的转换可能需要额外的时间来使用引擎,这可能会延迟部署和开发。

另一方面,虽然 PostgreSQL 易于安装,并且适用于几乎所有平台,但其效率可能因平台而异。此外,它没有可以显示数据库当前状况的修订工具或报告工具。如果事情没有按计划进行,您可能必须不断地检查数据库,以避免发现故障时为时已晚。

PostgreSQL 也稍微慢一点,因为它侧重于兼容性。虽然已经努力提高 PostgreSQL 的速度,但修改仍需要更多的工作。

MongoDB vs PostgreSQL:你该选哪个?

MongoDB 是非关系数据库,而 PostgreSQL 是关系数据库。NoSQL 数据库致力于将键值对中的数据存储为一条记录,而关系数据库将数据存储在不同的表上。

如果您优先考虑跨多个服务器的更快的数据集成和可伸缩性,MongoDB 可能是您的企业的合适选择。

MongoDB 在集成到分析平台时可以发挥最佳作用,因为 MongoDB 的速度提供了动态性能,可以帮助实时跟踪用户的行为。如果您碰巧拥有一个不依赖于结构化模式的繁忙的 web 应用程序,比如《纽约时报》(事实上,它使用了 MongoDB ),或者对于需要存储具有各种属性集合的多个对象的产品目录,这对您的业务也非常有益。

另一方面,PostgreSQL 是数据分析和仓储的完美匹配。如果您正在构建一个数据库自动化工具或一个银行应用程序,您希望在其中实施数据安全性和交易保证,PostgreSQL 可能是合适的选择。
MongoDB 还是 PostgreSQL?了解更多关于本指南✅ 点击推文

摘要

总而言之,到目前为止,我们已经介绍了 PostgreSQL 和 MongoDB 的基本细节。我们已经讨论了它们的历史、主要特征以及它们的不同之处。

虽然 PostgreSQL 和 MongoDB 都是令人惊叹的数据库,但最终还是要选择适合您业务的。

在 PostgreSQL 和 MongoDB 之间,你更喜欢哪个数据库?请在评论中告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

MongoDB vs MySQL:哪个是更好的数据库管理系统?

原文:# t0]https://kinta . com/blog/monodb-vs-MySQL/

市场上有各种各样的数据库,用户经常会就 MongoDB 和 MySQL 进行争论,以找出更好的选择。

随着需求的变化,使用 MySQL 等关系数据库的组织在管理和存储数据时可能会面临一定的困难。与此同时,新公司想知道选择什么样的数据库,这样他们就不会在开发过程中遇到问题。

与此同时,开发金融应用的开发者也经常困惑,他们是应该坚持使用旧的备用 MySQL T1,还是冒险尝试用 T2 MongoDB T3 再分一杯羹。

这就是我们进行这场辩论的原因。比较 MongoDB 和 MySQL 将有助于您了解两个数据库之间的差异,它们的优缺点,以及哪个更适合什么用途。简而言之,它将帮助您为您的项目选择正确的数据库。

所以,欢迎参加辩论!

查看我们的视频指南 MongoDB vs MySQL

MongoDB vs MySQL:它们是什么?

在我们开始比较 MongoDB 和 MySQL 之前,让我们快速勾勒出它们各自是什么。

什么是 MongoDB?

 The MongoDB website with the words "MongoDB: The application data platform

MongoDB.

MongoDB 是一个强大的开源且免费使用的非关系数据库系统,用于存储大量数据。它是 12 年前的 2009 年由 10gen(现在的 MongoDB Inc .)发布的,带有服务器端公共许可证。t 一个用 C++、 PythonJavaScript 编写的具有跨平台兼容性的 NoSQL 数据库程序。它支持操作系统,包括 Windows、macOS 和 Linux,以及 C、 PHP 、Java、Ruby、 Node.js 等语言。

MongoDB 与传统数据库系统的不同之处在于数据的存储方式。

MongoDB 没有在行和列中存储数据,而是采用面向文档的设计,在各种类似 JSON 的文档和集合中表示数据。这些文档包含一系列不同类型的值或键对,比如嵌套文档和数组。对于不同的文档,键/值对的结构可以不同。

除了修改数据结构或模式的灵活性之外,MongoDB 还提供了更高的安全性、可靠性和效率。因此,它有利于更高的速度和存储要求。

MongoDB or MySQL? 🤔 Which database management system is right for you? 👀Click to Tweet

MongoDB 的特性

现在,让我们继续来看看 MongoDB 的一些主要特性:

  • 复制: MongoDB 允许您使用复制(副本集)制作数据的多个副本,并将它们部署在不同的服务器上。该功能有助于数据备份和灾难管理。如果服务器出现故障,您可以随时从存储在其他服务器上的副本中检索数据。

  • 索引:您可以将 MongoDB 文档中的字段作为主字段或次字段进行索引。这有助于提高数据库中的搜索性能,并允许您对索引而不是整个文档执行搜索,这自动有助于提高搜索速度。

  • 临时查询:临时查询是临时命令,为执行查询提供不同的返回。也就是说,MongoDB 支持范围查询、正则表达式(Regex)和字段搜索。此外,查询包括用户定义的 JavaScript 函数,可以返回特定的文档字段。您可以借助 MongoDB 查询语言(MQL)实时更新这些即席查询,这对企业的实时分析非常有用。

  • 分片: MongoDB 能够在分片的帮助下进行水平扩展,分片是一种在不同数据集合之间分布大型数据集的方法。在这里,用户可以选择一个碎片键(一个带有单个或多个副本的主键)来确定集合中的数据分布,并将数据划分到不同碎片的不同范围中。每个碎片都作为一个单独的数据库,使用其他碎片形成一个单独的数据库有助于负载平衡和执行复杂的查询。

  • 负载平衡: MongoDB 有助于控制并发性,以同时处理多个客户端对不同服务器的请求。这有助于减少每台服务器上的负载,确保数据正常运行时间和一致性,并允许可扩展的应用程序。

  • 文件存储:你可以使用 MongoDB 作为一个文件系统,称为 GridFS,它带有数据复制和负载平衡功能,可以供多台计算机存储文件。GridFS,或网格文件系统,包括 MongoDB 驱动程序,你可以用 Nginx 和 lighttpd 插件或 mongofiles 实用程序访问它。MongoDB 还允许开发人员操作文件和内容。

  • 聚合:数据聚合允许用户获得与 SQL 子句- GROUP BY相似的结果。MongoDB 提供了三种聚合方式:

  • 封顶集合: MongoDB 支持封顶集合,即处理数据插入顺序的集合类型。

MongoDB 的使用

MongoDB 被世界上成千上万的组织用于数据存储或作为其应用程序的数据库服务。它在以下方面很有用:

  • WordPress 这样的内容管理系统可以输入、存储和编辑内容
  • 网络和移动应用的数据存储
  • 社交网站
  • 维护地理空间或基于位置的数据
  • 电子商务产品目录和资产管理
  • 基于云的系统
  • 从大型机中转移工作负载
  • 高速实时分析
  • 可扩展的高性能视频游戏
  • 现代化支付架构和遗产现代化
  • 具有不断发展的数据存储需求、更快的日志记录和缓存需求以及不断变化的设计的系统
  • MEAN technology stack for web development,其中 M 代表 MongoDB,其余技术分别为 ExpressJS、AngularJS 和 NodeJS。

Twitter、IBM、Oracle、Zendesk、Citrix、Sony、Intercom、HTC 等公司都在使用 MongoDB。下面是一些被广泛认可的 MongoDB 用例:

  • Aadhar: Aadhar 是印度唯一的身份识别项目,也是世界上最大的生物特征数据库。MongoDB 是它用来存储超过 12 亿人的生物特征和人口统计数据的数据库之一。
  • 易贝:美国电子商务公司易贝,其功能是 B2C 和 C2C,在其各种项目中使用 MongoDB,如搜索建议、云管理和元数据存储。
  • Shutterfly: Shutterfly 是一个流行的照片共享平台,使用 MongoDB 存储和管理 60 多亿张图片,每秒钟处理 10k 次操作。

什么是 MySQL?

The MySQL website, showing a racecar and the words "MySQL Database Service with HeatWave.

MySQL.

MySQL 是一个免费的开源关系数据库管理系统(RDBMS)。它将数据组织和存储为表格格式,表格中的行和列与数据类型相关。它有 GNU 通用公共许可证,你可以在 GitHub 上找到它的库。

这个数据库最初是由瑞典公司 MySQL AB 于 1995 年创建的,其创始人是瑞典人 David Axmark、芬兰人 Michael Widenius 和 Allan Larsson。然而,太阳微系统公司收购了 MySQL AB,2010 年,甲骨文公司收购了太阳微系统公司。

MySQL 的命名法也很有趣——它结合了两个术语:

  • 迈克尔·维德纽斯女儿的名字。
  • SQL: 代表结构化查询语言。

SQL 是一种特定于领域的编程语言,可以通过对数据执行包括创建、提取、删除和修改在内的功能来管理 RDBMS 中的数据。

MySQL 与许多操作系统(如 Windows、macOS、Linux、FreeBSD、OpenBSD 和 Solaris)配合使用,在设备的存储系统中实现 RDBMS,允许网络访问,管理用户,促进数据库完整性测试,以及创建备份。它是用 C++和 C 编写的,使用词法分析器,而它的 SQL 解析器使用 yacc。

该数据库已经收到了积极的反馈,特别是其易于使用的界面的平均使用。就性能而言,它快速而稳定,并且具有多线程和多用户数据库服务器的特性。

MySQL 有两个版本:开源社区服务器和专有企业服务器。后者提供了大量的服务器插件,无需修改代码就可以安装。

MySQL 的特性

下面就来多讲讲这个流行的 RDBMS 的特性。

  • 复制和集群: MySQL 允许复制和集群,这有助于通过不同的同步类型提高应用程序的可伸缩性和性能。您还可以将数据从一个 SQL 服务器复制到其他副本 SQL 服务器。这还允许您在多个数据库中备份数据,以避免数据丢失。

  • 密码支持:当有人试图访问数据库时,MySQL 会为主机验证提供一个密码加密系统。它增加了数据库的安全性,确保只有授权的个人才能访问。此外,其最新版本 MySQL 8.0 也提供了对双重密码的支持,允许开发人员在不停机的情况下轻松修改密码凭据。

  • 性能模式:它监控应用程序性能、资源利用率和服务器事件。这使您能够适当地分配资源,提高应用程序检测任何速度变慢的性能,并在出现任何可疑的服务器事件时采取必要的措施。

  • 在线模式: MySQL 支持多种在线模式,帮助您满足数据存储需求并提供更大的灵活性。

  • 弹性: MySQL 支持的应用程序对故障具有弹性,可以在这种情况下轻松应对。因此,它为所有类型的应用程序(web 或移动)提供了高数据可用性。

  • 事务支持:您可以获得对多级和分布式事务、无限行级阻塞和 ACID 兼容事务的支持。在事务处理上下文中,有四个原则称为 ACID 原则。它代表原子性、一致性、孤立性和持久性。此外,它还可以帮助您维护数据库快照和完整性,以及多版本并发控制和外键实现等约束。

  • GUI 支持:MySQL 中有大量的 GUI 工具,可以简化创建、设计和管理命令行工具的过程,从而节省时间。数据库架构师、管理员和开发人员可以利用这些工具简化他们的工作。

  • 局限性:横向缩放不容易;数以百万计的读取或写入过程会影响数据库性能,并包括关系数据库共有的其他限制。

MySQL 的使用

MySQL 已经存在了二十多年,为全球的组织提供了存储大量数据的便利。以下是 MySQL 的一些用法以及使用它的人。

  • 内容管理系统和博客
  • 有大量产品的电子商务应用程序
  • 日志应用程序
  • 数据库
  • 对于需要高端数据安全性的应用,脸书和 Instagram 等社交媒体网站
  • MySQL 用于存储引擎,如 InnoDB、MyISAM、Memory、CSV、Merge、Archive、Blackhole 和 Federated。
  • LAMP Stack 是一个使用 MySQL 作为其组件之一的 web 开发技术堆栈。它代表 Linux、 Apache 、MySQL 和 PHP/Python/Perl。
  • 它安装在各种云平台上,如微软 Azure ,亚马逊 EC2,甲骨文等。

事实上,Oracle Cloud 提供了 MySQL 即服务,允许用户安装 MySQL 服务器并将其部署在云中。这样,您不需要在本地服务器上安装它。

使用 MySQL 的著名组织有 Airbnb、NASA、索尼、YouTube、网飞、Pinterest、Drupal、Joomla 等等。以下是一些著名的 MySQL 用例:

  • 维基百科是一个在全球传播知识的免费百科全书。它使用 MySQL,需要高可扩展性来满足不断增长的用户群。该数据库帮助他们更新内容,容纳更多的内容和访问者,并支持数以千计的条目和编辑。
  • Twitter: Twitter 从 tweet 存储的时态分片发展到使用 T-bird 的更加分布式的方法。而 T-bird 是用使用 MySQL 的 Gizzard 构建的。

临时分片非常昂贵,而且需要更多的机器来填满推文。他们还面临着负载平衡的问题,对数据库管理员来说逻辑上很复杂。支持 T-bird 的 MySQL 解决了这些问题。

这就是关于 MongoDB 和 MySQL 的全部内容。现在,让我们最后比较一下 MongoDB 和 MySQL,以帮助您决定什么可以更好地适合您的下一个软件应用程序。

MongoDB 与 MySQL DBMS 的比较

这里有一些参数,我们将根据这些参数来比较 MongoDB 和 MySQL。

体系结构

A side-by-side graph of MongoDB and MySQL, comparing the architecture of each with flowcharts for server, query client, and backup client

MongoDB vs MySQL Architecture.

架构构成了每个系统的基础,并建立了引入所有特性和功能的框架。因此,比较 MongoDB 和 MySQL 的架构并仔细理解它们以决定哪种架构更适合您的应用程序是非常重要的。

MongoDB

它将 Nexus 架构作为其设计理念,结合了关系数据库的功能。它可以通过提供高可伸缩性、全局可用性和灵活的模式来满足现代应用程序的需求。因此,改变它的设计是相当容易的。

此外,MongoDB 包括领先开发环境的官方驱动程序,如 AWS 、Azure 和 Kubernetes,以及 JavaScript、Python 等编程语言。,以及 Django 这样的框架。

关系型数据库

另一方面,MySQL 包括一个客户端-服务器架构,其存储经过优化以提供高性能和多线程。它的文档还展示了一些处理配置而不是微调 SQL 度量的性能优化技术。

胜利者:平手。

数据存储格式

A side-by-side comparison of MongoDB and MySQL data storage format, showing MongoDB's in a vertical bulleted list and MySQL's in a 3x2 table

MongoDB vs MySQL: Data Storage Format.

MongoDB

MongoDB 中的数据存储格式可以是这样的:

{
Account Number: 1234567890
First Name: "Jon"
Last Name: "Doe"
Branch Name: "Los Angeles"
}

您可以看到这种格式类似于 JSON,并且您可以轻松地对数据进行更改,这意味着您可以毫不费力地添加更多数据、删除一些信息和修改数据。上面的例子显示了数据库没有固定的模式,从而引入了更多的灵活性。

关系型数据库

另一方面,MySQL 中的数据存储格式看起来像这样:

账号 西方人名的第一个字 分行名称
Twelve billion three hundred and forty-five million six hundred and seventy-eight thousand nine hundred and one 【男性名字】乔恩 母鹿 洛杉矶
Twelve billion three hundred and forty-five million six hundred and seventy-eight thousand nine hundred and two 简(女子名) 母鹿 西雅图

上表显示了 MySQL 如何以行和列的形式组织数据。与 MongoDB 相比,它有一个合适的、严格的结构,很难改变。这是因为你不能引入大量的行或列;你需要以这样一种方式进行设计,每一行都有一列,反之亦然;否则,将违反模式。但是,在 MongoDB 中,您可以很容易地修改数据。

MongoDB 和 MySQL 的术语略有不同:

MongoDB 关系型数据库
收藏品 桌子
文件
圆柱
链接和嵌入 连接
分片 划分
重复 分身术

赢家 : MongoDB 的数据存储格式更容易修改。

模式灵活性

您选择的数据库必须能够根据不同的需求灵活地修改数据库的设计或模式。否则,即使需求有一点点变化,也会变得很烦人。

因此,让我们根据 MongoDB 和 MySQL 的模式灵活性来找出它们的区别。

MongoDB

MySQL 提供了一个灵活的模式,使用户能够根据需求改变设计,特别是对于大数据应用程序。它允许您轻松地组合和存储不同类型的数据,并在不停机的情况下动态地修改模式。您可以在一个集合中存储多个文档,即使它们之间没有任何关系,因为这是一个非关系数据库系统。它使用具有可选模式的类似 JSON 的文档。

但是,它缺少事务和连接;因此,您需要根据应用程序访问数据的方式进行频繁的模式优化。

关系型数据库

在 MySQL 中,在存储数据以及行和列之前,必须明确定义列和表。这里,每个字段由一行和一列组成。这意味着数据存储不会像 MongoDB 那样给你很大的灵活性。这也意味着更慢的部署和开发过程。

但是如果您的应用程序有一个固定的模式,MySQL 是最好的。它将提供更好的数据一致性,而不需要一次又一次地改变设计或浪费时间。但是,如果您有不断变化的需求,MongoDB 可能是您更好的选择。

显然,MongoDB 提供了更多的模式灵活性。

使用的查询语言

了解哪个数据库使用什么查询语言至关重要。它会帮助你了解哪一个对你来说更方便,而不是在安装后感到困惑。

MongoDB

MongoDB 利用了 MongoDB 查询语言(MQL)而不是 SQL 。它表达丰富,支持 CRUD 函数,可以创建、读取、更新和删除数据。此外,它还有助于数据聚合、地理空间查询和文本搜索。

如果您想要请求数据,您必须定义具有与预期结果相匹配的属性的文档。这意味着您需要执行查询操作来从数据库中获取数据,如 db.collection.find() 。MongoDB 通常使用通过 JSON 链接的操作符来执行查询。此外,它还支持 OR 和布尔 and 查询。

然而,MongoDB 从不使用连接操作,它也有任何其他等价的操作符。

关系型数据库

另一方面,MySQL 像其他关系数据库一样使用 SQL。通过支持连接功能,它可以从不同的表中提取数据。这就是像 MySQL 这样的关系数据库“关系化”的原因该操作允许您在一个查询中链接多个表中的数据。

也就是说,SQL 有一个:

  • 用于创建、删除和更改表的数据定义语言(DDL)
  • 具有提交和回滚等操作的数据事务语言(DTL)
  • 具有插入、删除和更新行等选项的数据操作语言(DML)
  • 带有撤销和授权命令的数据控制语言(DCL)

胜利者:平手。

性能和速度

A side-by-side comparison of MongoDB and MySQL's performance and speed by showing the clock and increasing graph with an increasing arrow on both sides

MongoDB vs MySQL: Performance and Speed.

在选择数据库时,性能和速度是你永远不能忽视的。您必须知道对哪个数据库有什么期望以及有什么目的。对于像开发人员和管理员这样忙碌的专业人士来说,每一秒都是至关重要的。

因此,您必须选择能够提供更好性能的数据库来支持您的工作效率,而不是相反。所以,我们来比较一下他们的速度和性能。

由于 MongoDB 和 MySQL 有不同的数据存储方法,评估它们的性能有点困难。您可以将两个 SQL 数据库与一些标准基准进行比较,但是很难对非关系数据库进行同样的比较。

但是我们将基于常见操作以及它们在更大数据量下的表现来比较 MongoDB 和 MySQL。

MongoDB

由于 MongoDB 存储大量非结构化数据,并遵循基于文档的存储方法,因此它比 MySQL 相对更快。这意味着 MongoDB 将数据存储在一个实体的单个文档中,并有助于更快地读取或写入数据。复制等功能可能是造成这种情况的一个重要原因。由于 Jason 式的对象存储,它在处理对象时的性能也更好。

此外,MongoDB 从不涉及供应商锁定,如果您对一种服务不满意,您可以自由地使用替代方案来提高性能。

关系型数据库

MySQL 在处理大量数据时会表现出较慢的性能。这是因为它以规范化的方式存储表。如果您想要更改数据或提取数据,您需要遍历许多表来读写数据,这会增加服务器负载并影响其性能。但是对于事务性操作,您可以使用 MySQL。

它需要一个明确的数据结构才能将数据添加到数据库中。因此,如果您想存储非结构化数据,它并不合适。有时,当涉及复杂数据时,设计合适的模式也变得很困难。

赢家 : MongoDB 更快,性能更好。

安全性

Comparing Security for MongoDB and MySQL, by showing two punching hands opposite to each other and a security sign on the upper middle

MongoDB vs MySQL: Security.

考虑到全球范围内越来越多的网络攻击事件,安全性始终是比较两个系统的主要标准之一。因此,比较 MongoDB 和 MySQL 以确定哪一个对您的应用程序更安全是很重要的。

MongoDB

MongoDB 利用基于角色的访问控制,为用户和设备提供灵活的权限。每个用户都被赋予一个角色,基于该角色,他们被赋予访问数据和执行操作的特定权限。例如,像高级员工这样的用户会有更高的权限级别,因此他们的特权会更大。

这是为您的数据库提供安全性的一种方式,这样未经授权的用户或攻击就无法访问您的数据库并利用它。此外,MongoDB 还支持传输层安全(TLS) 加密和一个名为安全套接字层(SSL) 的安全协议,以增加安全性。您还可以使用主密钥将加密的文档写入数据集合,以实现静态数据加密。

关系型数据库

另一方面,MySQL 有基于权限的访问控制。它还支持像 MongoDB 这样的加密工具,具有类似的认证模型,包括授权、认证和审计。您可以向用户授予角色和权限,使他们能够访问数据集和操作的权限。此外,还可以申请 TLS 和 SSL,安全性更高。

在其最近的更新中,MySQL 还包括了双密码支持,以确保数据访问的安全性。

虽然两者在安全性方面似乎是不分上下,但 MySQL 被认为更安全。原因在于其僵化的架构和模式,这提供了更好的数据一致性和可靠性。

赢家 : MySQL 更安全(死板也不坏)。

可量测性

A side-by-side comparison of MongoDB and MySQL's scalability, by showing three persons working happily under MongoDB and a single person working on different screens under MySQL

MongoDB vs MySQL: Scalability.

随着您的应用程序随着用户群和流量的增加而增长,您必须能够平稳地扩展它以满足不断变化的需求。如果您的应用程序不可伸缩,客户在使用它时会有不好的体验,经常崩溃、滞后和停机。没有人喜欢使用这样的系统,他们可以跳到其他替代系统,如果不是现在,那就更快。

因此,考虑应用程序的可伸缩性很重要,您选择的数据库会影响可伸缩性。因此,让我们根据 MongoDB 和 MySQL 提供的可伸缩性来比较它们。

MongoDB

MongoDB 具有极强的可伸缩性,这是它被用于不断增长的网站、CMS 系统和电子商务商店的主要原因之一。它可以使用一种称为分片的过程进行水平扩展。分片是数据库的一部分,分片是跨多个集合和机器的数据分布技术。它使您能够部署具有更高吞吐量操作和大型数据集的系统。

有了更高的可伸缩性,您可以根据自己的需求向数据库中添加越来越多的服务器,从而轻松地创建多个服务器集群。它允许您在具有更高读写性能的分片集群中存储数据集的副本,以支持不同规模的应用程序。它还能让您确保数据得到备份,并且在网络攻击或灾难发生时不会丢失。

更不用说,将负载和数据集划分到不同的服务器上还可以让您以更低的成本运行它们,相比之下,一台服务器上的所有数据都需要高端、昂贵的硬件。MongoDB 中分片的另一个好处是它最大化了磁盘空间并提供了动态负载平衡。

此外,MongoDB 支持基于范围的分片或数据分区,以及透明的查询路由和自动分发数据量。

关系型数据库

来到 MySQL,可伸缩性是有限的。它为您提供了两种扩展应用程序的选择—创建读取副本或垂直扩展。它允许通过集群进行数据复制和垂直扩展,有助于通过不同的同步类型提高应用程序的可伸缩性和性能。

这里显著的区别是 MySQL 提供垂直伸缩,而 MongoDB 提供更灵活的水平伸缩。现在,垂直扩展意味着系统允许您通过增加具有上限的单个服务器中的 CPU 或 RAM 规格来增加负载。

如果您想要执行复制,使用读取复制很容易。这允许您创建数据库的只读拷贝,并将它们添加到不同的服务器上,但有一些限制—一个是您可以添加的副本总数。由于这一限制,您可能会面临一些关于应用程序定期读写数据库(或大量写入)的问题。

尽管 MySQL 中引入了多主复制,但与 MongoDB 中的功能相比,它的实现仍然有限。它可以增加更多的写规模,但仅限于单独的应用程序;他们中的每一个人都可以写信给不同的电源,并获得规模。

此外,MySQL 不涉及分片的标准实现。尽管它提供了两种分片方法——MySQL Fabric(分片框架)和自动分片——但由于许多障碍和限制,人们很少部署它们。这就是为什么像脸书这样的公司使用他们自己的切分框架。

如果您利用分片实现可伸缩性,请确保选择正确的分片密钥,因为错误的密钥会导致系统不灵活。例如,更改分片键可能会对应用程序、节点事务和位置产生负面影响。此外,如果碎片变更不完整,可能会出现数据一致性等问题。

因此,在使用 MySQL 时,您必须谨慎地做出正确的决策,以进行模式更改以及数据分区、分片键、节点和数据库之间的映射。

获胜者 : MongoDB 提供了更高的可伸缩性,而 MySQL 有很多限制,如果某些过程做得不对,可能会带来不一致和问题,如前所述。

事务模型:ACID 与 BASE

选择数据库的一个重要步骤是找出它的事务模型。事务模型由确定数据库如何存储、操作和组织数据的规则组成。

两种交易模型很流行:

  • 酸(原子的、一致的、孤立的和持久的)
  • 基础(基本可用性、软状态和最终一致性)

根据 CAP(一致性、可用性和分区)定理,在允许分区的分布式系统或即使在临时通信中断时也能继续工作的系统中,不可能同时拥有可用性和一致性。

具有 ACID 和 base 模型的数据库之间的区别在于它们如何处理这种限制。ACID 数据库提供更一致的系统,而 base 数据库提供更高的可用性。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

现在,让我们来看看 MongoDB 和 MySQL 遵循什么模型。

MongoDB

MongoDB 遵循基本模型,并确保事务始终可用。它是这样工作的:

  • 基本可用:具有基本模型的数据库通过在数据库集群中的不同节点之间复制和传播数据来确保数据可用性,而不是强制实现瞬时一致性。
  • 软状态:基本模型中的数据值会随着时间而变化,因为没有即时的一致性。该模型还可以脱离数据库概念,强制实现其一致性,并将此责任委托给开发人员。
  • 最终一致:虽然 BASE 不强制立即一致,但它可以。当它出现时,您仍然可以执行数据读取。

MongoDB 以外的数据库采用的基础模型有 Redis 和 Cassandra。如果您的应用程序需要情感分析,这个模型是一个很好的选择。

客户服务和营销公司可以利用这一点来进行他们的社会网络研究。该数据库还可以容纳社交网络订阅源中的大量数据。

关系型数据库

MySQL 遵循 ACID 模型来确保每个事务的一致性。它适用于处理在线分析处理(如数据仓库)或在线交易处理(如金融机构)的企业。这类组织需要一个能够管理任意规模的小型并发事务的数据库。酸的工作原理如下:

  • Atomic:ACID 模型中的每个事务要么正常执行,要么完全停止,同时数据库恢复到事务的初始状态。这样做是为了确保数据在整个数据库中有效。
  • 一致:事务是一致的,绝不会损害数据库的结构完整性。
  • Isolated: 该属性确保在处理过程中没有事务会干扰其他事务,从而损害它们在数据库中的完整性。
  • 持久:与已完成的交易相关的数据可以在断电或网络中断期间持续存在。即使事务失败,也不会影响任何数据。

由于它提供了更高的安全性和交易保证,金融机构只使用 ACID 数据库。它的原子性质也有利于安全的资金转移。它确保被中断的事务被立即终止以防止错误。

除了 MySQL 之外的 Acid 兼容关系数据库还有 PostgreSQL ,SQLite,Oracle 等。此外,一些非关系数据库在一定程度上也是 ACID 兼容的,比如 Apache CouchDB 和 IBM Db2。

问题是哪种事务模型更好,答案是不清楚的,因为两者对于不同的用例以及项目方面都是有用的。由于其结构化的性质,ACID 数据库可以适合需要更高一致性、可靠性和可预测性的项目。

另一方面,基本数据库更适合于需要更高、更简单、更灵活的伸缩性的项目。

胜利者:平手。

易用性

A side-by-side comparison of MongoDB and MySQL ease of use, showing a girl working under MongoDB and a boy working with different tools under MySQL

MongoDB vs MySQL: Ease of Use.

选择数据库时,您必须记住数据库的易用性。它不应该给你的团队带来困难,否则生产力会下降,你将不得不花费资源和时间来培训他们。

所以,让我们来看看 MongoDB 和 MySQL 哪个数据库更容易使用。

MongoDB

MongoDB 的数据存储过程相当简单,任何有编程技能的人都能理解。它以非结构化格式将数据存储在集合中,以提供更大的灵活性。它允许开发人员(可能是也可能不是数据库专家)使用它来支持他们的应用程序开发。

对于不同的模式,MongoDB 为那些不需要 MySQL 等关系数据库提供的特性的团队提供了一个灵活的接口。例如,开发人员构建一个不依赖于结构化模式的 web 应用程序可以使用 MongoDB。

然而,并不是你团队中的所有人都需要熟悉像 MongoDB 这样的 NoSQL 数据库。在这种情况下,如果你想继续开发这个数据库,你需要帮助他们理解它。此外,某些查询与 SQL 数据库完全不同,如更新、插入、删除等。

关系型数据库

MySQL 有一个设计好的结构,任何有基本编程技能的人都能很容易理解。学习和使用 MySQL 很容易,这就是为什么当谈到数据库时,人们会从 MySQL 或任何其他 SQL 数据库开始。

即使您的开发人员不精通 MySQL,但有使用其他 SQL 数据库的经验,他们也可能会很快赶上。

此外,像 select、join 等查询。在基于 SQL 的数据库如 MySQL、SQLite、Oracle、PostgreSQL 等中执行起来毫不费力。

开发人员创建的应用程序需要严格复杂的数据结构和带有大量表的模式,他们会发现使用 MySQL 很容易。对于开发需要顶级安全性或涉及频繁事务的应用程序,它也更容易使用。

例如,银行应用程序可以利用 MySQL 来存储对敏感信息至关重要的大型数据集。他们需要高级别的安全性、交易保证和完整性。

赢家:对比 MongoDB 和 MySQL,MySQL 因为简单,结构得当,更容易上手。

全文搜索可用性

MongoDB

这个数据库最近增加了一个全文搜索,它使用一个字符串数组的特定索引类型来执行。此外,MongoDB 支持术语搜索和阶段搜索,使任何技能水平的用户都可以轻松找到东西。

此外,MongoDB 还支持使用短语和术语搜索的布尔搜索。尽管有某些限制,您仍然可以很容易地执行这个特性。为了执行全文搜索,数据库不便于控制子集字段的定义。它与包含的每个字段一致地匹配,向您显示结果。

关系型数据库

MySQL 支持全文搜索已经有相当长的时间了。它也可以使用一种特殊的索引类型来执行,并借助短语搜索、术语搜索和布尔搜索来实现。

但是对于集群数据库,MySQL 还不支持全文索引。所以,这里可以认为是一个限制。

赢家 : MongoDB 的全文比较容易,限制少。

数据复制

数据复制是数据库的重要组成部分。这意味着需要制作数据的副本并将其存储在其他数据库服务器中。它不仅可以提高应用程序的可扩展性和性能,还可以让您备份数据以避免丢失。此外,它还提高了访问数据的效率。

让我们根据 MongoDB 和 MySQL 提供复制的能力来比较它们。

MongoDB

MongoDB 支持的唯一复制类型是主-从数据复制,其中每个数据由一个主服务器组成。这种配置允许大量节点(非主节点或辅助节点),并限制在单个数据库中执行的操作。

单个主节点接受写入和读取,并且配置可能还包括只读辅助节点或服务器。在这里,数据从主服务器异步复制到辅助服务器。这种类型的复制通常更快,但不太可靠。

MongoDB 中的主-从复制先于数据副本集,但是可以提供较少的冗余。MongoDB 提供了一个将主-从配置转换成副本集的选项。使用副本集,it 可以创建不同的数据副本,并且在整个过程中,副本集中的每个成员都被分配了一个角色,可以是主要角色,也可以是辅助角色。

此外,默认情况下,读取或写入发生在主复制副本上,然后您可以在辅助复制副本上复制它。此外,副本集更健壮,更适合生产使用。

关系型数据库

与支持单一复制方法的 MongoDB 不同,MySQL 提供了两种类型的复制方法——主-主复制和主-从复制。借助多源复制,您可以轻松地从不同的主机并行复制数据。

主-主复制的工作方式类似于主-辅复制,但不同之处在于两个节点同时是副本和主节点。这意味着节点之间存在循环复制。这里,您可以有多个主节点来接受写和读请求。您还可以为每个主服务器获取多个辅助服务器。此外,主机之间的复制是异步的。

使用干线-干线数据库的优点是你可以在几个站点上的整个网络中分配干线。主-主配置被认为更适合现代使用,因为每个单元都有一套完整的数据。所以,即使他们中的一个失败了,其他人也会在那里服务。缺点是,它可能涉及通信延迟。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

除此之外,MySQL 还可以使用其他复制模型,如多主集群和组复制。

赢家:显然,与 MongoDB 相比,MySQL 提供了更多可靠的复制选项。

索引优化

索引有助于您在数据库中快速查找数据。尽管索引优化是 MongoDB 和 MySQL 的一个共同特征,但它们有不同的方法。因此,了解哪种方法更好,能给你带来更多方便,这一点很重要。

因此,让我们根据 MongoDB 和 MySQL 如何执行索引优化来比较它们。

MongoDB

如果找不到索引,就需要扫描集合中的每个文档,以选择与查询语句匹配的文档。这个过程既繁琐又耗时。此外,它需要更多的努力,因为没有特定的结构来存储数据。

关系型数据库

如果没有定义索引,数据库搜索引擎将开始扫描整个表来查找相关的行。因为它是一个具有适当结构的关系数据库,所以 search query 的性能最佳,并且比 MongoDB 提供更快的结果。

赢家 : MySQL 提供更快的索引优化。

本地语言驱动程序

MongoDB

MongoDB 对开发人员的限制较少。MongoDB 驱动程序和 API 必须是所用编程语言的原生程序。

关系型数据库

MySQL 为开发人员提供了有限的与 JSON 数据交互的选项,因为有多个 SQL 功能层。它也有很多限制,这可能会成为一个巨大的开销,需要更好的规划和执行。想要通过惯用 API 进行交互的开发人员也面临许多困难。

赢家 : MongoDB 显然是这里的赢家。

社区支持和部署

无论你是初学者还是专家用户,随时都可能遇到麻烦。当这种情况发生时,您可以从数据库开发人员社区获得帮助。他们可以回答您的问题,帮助您了解更多信息,并提供为社区做贡献的机会。

同样,您还必须知道哪个数据库可以在什么平台上运行。它将帮助您根据您的项目需求和使用的其他技术来决定选择什么数据库。

因此,让我们根据 MongoDB 和 MySQL 的社区支持和部署来比较它们。

MongoDB

MongoDB Inc .拥有并维护 MongoDB。随着 NoSQL 用户的激增,这是此类数据库中的一个。由于其无可挑剔的特性和开源的可用性,它有一个强大的社区,你可以依靠。

谈到部署,MongoDB 易于跨各种平台使用和部署,包括 Windows、Linux、macOS、FreeBSD 和 Solaris,并且可用于 web、云和 SaaS 应用程序。

关系型数据库

甲骨文公司目前拥有和维护 MySQL,它最初是在 Sun Microsystems 和 MySQL AB 之下。它已经存在了 20 多年,在全球拥有广泛的用户基础。因此,它的社区支持也非常好。通过成为这个大社区的一部分,您可以联系、学习和增长您的数据库知识。

对于部署,MySQL 也毫不费力。您甚至可以使用在 GitHub 上找到的源代码手动构建和安装它。或者,如果不需要特殊定制,您可以从二进制包中安装它。

MySQL 可用于 web、云和 SaaS 应用程序,如 MongoDB,并运行在多种平台上,如 Windows、macOS、Linux、Solaris 和 FreeBSD。它也可以运行在云平台上,如 Microsoft Azure、Oracle Cloud 和 Amazon EC2。您可以使用包管理器下载 MySQL,并为许多 Linux 发行版轻松安装它。接下来,您可能需要在其上配置优化和安全设置。

赢家:鉴于广泛的社区基础以及易用性和部署性,MySQL 的得分超过了 MongoDB。

市场份额和知名度

MongoDB 和 MySQL 都是数据库行业的响当当的名字。因此,是时候我们来看看哪种产品更受欢迎,为什么以及它们在全球的市场份额了。

MongoDB

MongoDB 是最受欢迎的非关系数据库,在整个数据库市场上广受好评。

根据 Datanyze 的数据, MongoDB 在数据库中排名第 7,市场份额为 4.5%。它还强调了全球超过 7k 家公司在使用 MongoDB。

Showing MongoDB's market share by mentioning different values for different areas

MongoDB Market Share.

其受欢迎的原因是开发人员需要应用程序的灵活性和可伸缩性来满足当前不断增长的用户需求。它还使用户能够操作数据,轻松查询,并找到有用的见解。

此外,MongoDB 有超过 177k 个存储库,GitHub 上有 923k+个提交。

关系型数据库

MySQL 是世界上最流行的数据库之一。人们将它作为一个独立的系统使用,或者与其他系统如 MongoDB、PostgreSQL 等结合使用。

根据 Statista 的报告,截至 2021 年 6 月,MySQL 是仅次于 Oracle 的全球第二大数据库管理系统。原因可以这么多;它是免费的,开源的,并且有很好的特性。它提供了可伸缩性、可用性和安全性,使其适合现代项目。此外,其庞大的在线社区和易用性吸引了大量用户。

另一份报告显示,MySQL 的市场份额约为 46.83%,拥有 144,000 多名活跃客户。

Showing MySQL's Market Share by mentioning different values in a horizontal way for different areas

MySQL Market Share.

此外,MySQL 在 GitHub 上有 222k 以上的存储库和超过 700 万次提交。

胜利者:毫无疑问,MySQL 在这两者中更受欢迎。

MongoDB vs MySQL:何时使用它们?

MongoDB 和 MySQL 各有利弊,各有优缺点。因此,它们在不同的情况下都很有用。

MongoDB

如果除了更快、自动和快速的数据恢复之外,您还想获得更高的数据可用性,那么这个数据库非常有用。由于它提供了出色的可伸缩性,如果您正在开发一个需求不断增长的应用程序或站点,可以考虑 MongoDB。

对于没有数据库的小公司,管理员可以充分利用 MongoDB。然而,如果你的目标是增长,这不应该是一个永久的解决方案。此外,如果您想降低与模式迁移相关的成本,MongoDB 可能是一个可行的选择。

此外,如果您运行的大多数服务都在云上,那么 MongoDB 可能适合您。它有一个原生的体系结构,具有可扩展性特性,如分片,以满足您希望的水平扩展和业务敏捷性。

关系型数据库

对于不需要立即扩展的早期初创企业,MySQL 是更好的选择。此外,如果您正在从事一个未来不需要太多扩展的项目,您可以考虑 MySQL。它还将提供简单的设置和维护。

除此之外,如果您希望用结构化数据保持一个固定的模式,不需要您随时间而改变,那么您可以考虑 MySQL。此外,如果您的预算有限,但仍需要高性能,MySQL 是不二之选。

此外,如果您正在构建一个具有较高事务率的财务应用程序或项目,MySQL 是一个不错的选择。它的安全特性还可以保护您的应用程序和数据安全,防止它们落入他人之手或在网络攻击中被窃取。

赢家:由于两者对不同类型的企业都有用,所以没有明确的赢家。

MongoDB 与 MySQL:优势与劣势

看看与 MongoDB 和 MySQL 相关的各种优点和缺点:

MongoDB

MongoDB 的优点是:

  • 它具有高度的适应性和灵活性,可以满足不断变化的业务需求和情况。
  • 轻松放大或缩小
  • 允许在文档中查询和返回字段
  • 支持数据复制,因此您可以保存数据的副本,永远不会丢失
  • 允许存储不同类型、不同大小的文件,而不会影响您的技术堆栈
  • 允许创建索引以提高搜索性能
  • 在多台服务器上运行,并提供数据复制和负载平衡,因此即使在硬件故障时也能正常工作
  • 遵循基本模型以提供更高的数据可用性
  • 使用方便

MongoDB 的缺点是:

  • 与其他数据库系统相比,ACID 模型并不强大
  • 没有为存储过程提供选项,这意味着您不能在数据库级别实现业务逻辑,这与关系数据库不同
  • 交易有时会很复杂或不安全
  • 有点陡峭的学习曲线
  • 文档结构不良
  • 涉及更高的内存消耗,并且缺少连接或内置分析

关系型数据库

MySQL 提供了以下优势:

  • 支持多种复制选项,如主-辅助、主-主、横向扩展、组复制等。
  • 通过用户友好的界面轻松使用和安装。此外,您可以使用不同的来源(如有用的书籍、白皮书和博客)轻松地学习和排除故障。
  • 可以管理大量数据,从存储到对数据执行操作
  • 降低了与存储引擎相关的开销
  • 更安全,并使用基于权限的身份验证
  • 提供像全局数据分发和报告这样的功能,这使它对不同形状和大小的应用程序非常有用
  • 支持内存存储引擎来查找经常使用的表

使用 MySQL 的缺点是:

  • 不缓存存储过程
  • 具有系统目录的事务不符合 ACID
  • 用于触发器或过程的 MySQL 表大多是预先锁定的
  • 系统崩溃会破坏整个系统目录
  • 严重依赖 SQL
  • 不支持 Python 或 Java 集成

赢家:没有明确的赢家,因为 MySQL 和 MongoDB 都有一些优点和缺点。

MongoDB 与 MySQL:版本和定价

虽然 MongoDB 和 MySQL 是开源的,可以免费使用,但它们也提供付费版本,以提供更多的功能和好处。

MongoDB

MongoDB 提供各种免费和付费的计划。你可以将它的免费版用于部署在共享云上的小规模应用。以下是它的三个版本:

  • MongoDB 社区服务器:它是免费的,可以在 Windows、OS X 和 Linux 上运行。
  • MongoDB 企业服务器:是商用的。
  • MongoDB Atlas: 这是一个完全托管的按需云数据库,运行在 GCP、Azure 和 AWS 上。

因此,如果您有不同的需求,您可以根据云的类型、安全标准和存储来选择定价等级。它包括三种定价方案:

  • 共享:0 美元/月
  • 专用:每月 57 美元
  • 无服务器:每百万次读取 0.30 美元起

关系型数据库

除了免费版,MySQL 还有以下商业计划:

  • MySQL 标准版:价格为每年 2000 美元
  • MySQL 企业版:售价 5000 美元/年
  • MySQL Cluster CGE: 价格为每年 10,000 美元

赢家:平手,比较定价和收益。

MongoDB 与 MySQL:主要的相似之处和不同之处

A Venn diagram showing the similarity overlap between MongoDB and MySQL along with their logo

Similarities between MongoDB and MySQL.

MongoDB 和 MySQL 的主要相似之处如下:

类似

MongoDB 和 MySQL 都是:

  • 是开源和免费的数据库。
  • 使用强大的查询语言。
  • 使用短语和术语搜索支持全文搜索。
  • 借助短语搜索和文本搜索提供索引搜索。
  • 拥有数千名专业人士的强大社区支持
  • 报价指数优化
  • 通过主从配置提供数据复制。

差异

让我们用一个容易理解的表格来看看 MongoDB 和 MySQL 的区别:

参数 MongoDB 关系型数据库
数据库的类型 这是一个由 MongoDB Inc .开发的开源、非关系型(NoSQL)数据库系统。 它是一个开源的关系数据库管理系统(RDBMS ),由 MySQL AB 开发,目前归 Oracle 所有。
数据库结构 它将数据存储在类似 JSON 的文档和集合中。模式可以变化,并且很容易进行修改 它以包含行和列的表格结构存储数据。
体系结构 它遵循 Nexus 架构,具有更高的灵活性和可用性。 它遵循客户端-服务器架构,具有优化的存储性能和多线程。
模式灵活性 高度灵活的模式,无需停机即可轻松修改设计。 它的模式是严格的,因此进行修改并不容易。
查询语言 它使用 MongoDB 查询语言(MQL),这是丰富的,表达与 CRUD 函数。 它使用 SQL,并使用连接功能从其他表中获取数据。
性能和速度 t 比 MySQL 更快,有助于快速读写请求。 在处理大量数据时,它比 MongoDB 相对较慢,因为它以表格格式存储数据。
安全性 由于没有固定的结构,可能会出现不一致和数据安全问题。 MySQL 提供了更好的安全性,因为它定义了具有更高一致性的数据结构。
本地语言驱动程序 它为开发人员提供了更少的限制,并支持原生 MongoDB 驱动程序和类似于所用编程语言的 API。 由于各种 SQL 功能层,它与 JSON 交互的选项有限。
可量测性 它高度可扩展,并通过分片提供水平扩展。 它的可扩展性是有限的,您可以选择使用读取副本或垂直扩展来扩展。
交易模型 MongoDB 遵循基础模型,具有更高的可用性。 它遵循更一致的 ACID 模型。
易用性 使用 MongoDB 既简单又容易。 MySQL 具有定义明确、易于理解的结构,对每个人来说都更容易使用。
术语 集合、字段、文档、链接和嵌入文档 表、列、行和联接

MongoDB 能取代 MySQL 吗?

以上问题的答案是:“可能吧!”

虽然用 MongoDB 替换 MySQL 对于某些用例或情况来说可能是一个明智的决定,但对于其他人来说却行不通。由于 MongoDB 非凡的灵活性、可伸缩性和许多有用的特性,它的执行速度更快。

易贝和 Twitter 等全球知名公司正在使用该数据库来满足他们的数据存储和管理需求。因此,如果您面临以下问题,您可以替换 MySQL:

  • 大数据;因为 MySQL 在没有合适模式的情况下处理大数据时会出现问题
  • 无法形成数据库的复杂数据
  • 如果您想扩大规模并简化数据分区
  • 如果您有大量低商业价值的数据,请替换为 MongoDB,并将其部署在开源模型中。

但是,如果您想构建一个像金融或银行应用程序这样的安全应用程序,您可以考虑不要用 MongoDB 替换 MySQL。此外,如果您想构建营销或分析应用程序,那么 MySQL 在其他用例中更好。

With a variety of databases available in the market, the debate often boils down to MongoDB vs MySQL... so which one is right for you? 🤔Click to Tweet

摘要

MongoDB 和 MySQL 有不同的架构和特性,适合不同的用例。它们各有利弊,说明哪种适合什么用途。

因此,这里没有放之四海而皆准的政策。在 MongoDB 和 MySQL 的比较中,我们不能说哪一个更好。这不是因为这场比赛是平局,而是由于它们在各种不同任务中的适用性。

由于灵活性和可伸缩性是 MongoDB 的强大属性,它适合于需求不断变化的应用程序,并主要用于增长。另一方面,MySQL 的长处是安全性和一致性;出于这个原因,它更适合涉及交易的应用程序,基于金融的应用程序等。,还有那些不需要经常换的。

因此,在您选择 MongoDB 还是 MySQL 之前,请确保确定您的项目需求和优先级,然后选择更适合您需求的那个。

对 MongoDB vs MySQL 有看法吗?请在下面的评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

mono Repo vs . Multi Repo:代码库策略的利弊

原文:https://kinsta.com/blog/monorepo-vs-multi-repo/

通过 Git 托管和管理代码主要有两种策略:mono repo vs multi repo。这两种方法各有利弊。

我们可以对任何语言的任何代码库使用任何一种方法。您可以对包含几个到几千个库的项目使用这些策略。即使它涉及几个或数百个团队成员,或者您想要托管私有或开源代码,您仍然可以基于各种因素选择 monorepo 或 multi repo。

每种方法的优缺点是什么?我们应该在什么时候使用其中之一?让我们来了解一下!

T3】

什么是回购?

repo(repository 的缩写)是来自项目的所有变更和文件的存储,使开发人员能够在整个开发阶段“版本控制”项目的资产。

我们通常指的是 Git 仓库(如 GitHubGitLabBitbucket 所提供的),但这个概念也适用于其他版本控制系统(如 Mercurial)。

通过 Git 托管和管理我们的代码库有两种主要策略:单一回购方法和多重回购方法。🚀探索本指南中的每一个⬇️ 点击推文

什么是单向回购?

monorepo 方法使用单个存储库来托管组成公司项目的多个库或服务的所有代码。在最极端的情况下,一个公司的整个代码库——跨越不同的项目,用不同的语言编码——都托管在一个存储库中。
T3】

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

单一回购的好处

将整个代码库托管在一个存储库中有以下好处。

降低进入壁垒

当新员工开始为一家公司工作时,他们需要下载代码并安装所需的工具来开始工作。假设项目分散在许多存储库中,每个存储库都有其安装说明和所需的工具。在这种情况下,最初的设置将会很复杂,而且文档往往不完整,需要这些新的团队成员向同事寻求帮助。

单一回购简化了事情。由于有一个包含所有代码和文档的单一位置,您可以简化初始设置。

集中代码管理

拥有一个单一的存储库可以让所有开发人员看到所有的代码。它简化了代码管理,因为我们可以使用单个问题跟踪器来监视整个应用程序生命周期中的所有问题。

例如,当一个问题跨越两个(或更多)子库,并且依赖库上存在 bug 时,这些特征是有价值的。对于多个存储库来说,找到发生问题的那段代码可能是一个挑战。

最重要的是,我们需要找出使用哪个存储库来创建问题,然后邀请并交叉标记其他团队的成员来帮助解决问题。

然而,使用 monorepo,定位代码问题和协作解决问题变得更容易实现。

无痛的应用范围重构

当创建应用程序范围的代码重构时,多个库将受到影响。如果您通过多个存储库托管它们,管理所有不同的拉请求以保持它们彼此同步可能是一个挑战。

monorepo 使得对所有库的所有代码执行所有修改并在一个单一的 pull 请求下提交变得容易。

更难破坏相邻的功能

使用 monorepo,我们可以设置所有库的所有测试,以便在任何单个库被修改时运行。因此,在一些库中进行更改的可能性已经最小化了对其他库的负面影响。

团队共享开发文化

尽管并非不可能,但使用 monorepo 方法,在不同的团队中激发独特的亚文化变得具有挑战性。由于他们将共享同一个库,他们很可能会共享相同的编程和管理方法,并使用相同的开发工具

单一回购方法的问题

为我们所有的代码使用一个单一的存储库有几个缺点。

较慢的开发周期

当库的代码包含导致依赖库测试失败的重大更改时,也必须在合并更改之前修复代码。

如果这些库依赖于其他团队,而这些团队正忙于其他任务,并且不能(或者不愿意)调整他们的代码以避免破坏性的变化并通过测试,那么新特性的开发可能会停滞。

更重要的是,项目可能会以公司中最慢的团队的速度开始推进。这种结果可能会让最快团队的成员感到沮丧,为他们想要离开公司创造条件。

此外,一个库也需要为所有其他库运行测试。运行的测试越多,运行它们花费的时间就越多,从而降低了我们迭代代码的速度。

需要下载整个代码库

当 monorepo 包含一家公司的所有代码时,它可能会非常庞大,包含数十亿字节的数据。为了对托管在内的任何库做出贡献,任何人都需要下载整个库。

处理一个庞大的代码库意味着对硬盘空间的低效利用,以及与它的缓慢交互。例如,像执行git status或用正则表达式在代码库中搜索这样的日常操作可能比使用多次回复要多花几秒甚至几分钟的时间。

未修改的库可能是新版本的

当我们标记mono repo 时,其中的所有代码都被赋予新的标记。如果此操作触发了新的版本,那么存储库中托管的所有库都将使用标签中的版本号进行新的发布,即使这些库中的许多库可能没有任何更改。

工作更加困难

开源项目必须让贡献者尽可能容易地参与进来。有了多个存储库,贡献者可以直接前往他们想要贡献的项目的特定存储库。然而,在 monorepo 托管各种项目的情况下,贡献者必须首先导航到正确的项目,并且需要了解他们的贡献如何影响所有其他项目。

什么是多重回购?

多回购方法使用几个存储库来托管一个公司开发的项目的多个库或服务。在最极端的情况下,它将在其存储库下托管每个最小的可重用代码集或独立功能(如微服务)。

多重回购的好处

独立于所有其他库托管每个库有很多好处。

独立库版本控制

当标记一个存储库时,它的整个代码库被分配了“new”标记。由于存储库中只有特定库的代码,所以该库可以独立于托管在其他地方的所有其他库进行标记和版本控制。

每个库都有一个独立的版本有助于定义应用程序的依赖树,允许我们配置每个库使用的版本。

独立的服务版本

由于存储库只包含某些服务的代码,没有其他内容,所以它可以有自己的部署周期,独立于访问它的应用程序所取得的任何进展。

服务可以使用快速发布周期,比如连续交付(在通过所有测试后部署新代码)。一些访问该服务的图书馆可能使用较慢的发布周期,例如那些每周只发布一次新版本的图书馆。

帮助定义整个组织的访问控制

只有参与开发库的团队成员需要被添加到相应的存储库中并下载其代码。因此,应用程序中的每一层都有一个隐式的访问控制策略。那些与库相关的人将被授予编辑权限,其他人可能没有访问库的权限。或者他们可能被授予阅读权限,但没有编辑权限。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

允许团队自主工作

团队成员可以独立于所有其他团队设计库的架构并实现其代码。他们可以根据库在一般环境中的作用做出决策,而不会受到外部团队或应用程序的特定需求的影响。

多重回购方法的问题

使用多个存储库会导致几个问题。

库必须不断地重新同步

当包含重大变更的库的新版本发布时,依赖于该库的库将需要进行调整以开始使用最新版本。如果库的发布周期比其依赖库的发布周期快,那么它们很快就会变得不同步。

团队需要不断赶上来使用其他团队的最新版本。考虑到不同的团队有不同的优先级,这有时可能很难实现。

因此,一个跟不上的团队可能会坚持依赖库的过时版本。这一结果将对应用程序产生影响(在安全性、速度和其他考虑方面),跨库开发的差距只会越来越大。

可能会分裂团队

当不同的团队不需要交互时,他们可能会在自己的筒仓中工作。从长远来看,这可能导致团队在公司内部产生他们的亚文化,例如采用不同的编程或管理方法,或者利用不同的开发工具集。

如果一些团队成员最终需要在不同的团队工作,他们可能会遭受一点文化冲击,并学习一种新的工作方式。

单一回购与多重回购:主要区别

这两种方法最终处理相同的目标:管理代码库。因此,他们都必须解决相同的挑战,包括发布管理、促进团队成员之间的合作、处理问题、运行测试等等。

他们的主要区别在于团队成员做出决策的时机:要么在前期进行单一回购,要么在后期进行多重回购。

让我们更详细地分析这个想法。

因为在 multi-repo 中所有的库都是独立版本化的,所以一个团队发布一个带有重大变更的库时,可以通过为最新的版本分配一个新的主要版本号来安全地完成。其他组可以让他们的依赖库坚持旧版本,一旦他们的代码被修改,就切换到新版本。

这种方法将何时调整所有其他库的决定留给了每个负责团队,他们可以随时这样做。如果他们做得太晚,新的库版本发布了,那么缩小库之间的差距将变得越来越困难。

因此,当一个团队可以快速迭代他们的代码时,其他团队可能无法跟上,最终产生分歧的库。

另一方面,在 monorepo 环境中,我们不能发布一个库的新版本来破坏其他一些库,因为它们的测试会失败。在这种情况下,第一个团队必须与第二个团队沟通,以合并这些更改。

厌倦了低于 1 级的 WordPress 托管支持而没有答案?试试我们世界一流的支持团队!查看我们的计划

这种方法迫使团队在单个库必须发生变化时,一起调整所有的库。所有团队都被迫相互交流,共同达成解决方案。

结果,第一个团队将不能像他们希望的那样快速迭代,但是跨不同库的代码将不会在任何时候开始分离。

总之,多回购方法可以帮助在团队中创建一种“快速行动和打破常规”的文化,灵活的独立团队可以按照他们的速度生产产品。相反,monorepo 方法支持一种意识和关怀的文化,在这种文化中,团队不应该独自处理问题。

混合多单方法

如果我们不能决定是使用多回购还是单回购方法,还有一种中间方法:使用多个存储库并使用一些工具来保持它们同步,使其类似于单回购,但更具灵活性。

Meta 就是这样一个工具。它在子目录下组织了多个存储库,并提供了一个命令行界面,可以同时对所有存储库执行相同的命令。

元存储库包含关于哪些存储库构成项目的信息。通过 meta 克隆这个存储库将会递归地克隆所有需要的存储库,使得新的团队成员更容易立即开始他们的项目工作。

要克隆一个元存储库及其所有已定义的多个存储库,我们必须执行以下操作:

meta git clone [meta repo url] 

Meta 将为每个存储库执行一个git clone,并将其放在一个子文件夹中:

Cloning a meta project

Cloning a meta-project. (Image source: github.com/mateodelnorte/meta)

从那时起,执行meta exec命令将在每个子文件夹上执行该命令。例如,在每个存储库上执行git checkout master是这样完成的:

meta exec "git checkout master" 

混合单聚方法

另一种方法是通过 monorepo 管理代码进行开发,但是将每个库的代码复制到其独立的存储库中进行部署。

这种策略在 PHP 生态系统中很普遍,因为打包师(主要的作曲者库)需要一个公共库 URL 来发布一个包,并且不可能指出这个包位于这个库的子目录中。

考虑到 Packagist 的限制, PHP 项目仍然可以使用 monorepo 进行开发,但是它们必须使用 multi-repo 方法进行部署。

为了实现这种转换,我们可以git subtree split 执行一个脚本,或者使用执行相同逻辑的可用工具之一:

谁在使用单一回购和多重回购

几家大型科技公司倾向于单一回购方式,而其他公司则决定使用多重回购方式。

谷歌、脸书推特优步都公开支持单一回购方式。微软运行着地球上最大的 Git mono repo来托管 Windows 操作系统的源代码。

另一方面,网飞亚马逊和 Lyft 都是使用多重回购方法的著名公司。

在混合的 poly-as-mono 方面, Android 更新多个存储库,这些存储库像 monorepo 一样被管理。

在混合单作为多方面, Symfony 在一个单回购中保存其所有组件的代码。他们将其拆分成独立的库进行部署(比如 symfony/dependency-injectionsymfony/event-dispatcher )。)

单回购和多回购的例子

GitHub 上的 WordPress 账户提供了单边回购和多边回购的例子。

WordPress 块编辑器古腾堡,由几十个 JavaScript 包组成。这些包都托管在 WordPress/gutenberg monorepo 上,并通过 Lerna 进行管理,以帮助在 npm 存储库中发布它们。

Openverse ,公开授权媒体的搜索引擎,将其主要部分托管在独立的存储库中:目录API

单一回购 vs 多重回购:如何选择?

与许多开发问题一样,对于应该使用哪种方法,没有预先定义的答案。不同的公司和项目将受益于基于其独特条件的一种策略或另一种策略,例如:

  • 代码库有多大?它包含千兆字节的数据吗?
  • 有多少人会从事代码库的工作?是 10 左右,100 左右,还是 1000 左右?
  • 会有多少个包裹?是 10 左右,100 左右,还是 1000 左右?
  • 在给定的时间里,团队需要处理多少个包?
  • 包之间的耦合有多紧密?
  • 是否涉及不同的编程语言?它们需要安装特定的软件或特殊的硬件来运行吗?
  • 需要多少部署工具,设置这些工具有多复杂?
  • 公司的文化是什么?是否鼓励团队合作?
  • 团队知道如何使用哪些工具和技术?

你应该为你的代码库采用哪种方法?🤔在此了解更多信息👇

摘要

托管和管理代码有两种主要策略:单回购和多回购。monorepo 方法需要将不同库或项目的代码——甚至是来自一个公司的所有代码——存储在一个存储库中。而 multi-repo 系统将代码划分为单元,比如库或服务,并将它们的代码托管在独立的存储库中。

使用哪种方法取决于多种条件。这两种策略都有一些优点和缺点,我们刚刚在本文中详细介绍了它们。

关于单回购或多回购,你还有什么问题吗?请在评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

2022 年,6 款最安全的浏览器将确保您的安全并保护您的隐私

原文:https://kinsta.com/blog/most-secure-browser/

每个人都有一个日常使用的最喜欢的浏览器。虽然几乎所有的浏览器都提供相似的功能,但有必要考虑到一些浏览器比其他浏览器提供更好的安全性和隐私性。因此,为您的日常使用选择最安全的浏览器将在您浏览网页时保护您。

一个安全的浏览器也将帮助你保持你的数据安全,并确保其他人不能窥探你的活动。不幸的是,尽管许多流行的浏览器提供了类似的安全和隐私功能,但并不是所有的浏览器都易于使用。

在本文中,我们将帮助您找出最安全的浏览器来满足您的需求。我们将讨论六种最流行的浏览器,从 Chrome 到 Tor。

我们开始吧!

查看我们的安全浏览器视频指南:

什么使浏览器安全?

重要的是要明白大多数浏览器并不提供开箱即用的最安全或最私密的体验。作为用户,由您决定如何配置浏览器提供给您的隐私和安全选项。

默认情况下,大多数浏览器会跟踪你访问的网站,存储 cookies,甚至要求你保存密码。网站也可能获得大量识别信息,包括您的位置、显示弹出窗口的能力、运行脚本等等。

Configuring Chrome's privacy settings.

Configuring Chrome’s privacy settings.

安全浏览器为您提供了大量选项来保护您的信息并确保您的匿名性。然而,在许多情况下,更私密的网络浏览体验意味着更少的便利,我们将在下一节讨论这一点。

每个人都有自己喜欢的浏览器...但是这种浏览器并不总是最安全的🔒查看此列表,找到您的新首选⬇️ 点击推文

浏览器安全的基础

当涉及到数据隐私和整体安全浏览时,浏览器安全性就是应用最佳实践。根据我们的经验,提供以下功能的浏览器可确保浏览网页时的安全体验:

  • 就他们认为“不安全”的网站和下载向您发出警告
  • 让您可以控制要授予网站的权限
  • 使您能够禁用 cookie(如果您愿意)
  • 大多数网站默认禁用弹出窗口
  • 大多数网站默认禁用重定向
  • 使您能够全局禁用脚本或为特定站点禁用脚本
  • 让您控制自己的浏览历史和缓存
  • 经常更新你的浏览器

一些浏览器自带了更强大的隐私和安全功能。但是,我们始终建议您在设置新浏览器时手动配置设置。不管你用的是什么软件,这都适用。

总的来说,在 2022 年浏览网页是一种更安全的体验。许多功能可以保护您免受“危险”网站的攻击,这些网站可能会试图利用您的数据或强迫您下载不安全的文件。根据一点常识,如果您使用现代浏览器,您的数据应该是安全的。

2022 年最安全的浏览器(6 个选项)

让我们仔细看看你可以使用的六种最流行的安全浏览器。

你应该注意到这个列表不是基于安全和隐私特性来排名的。把它们全部看完之后,你就可以决定哪一个最符合你的需求了。

1.铬

Google Chrome's homepage.

谷歌 Chrome 的主页。

就市场份额而言,Chrome 是浏览器中无可争议的领导者。它还提供了许多功能来帮助保护您的数据,并增加浏览时的匿名性。

使用 Chrome,您可以:

  • 要求网站不要跟踪你的浏览
  • 阻止弹出窗口和脚本
  • 部分或全局阻止 cookies
  • 如果您正在访问“危险”网站或下载不安全的文件,请启用警告
  • 如果您存储的密码暴露,会收到通知
  • 控制网站可以访问的权限
  • 阻止特定网站

Chrome 还可以让你进入匿名导航模式,这样你就可以浏览网页,而不用保存每次会话的历史记录或 cookies。该浏览器也经常更新,其部分代码是开源的。

尽管根据你的设置,Chrome 可能非常安全,但就隐私而言,它并不是最好的浏览器。你必须登录你的谷歌账户才能使用它,该公司会跟踪你的大量个人信息,即使它不会与其他网站共享这些数据。

注意:谷歌目前正在进行一场诉讼,被指控跟踪其用户,即使他们使用匿名模式。

2.旅行队

Safari's homepage.

Safari 的主页。

如果你使用的是苹果设备,你可能会依赖 Safari 来完成大部分浏览。就市场份额而言,Safari 仅次于 Chrome,其份额还在继续增长。

就安全性而言,Safari 提供了许多功能来保护您的数据,包括:

  • 防止危险场所装载
  • 智能跟踪预防(ITP)功能,限制广告商跟踪您的浏览
  • 阻止所有 cookies
  • 默认情况下阻止网站利用浏览器缓存
  • 块弹出窗口提供选项
  • 控制网站权限
  • 提供隐私报告,告诉你在网上遇到了哪些追踪者

同样值得注意的是,苹果公司在保护用户隐私方面取得了重大进展。例如,在 2021 年,他们推出了一个更新,使你能够阻止应用程序跟踪你,如果你正在使用他们的设备,这是一个极好的消息。

2020 年,谷歌研究人员披露了 Safari 的多个安全漏洞。其中一人声称 ITP 的功能泄露了用户数据,但苹果公司声称他们已经解决了这个问题。然而,由于 Safari 不是开源的,很难知道你的数据发生了什么。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

需要注意的是,尽管 Safari 保护你的隐私免受第三方侵犯,但该浏览器是封闭源代码的,会与苹果共享你的信息。这是使用与应用和平台生态系统紧密相连的浏览器的常见问题(就像 Chrome 一样)。

3.火狐浏览器

Firefox's homepage.

火狐的主页。

Mozilla Firefox 是全球最受欢迎的浏览器之一。然而,在过去十年中,与竞争对手 Chrome 和 Safari 相比,它的受欢迎程度有所下降。回到 2010 年,火狐占据了全球浏览器市场份额的 31%。十一年后,下降到 11.4%

Firefox 受欢迎程度的下降促使浏览器重新发明自己。尽管如此,Firefox 仍然是您可以使用的最安全的互联网浏览器之一,包括以下功能:

  • 提供跨网络的跟踪保护(具有不同的安全级别)
  • 提供关于试图跟踪您的网站的报告(分为不同类别)
  • 让您能够选择加入数据泄露警报
  • 让你选择退出火狐数据收集
  • 提供对网站权限的控制
  • 默认情况下阻止弹出窗口
  • 阻止危险的下载
  • 强制所有连接通过 HTTPS 加载

同样值得注意的是,Firefox 是一个开源项目,这意味着任何人(拥有适当的技能)都可以分析它的代码库,并确保浏览器不会收集它不应该收集的数据。Firefox 也会定期更新。

Firefox 提供了良好的安全选项和隐私实践的完美结合。此外,该公司非常重视隐私。因此,它使 Firefox 成为浏览器的主要卖点之一,有助于它与 Chrome、Safari 和 Edge 等浏览器竞争。
T3】

4.边缘

Microsoft Edge's homepage.

微软 Edge 的主页。

微软 Edge 是 ie 浏览器的精神继承者。但是,不像它的前身,它不一定是一个你可以毫不犹豫地打折的浏览器。2020 年 1 月,Edge 改用 Chromium ,这意味着它是部分开源的。Edge 也获得了许多安全更新,它在发布时间表的速度上可以与 Chrome 匹敌。

就市场份额而言,Edge 略微领先于 Firefox,但落后于 Chrome 和 Safari。在功能方面,Edge 提供了一组类似的安全相关选项,包括:

  • 多种级别的跟踪预防选项
  • 报告它在网络上阻止的跟踪者
  • 选项来配置在浏览器的私人模式下使用什么级别的跟踪预防
  • 阻止网站查看您是否保存了付款偏好设置
  • 自动防御恶意网站和文件下载
  • 让您选择退出微软的跟踪

与 Chrome 和 Safari 类似,Edge 也犯有收集用户隐私数据的罪行。一些研究指出 Edge 比其他浏览器更不注重隐私,因为它与第三方共享硬件标识符。

尽管 Edge 在用户体验上比微软之前的浏览器产品有了巨大的飞跃,但它并不是保护用户隐私的最佳选择。然而,该浏览器在功能和获得市场份额方面正在取得重大进展,这意味着它值得关注。

需要一个给你带来竞争优势的托管解决方案吗?Kinsta 为您提供了令人难以置信的速度、一流的安全性和自动伸缩功能。查看我们的计划

5.勇敢的

Brave's homepage.

勇者主页。

勇敢者是浏览器世界的新人。它于 2019 年推出,与更受欢迎的选项相比,它仍然几乎没有市场份额。如果你看看 2022 年浏览器市场份额的统计数据,Brave 以 0.05%的使用率垫底:

The market share for top browsers.

市场份额为顶级浏览器。

尽管市场份额很小,但 Brave 是最近几年推出的最令人兴奋的浏览器。它提供了许多其他浏览器没有的令人兴奋的功能,包括它紧密相连的广告平台和加密货币。

在安全性方面,Brave 比其他浏览器要激进得多。以下是它包括的一些功能:

  • 默认情况下阻止第三方广告
  • 默认情况下阻止跟踪
  • 内置的密码管理器
  • 阻止 cookies 和脚本的能力
  • 类似于 Tor 浏览器的私人浏览(我们将在下面讨论)
  • 强迫所有联系通过 HTTPS

需要注意的是,Brave 是基于铬的。这意味着,尽管浏览器有一系列隐私设置,但与谷歌服务器共享的数据仍有一些问题。

此外,即使 Brave 默认禁用广告,它仍然显示其广告,这意味着你正在被跟踪。你可以禁用 Brave 的广告和奖励,但整个程序与 Brave 声明的隐私标准相冲突。

6.突岩

The Tor Project's homepage.

Tor 项目的主页。

不能不谈 Tor 项目(或简称 Tor)就谈私有浏览器。在引擎盖下,它是火狐浏览器的分支,专门设计用于 Tor 网络。

所有这些使得 Tor 成为目前为止你可以使用的最安全的浏览器。它也不遗余力地保护你的隐私。但是,不幸的是,这也意味着 Tor 不是最用户友好的浏览器(它的设计也不是如此)。

为了让您了解 Tor 在多大程度上保护了您的隐私,让我们回顾一下它的一些主要特性:

  • 使得通过在志愿者中继服务器之间跳跃请求来追踪你变得非常困难
  • 默认情况下禁用跟踪
  • 在所有网站上默认禁用脚本
  • 不跟踪你的浏览历史
  • 在所有网站上强制使用 HTTPS
  • 默认情况下,每次会话后删除所有 cookies

这些特性也意味着 Tor 不是日常使用的最佳选择。例如,一些网站阻止 Tor 退出中继,这意味着您将无法登录您的帐户。此外,由于浏览器默认阻止脚本,它不会正确地呈现许多网站。

Tor 也可能相当慢,即使你有一个快速的互联网连接。这是通过多个中继路由连接的副作用。这个过程增加了迷惑性,但是它减慢了导航速度。

最后,如果你想要最安全和最私密的浏览器,我们建议你使用 Tor。难怪大多数举报程序,如新闻自由基金会的 SecureDrop ,也推荐使用 Tor。

最安全的网络浏览器是什么?

在绝对安全方面,你是打不过 Tor 的。它提供了迄今为止最私密的网络浏览体验,并且不遗余力地保护你的数据。然而,Tor 并不是为日常使用而设计的,浏览器也没有提供特别友好的用户体验。

Firefox 和 Brave 都在可靠的安全特性、隐私保护和用户友好性之间提供了更好的平衡。如果你注重隐私,这两种浏览器都是不错的选择。然而,为了增加安全性,我们建议您研究两种浏览器的隐私增强扩展。

您可能使用的一些常见扩展类型包括:

  • 一个密码管理器: Brave 提供了这个现成的,但是使用第三方选项会更安全。
  • 脚本拦截器:【Firefox 和 Brave 都提供了脚本拦截功能。但是,某些扩展允许您在每个页面中阻止特定的脚本,而不是逐个站点地阻止。
  • 广告拦截器: 禁用广告会带来更好的网络浏览体验。Brave 默认禁用广告,但它也试图让你选择进入它的广告网络。

Firefox 有一个丰富的插件库,而 Brave 接受了 Chrome 扩展,因为它是基于 Chrome 的。只要您保持所选的扩展和浏览器处于最新状态,并检查您的隐私设置,您在浏览网页时应该是安全的。此外,这两种浏览器在所有主流操作系统上都可以使用。

Stay protected while browsing the web with help from these ultra-secure browsers 👩‍💻Click to Tweet

摘要

2022 年选择最安全的浏览器相对简单。总的来说,如果你使用的浏览器依赖于 Chrome、Edge 或 Safari 等生态系统,你可以肯定你的数据不会是 100%隐私的。这并不是说这三个浏览器都不好,但是它们没有把用户隐私放在第一位。

如果你关心安全和隐私,你最好的选择是 Tor、Firefox 和 Brave。然而,Tor 对于日常使用来说并不是特别用户友好。那就只剩下勇敢或者火狐了。您的选择将取决于您是想使用基于 Chromium 的浏览器还是其他浏览器。无论哪种情况,都不会错。

关于应该使用什么浏览器,你有什么问题吗?那么,下面评论区来说说他们吧!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何在一个收件箱中管理多个 Gmail 帐户和地址

原文:https://kinsta.com/blog/multiple-gmail-accounts/

您是否在不同的项目中使用多个 Gmail 帐户,但又不想错过收到的任何邮件?

使用 Gmail,您可以通过其固有功能轻松连接多个帐户和电子邮件地址。没有附加组件或付费插件是必要的。

如果你有化名(比如一个已发表的作者),或者你想要一个助手处理紧急邮件,而专注于重要的工作,这是一个完美的解决方案。

仅 Gmail 一项就占了互联网上发送的所有电子邮件的 26 %( T1 ),所以很有可能你的合作伙伴已经有了一个账户。另外,对于公司来说,Google Workspace 有一个更简单的解决方案。

在本文中,我们将向您展示如何从一个收件箱管理多个 Gmail 帐户。

想从一个收件箱管理多个 Gmail 帐户和地址?💪了解更多关于这款省时工具的信息,请点击⚡️ 点击推文

更喜欢看视频

如何在一个收件箱中拥有多个 Gmail 帐户?

如果您想知道如何在一个收件箱中拥有多个 Gmail 帐户,这很容易,您可以使用 Gmail 的内置功能,通过几个步骤进行设置。

只是跟着走。

1.在 Gmail 设置中向您的第二个帐户发送请求

首先导航到设置中的帐户菜单(您需要转到所有设置部分来完成此操作)。

注意:请确保在遵循任何其他说明之前,从您的主要 Gmail 帐户开始。

Gmail inbox

Gmail inbox

然后切换到账户,导入选项卡。

Gmail 'Accounts and Import' settings

Gmail ‘Accounts and Import’ settings

填写您的另一个帐户的名称和电子邮件地址。

Gmail 'Add another email address you own' setting

Gmail ‘Add another email address you own’ setting

在进入下一步之前,请确认这些信息。接下来,发送验证。

Verify your other email address

Verify your other email address

现在你需要导航到你的另一个谷歌账户,并确认你从主账户发出的请求。

2.接受来自您其他帐户的请求

要接受请求,请首先切换到您的第二个 Gmail 帐户。点按右上角的您的脸(或您姓名的第一个字母)以打开菜单。

Switch between different Google accounts

Switch between different Google accounts

在您的收件箱中找到确认电子邮件。它应该在最上面,除非你改变了你对邮件的分类方式。

Go to your other Gmail account's inbox

Go to your other Gmail account’s inbox

打开邮件,点击mail.google.com开头的确认链接。一如既往,警惕任何钓鱼链接

Click the verification email link

Click the verification email link

最后,点击按钮确认请求。

Confirm additional account

Confirm additional account

就是这样。您现在应该会看到“确认成功!”消息。

Gmail account connection success

Gmail account connection success

你们都是有联系的。

注意:变化不仅仅影响浏览器版本。它会自动在您登录的所有设备上运行,包括 Android 或 iOS 上的 Gmail 应用程序。

现在,剩下的就是测试它是否有效了。

3.测试它的工作情况

首先,单击撰写按钮创建一个新的电子邮件。点击“发件人”区域,看看除了主邮件之外,您是否还可以选择其他邮件。

Gmail multiple 'from' addresses

Gmail multiple ‘from’ addresses

如果你能看到一个包含多个电子邮件地址的下拉菜单,那就成功了。这是第一部分。现在你知道你可以发送电子邮件作为你的别名。

但是接收他们呢?为了测试这一点,您需要向新地址发送一封电子邮件,并检查它是否出现。

Sending a test email

Sending a test email

如果你能看到,那就证明了毫无疑问的联系。

Verify email deliverability

Verify email deliverability

成功!电子邮件会显示出来,即使收件人是不同的帐户。

您已经正式确认您在一个收件箱中拥有多个 Gmail 帐户。而且无需多次登录或任何额外的努力。

4.冲洗并重复

冲洗并重复上述过程,尽可能多的帐户。您不再需要那一长串密码。

一个谷歌账户就能统治所有人!

非 Gmail 电子邮件地址的选项:POP3/SMTP

你想从一个 Gmail 收件箱中获得更多功能吗?您也可以使用 POP3 和 SMTP 将其与您的商务电子邮件连接。

导航回 Gmail 中的帐户设置(主要帐户)。然后单击“检查来自其他帐户的邮件”部分中的添加电子邮件,并键入您的电子邮件地址以继续。

Adding a third-party address

Adding a third-party address

如果这是你的托管服务提供商提供的商务电子邮件地址,你需要用 POP3 连接它。

Connecting email address via POP3

Connecting email address via POP3

点击下一步继续到您需要填写 POP3 信息的阶段。

POP3 settings

POP3 settings

你可以搜索“我的主机 POP3 服务器”,马上就能找到相关信息的页面。您也可以登录到您的托管仪表板并在那里找到信息。

在 cPanel 中,信息是这样的。

cPanel POP3 information

cPanel POP3 information

确保您勾选了“始终使用安全连接”框,并选择了适当的设置。

如果您正确输入了所有信息,您应该会看到此确认消息。

Gmail POP3 confirmation

Gmail POP3 confirmation

如果你想发送电子邮件,而不只是接收,你需要重复这些步骤,但这一次是 SMTP 和外发电子邮件。如果是,保持选中“是”,点击下一个按钮

Gmail SMTP server settings

Gmail SMTP Server settings

填写相关字段,选择合适的端口,点击添加账号

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Successfully adding an SMTP server

Successfully adding an SMTP server

要完成它,请访问您的业务电子邮件收件箱,并单击确认电子邮件中的链接。

如何组织来自多个 Gmail 帐户的电子邮件

既然你已经收到了来自多个谷歌账户的邮件,甚至可能是你的工作邮件,收件箱可能会有很多要处理。

因此,现在我们将向您展示如何将它们组织到不同的文件夹中,以使您的电子邮件收件箱更容易浏览。

切换到多收件箱视图

通过打开快速设置并单击“多个收件箱”下的自定义链接,切换到多收件箱视图

Gmail's quick settings

Gmail’s quick settings

然后,您需要使用“收件人:【受保护的电子邮件】”过滤器来挑选电子邮件地址。这将按照收件人对邮件进行分类,你可以给每个新的部分取一个名字(可选)。

Gmail's multiple inbox filters

Gmail’s multiple inbox filters

向下滚动以保存对新设置的更改。

'Save Changes' in your Gmail settings

‘Save Changes’ in your Gmail settings

您应该会立即看到新的布局。

Gmail's multiple inbox layout

Gmail’s multiple inbox layout

如果成功,您为电子邮件地址创建的部分将显示您的测试电子邮件。一旦您收到更多电子邮件,它就会自动填充。

如果您不是(由于打字错误或其他错误),您将不会在该部分看到任何电子邮件。

你也可以使用这些 22 个 Gmail 插件和扩展来使它变得更容易。

好处:通过两个简单的步骤管理多个电子邮件的签名

在 Gmail 中,添加电子邮件签名轻而易举。一个收件箱里有多个 Gmail 账户并不能改变这一点。您可以轻松地将每个签名分配到一个唯一的电子邮件地址。

你可以这样做:

转到常规设置页面,向下滚动到签名部分。

如果没有,请创建一个新名称,并选择一个易于识别的名称。例如,如果您只将一个地址用于业务目的,请将其设置为“业务签名”

Kinsta 和 Google Workspace 有什么共同点?让事情在幕后平稳运行的能力。免费试用 kin sta

Create a new signature in Gmail

Create a new signature in Gmail

然后,您可以为每个签名分配一个默认的电子邮件地址。

Set the email signature's default email address

Set the email signature’s default email address

对所有的电子邮件地址重复这个过程。就这么简单。

注意:确保您为默认账户设置了主要签名。一个不准确的电子邮件签名并不能准确地传达专业精神。
T3】

为什么你需要多个电子邮件帐户

集成多个帐户有许多不同的用例,这个解决方案并不适合所有的用例。

假设你想为你的邮件设置一个私人助理,没问题。这种方法可以让他们扫描和回复邮件,而不用直接把你的个人邮箱账户交给他们。

但是,如果你想使用多个电子邮件用于商业目的,有一个更好的方法。

有了 Google Workspace(以前的 G Suite) ,你可以轻松地为你的商业账户中的每个用户或电子邮件地址创建别名。

你的电子邮件地址都不需要打上“gmail.com”的烙印,相反,你可以使用你的域名。

这会给潜在顾客留下更好的第一印象。

此外,这不像你只是为商务邮件功能付费。您还可以访问云存储、文件管理、电子表格等。你的公司可能已经在使用 Google Workspace 了。

对于企业:使用谷歌工作空间别名

有了 Google Workplace,这个过程甚至更快。你可以很容易地为你的员工设置,而不是指导他们自己如何做。

让我们直接开始吧。

如何设置 Google Workspace(以前的 G Suite)别名

设置 Google Workspace 别名的最快方法是在创建新用户时分配别名。

注册一个新的 Google Workspace 账户,按照教程进行操作。

Adding new users in Google Workspace

Adding new users in Google Workspace

Google Workspace 让你只需输入电子邮件别名就可以添加。

Add a new user alias in Google Workspace

Add a new user alias in Google Workspace

如果您有现有的公司电子邮件地址,这是转移它们的最快方法。有关将他们转移到 Google Workplace 的更多信息,请参见我们指南中关于设置专业电子邮件地址的部分。

如果你已经在使用 Google Workspace,请遵循以下步骤:

导航到用户部分。

The Google Workspace dashboard

The Google Workspace dashboard

然后单击要为其添加备用电子邮件地址或别名的用户。

The Users panel in Google Workspace

The Users panel in Google Workspace

点击用户信息框将其展开。

The Profile section in Google Workspace

The Profile section in Google Workspace

接下来,展开备选电子邮件地址框。

'User information' screen in Google Workspace

‘User information’ screen in Google Workspace

最后,添加尽可能多的电子邮件别名。

Setting email aliases in Google Workspace

Setting email aliases in Google Workspace

设置完成后,您可以在 Gmail 收件箱中准确使用这些别名,如前一部分所述。

用谷歌工作空间(G 套件)我能收到多少封邮件?

每个 Google Workspace(以前的 G Suite)用户最多可以有 30 个别名。这使得将管理工作的所有电子邮件地址发送给特定的人变得很容易。

即使你的创业公司只有一个助理,你仍然可以传达一个大组织的形象。只需设置不同的电子邮件来匹配不同的部门和要求。

例如,您可以自定义电子邮件,如:

充分利用这一点。

今天就提升你的邮件管理技能。📩通过一个收件箱管理多个 Gmail 地址💥

摘要

无论您是出于商业目的,还是为了个人项目需要额外的电子邮件地址,Gmail 都能让您轻松管理多个账户。

你所需要做的就是发送一封电子邮件确认并接受它。你能在几分钟内完成它。有了 Google Workplace,甚至比这更容易。

难的是要控制来自所有这些来源的所有电子邮件。为了帮助你有效地管理新的多账户收件箱,请确保你更好地使用 Gmail 搜索运营商 …他们可以为你节省很多时间!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何完成 MySQL 性能调优(4 个关键技巧)

原文:https://kinsta.com/blog/mysql-performance-tune/

MySQL 是 web 服务器上最流行的数据库管理系统之一。如果你运行一个 WordPress 网站,它很有可能使用 MySQL 作为数据库。这使得您有必要了解如何完成 MySQL 性能调优。

通过“调整”MySQL,我们的意思是优化您的数据库,以便软件可以更快地响应查询。最终,这会导致更短的加载时间和一个整体更快的网站。此外,如果您正确维护您的数据库,它应该继续提供高性能,即使它的大小在增长。

在本文中,我们将简要介绍什么是 MySQL 以及它是如何工作的。然后,我们将探索如何使用四个基本技巧来执行 MySQL 性能调优。

我们开始吧!

查看我们的 MySQL 性能调优视频指南

T3】

什么是 MySQL 以及它是如何工作的

动态网站在数据库中存储信息,这是一个包含大量信息的复杂表格结构的术语。数据库使您能够存储变量并“查询”它们以获得您需要的信息。例如,当你加载一个 WordPress 网站时,内容管理系统(CMS) 会连接到它的数据库以获取它需要的信息。

如果出于某种原因,WordPress 无法连接到数据库,你可能会遇到错误,如“ MySQL 服务器已经离开”或“ MySQL 1064 ”。MySQL 是开源软件,它使你能够创建和管理数据库。它远不是唯一的在线数据库管理系统。然而,就市场份额而言,它确实占主导地位,大约有 15%的网站在使用它。

MySQL market share numbers.

MySQL 的市场份额。

数据库管理有不同的方法,MySQL 使用“关系”和“客户机-服务器”模型。这意味着:

  • 关系数据库— 这种类型的数据库将信息分解成表格。由于关系模型,您能够使用“键”或唯一标识符连接多个表中的数据。
  • 客户端-服务器模式 —在这种模式下,您的数据库驻留在服务器上,而您的网站就是客户端。浏览器向你的网站发出请求,反过来查询数据库。

由于 MySQL 是开源软件,所以有很多分叉可用。例如,在 Kinsta 这里,我们使用的是 MySQL 的一个分支 MariaDB 。我们选择使用 MariaDB,因为它提供了优于其母软件的性能。

如果你是 Kinsta 用户,你不必担心执行 MySQL 性能调优,因为我们会为你处理

然而,学习如何让 MySQL 自己运行得更快仍然是一项有价值的技能,主要是如果你的 web 主机没有为你进行优化的话。让我们来谈谈这种优化需要什么。

MySQL 是最流行的 web 服务器数据库管理系统之一📊...这意味着知道如何完成一个演奏曲调是很重要的💪 点击推文

完成 MySQL 性能调优的 4 个技巧

如果你使用 WordPress 并想学习如何让 MySQL 运行得更快,你最好的选择不是专注于特定的配置。相反,你会想要微调你的数据库来匹配你使用 WordPress 的方式。我们来谈谈这意味着什么。

1.让你的 MySQL 版本保持最新

大多数网络主机会自动为你更新 MySQL 到最新版本。但是,如果您完全控制您的服务器,您将需要手动更新您的数据库管理系统。既然你在使用 WordPress,你可能理解保持软件更新的好处。MySQL 性能调优有很多优势,比如:

更快的数据库管理软件直接转化为更短的加载时间。然而,可能你不知道你使用的是什么版本的 MySQL。如果您对服务器拥有完全访问权限,则可以启动命令行并运行以下命令:

mysql -v

*-v*参数将返回关于服务器使用的 MySQL 版本的信息。你可以将这些信息与 MySQL 官方网站上的最新版本进行比较,看看有没有更新的版本。如果你不习惯使用命令行,你可以通过 WordPress 仪表盘找到你正在使用的 MySQL 版本。

首先,访问控制面板并转到工具 > 站点健康。接下来,打开信息选项卡,点击数据库:

Checking the MySQL version in WordPress through the Tools and Database section.

在 WordPress 中查看 MySQL 版本。

根据您的 MySQL 版本,软件可能会自动更新。如果没有,可以使用命令行将 MySQL 更新到最新版本。如果你用的是 Kinsta,你就不用担心更新数据库管理软件了。相反,我们会自动将客户端更新到 MariaDB 的最新稳定版本。
T3】

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

2.检查数据库中的孤立表

通常,你从网站上卸载的插件和网站主题会留下数据。这可能是因为糟糕的编码标准,或者是因为插件/主题决定存储这些数据,以防你想重新安装它们。这种方法背后的想法是,将设置和配置存储在数据库中可以节省您的时间和精力。

然而,所有这些未使用的表会导致数据库膨胀,这反过来会降低查询速度,具体取决于服务器的能力。理想情况下,您将在卸载插件后进行清理,这样可以防止孤立的表和数据累积。有两种方法可以完成这项任务:手动或使用插件。

重要的

在你对你的数据库做任何改变之前,我们建议你完全备份你的 WordPress 站点。即使你的主机每天都做备份(就像我们一样),这也是适用的,所以如果需要的话,你会有一个站点的副本可以恢复。

一旦有了备份,就可以通过 phpMyAdmin 访问数据库。如果你是 Kinsta 用户,登录你的 MyKinsta 仪表盘并进入网站。选择你想要工作的站点,并跳转到它的信息标签。在那里,您将找到一个链接,它将通过 phpMyAdmin 直接访问您的数据库:

Accessing phpMyAdmin via MyKinsta under the "Database access" section, with an "Open phpMyAdmin" button.

通过 MyKinsta 访问 phpMyAdmin。

一旦进入 phpMyAdmin,就可以使用该软件的搜索特性来查找与特定插件相关的孤立表。这种方法的问题是,除非你试图清理的插件有全面的文档,否则很难知道使用什么查询。

例如, Yoast SEO 推荐在卸载插件后,使用wpseo查询来查找与插件相关的表。使用 phpMyAdmin 运行快速搜索将返回包含不同表中该术语的条目列表:

A screenshot of a database table, highlight entries relating to Yoast SEO.

在你的数据库中寻找与 Yoast SEO 相关的条目。

尽管手动方法有效,我们鼓励您使用数据库清理插件解决方案。使用其中的一些插件,您甚至可以从仪表板中找到孤立的表并删除它们,而不必通过 phpMyAdmin 进行挖掘。
T3】

需要为你的 WordPress 站点提供超快的、可靠的、完全安全的托管服务吗?Kinsta 提供所有这些以及 WordPress 专家提供的 24/7 世界级支持。查看我们的计划

3.确定 MySQL 正在自动加载哪些数据

每个 WordPress 数据库都包含了大量的表格。其中一个表叫做wp_options,它包含如下信息:

  • 插件和主题设置
  • 您的网站 URL、博客名称、描述等等

如果使用 phpMyAdmin 检查wp_options表,您会注意到一个名为autoload的列。WordPress 在autoload下检查带有yes条目的行,然后每当有人访问你的网站和访问它的任何页面时加载这些数据:

A screenshot of a database table, showing the wp_options rows.

检查自动加载数据的 wp_options。

开箱即用,WordPress 应该只自动加载关键数据。但是有些插件和主题会给wp_options添加数据,并配置为自动加载。随着时间的推移,自动加载数据会降低响应时间,就好像您设置了太多的程序在您打开计算机时自动启动一样。

如果你的 WordPress 网站感觉很慢,你可以在wp_options中看到许多插件相关的条目,我们建议你检查一下有多少数据自动加载到 WordPress 中,并且确定哪些插件你可以禁用。

4.清理修订、草稿、垃圾评论和帖子

随着你使用 WordPress,你的网站会积累大量未使用的数据。例如,WordPress 会自动为你的文章保存几个修改版本和草稿,这取决于你对它们做了多少修改。随着时间的推移,所有这些数据都会使您的数据库膨胀,所以定期清理这些条目是一个好习惯。最好的方法是使用插件,比如高级数据库清理器:

The Advanced Database Cleaner WordPress plugin logo with the text "Clean & Optimize your Database".

高级数据库清理器 WordPress 插件。

对于这个任务,你不需要使用插件的高级版本(不像处理孤立的表)。一旦你启用了这个插件,你就可以进入 WP 数据库清理器标签并查看常规清理部分。在那里,您会发现插件可以帮助您从数据库中删除的所有瞬态数据的完整列表:

A screenshot for MySQL performance tuning showing Advanced Database Cleaner plugin with a list of cleanup options for revisions, auto drafts, trashed posts, etc.

使用高级数据库清理器清理你的数据库。

您可以选择要“清理”或清空的表,然后手动运行该过程。或者,该插件使您能够为您选择的表安排清理,并配置它们定期运行。最后一个选项是你的最佳选择——这意味着你少了一项需要担心的任务。但是,我们建议您不要过于频繁地重新配置数据库清理。这样,如果需要的话,你仍然可以访问以前的草稿。

‘调’MySQL 是什么意思?👀想想更短的加载时间和更快的网站💥了解如何从这里开始👇

摘要

MySQL 性能调优的好处有很多。然而,你想要优化数据库的主要原因是提高它的性能,所以你的网站总是尽可能快地加载。因为你使用的是 WordPress,所以有很多方法可以在不改变软件配置的情况下进行 MySQL 性能调优。如果你有兴趣学习如何让 MySQL 运行得更快,这里有四个小贴士可以帮助你开始:

  1. 让您的 MySQL 版本保持最新。
  2. 检查数据库中的孤立表。
  3. 确定 MySQL 正在自动加载哪些数据。
  4. 清理修订、草稿、垃圾帖子和评论。

你有其他微调 MySQL 数据库的技巧吗?请在下面的评论中与我们的社区分享它们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何轻松检查和升级您的 MySQL 版本

原文:# t0]https://kinta . com/blog/MySQL-version/

你的数据库很可能运行在 MySQL 或完全开源的 MariaDB 上。这些流行的数据库管理软件为 90%的网站提供动力,所以你的服务器主机可能已经为你安装了它们中的任何一个。

但并不是所有的主机都会继续保持最新,所以经常要由你来检查你的 MySQL 版本并保持升级。服务器上过时的软件从来都不是好东西,还可能是有害的。

让我们来学习如何检查你的 MySQL 版本是否是最新的,如果不是,就升级它。

观看我们的视频指南来检查和升级您的 MySQL 版本

为什么要让 MySQL 保持最新?

手动服务器维护不是一件有趣的任务,尤其是如果你不太熟悉你的网络服务器的内部工作方式。只要你的服务器和数据库工作正常,忽略一个过时的软件可能会很有诱惑力。但是有相当多的理由说明这是一个坏主意。

在你的服务器上安装过时的软件从来都不是好事。即使是你的安全系统中最微小的漏洞也可能成为攻击者逃脱并接管的媒介。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

他们甚至可以扰乱你的数据库。各种重要信息都存储在那里,比如你的 WordPress 帖子和所有其他类型的敏感信息。你不希望任何不需要的人能够修改它。

除此之外,一个新的版本意味着新的特性和对已有版本的全面改进。即使这些额外的功能不会影响你,最近的 MySQL 版本也更加安全、优化和快速。

What's new in MySQL 8.0.

What’s new in MySQL 8.0.

MySQL 的每一次更新都会带来一系列的错误修复,修补那些往好了说可能会令人烦恼,往坏了说可能会给你带来严重麻烦的错误。

当涉及到你网站上的任何软件时,最好保持最新版本。

MySQL 在 90%的网站后台运行😲...但并不是所有的主机都会持续更新。在这里学习如何检查自己⬇️ 点击推文

MySQL 哪个版本最好?

如今,许多服务器仍在运行 MySQL 5.7(跳转到 8.0 之前的最新版本),即使存在更新更好的版本。这是为什么呢?还有 MySQL 5.7 和 8.0 哪个最好?

大部分人不升级,要么是不知道最新的 MySQL 版本,要么是不想花时间去更新。此外,5.7 没有被弃用,直到 2023 年才会被弃用。

Support EOL for macOS v10.14

Support EOL for macOS v10.14

但是,虽然 MySQL 5.7 仍然受支持,但转换到最新版本绝对值得您花费时间。它更快也更安全——激活它后可以立即观察到变化。对于能够利用新功能的开发者来说,好处多得无法快速列举。

有一些升级注意事项和向后不兼容你需要知道,但对于大多数网站来说,它们不会引起问题。

保持 MySQL 的最新稳定版本几乎总是最好的。即使是微小的更新也值得麻烦,尽管新的内置自动更新程序可能会为您处理这些问题。至于重大更新,除非服务器的关键部分不兼容,否则是值得的。

虽然 WordPress 一直支持 MySQL 版本,但是 8.0 可以很好地支持它。由于 5.6 不再受支持,容易出现错误和安全风险,您至少应该更新到 5.7。
T3】

如何检查 MySQL 版本

保持 MySQL 最新是至关重要的,但是你需要在升级之前知道它的版本。很有可能,你已经在使用最新的版本,根本不需要做任何事情。有几种方法可以检查;这些只是最简单的几个。

用 MyKinsta 检查 MySQL 版本

使用 MyKinsta 访问您的数据库并检查您的 MySQL 版本非常简单。有几种方法可以做到这一点,如上所述,但最简单的两种方法是使用 phpMyAdmin 或使用命令行连接。

登录 MyKinsta 后可以找到 phpMyAdmin。只需进入站点>信息,在数据库访问部分下,点击打开 phpMyAdmin 。您需要登录的凭证就在那里。

您也可以使用 SSH 通过命令行进行连接。通过 Kinsta,我们为您设置了允许 SSH 访问的一切。只需在SFTP/宋承宪部分的网站>信息中找到你的证书。然后按照下面的步骤登录并输入正确的命令。

使用命令行

获得 MySQL 版本最简单的方法是通过命令行提交一个简单的代码。它只需要几秒钟,并立即回答你的问题。获取服务器的命令行应该不会太难,除非你使用最小主机。

有多种方法可以访问服务器的命令行。例如,您的 web 主机可能会提供一种通过后端提交命令的方式,比如使用 cPanel 。或者,您可以使用内置终端或命令提示符来连接到您的服务器。像 PuTTY 这样的工具也可以帮助你登录,通常是 Windows 用户用 SSH 连接所需要的。

无论哪种方式,您都需要一些 SSH 登录凭证。你通常可以在你的虚拟主机面板中找到他们,或者你可以给他们发邮件寻求帮助。

一旦您知道如何连接到服务器的命令行,请遵循以下步骤。

第一步:在电脑上启动终端(Linux、macOS)或命令提示符/PuTTY (Windows)。在 cPanel 中,你可以在高级>终端下找到。

cPanel Terminal view

cPanel Terminal view

步骤 2: 提供您的 SSH 凭证以连接并登录到服务器。

第三步:输入以下命令:

mysql -V

如果您安装了 MySQL Shell ,您也可以使用简单的命令“MySQL”来显示您的版本信息。

无论哪种方式,版本号都应该在屏幕上输出。

用 phpMyAdmin 检查 MySQL 版本

还有另一种简单的方法来检查你的 MySQL 版本,那就是使用 phpMyAdmin 。这个软件也是无处不在的,大多数服务器上都有,所以你很有可能找到你的 MySQL 版本。

通过检查您的虚拟主机仪表板找到您的 phpMyAdmin 证书。甚至可能有一个直接链接登录那里。如果你找不到他们,给你的主人发邮件。

找到凭证后,登录 phpMyAdmin。一进入,你就会在屏幕右侧看到一个数据库服务器框。在软件版本部分,是你的 MySQL 版本。就这么简单!

Viewing MySQL version in phpMyAdmin

Viewing MySQL version in phpMyAdmin

通过 WordPress 仪表盘

找到你的 MySQL 版本的最后一个简单方法是通过你的站点的 WordPress 管理仪表板。

要做到这一点,请访问你的 WordPress 仪表盘,进入工具> 站点健康。在这里,首先进入信息标签,然后进入下面的数据库部分。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

你可以在服务器版本标签旁找到你的服务器当前的 MySQL 版本。

Finding the MySQL version in WordPress dashboard.

Finding the MySQL version in WordPress dashboard.

如何升级 MySQL 版本

如果你确定你的 MySQL 已经过时了,你应该尽快改正。有多种方法可以将 MySQL 更新到最新版本;这完全取决于你使用的工具和操作系统。

值得注意的是,如果脚本注意到您的安装已经过期,MySQL 的后续版本将尝试自动更新。您可能根本不需要做任何事情。如果您确定 MySQL 已经过时,需要手动更新,请遵循以下步骤。

就像用命令行检查 MySQL 版本一样,您需要从 web 主机获得 SSH 登录凭证来访问服务器上的终端。当然,你需要你的服务器的 IP 地址。

在更新 MySQL 之前,确保备份你的数据库。对于 Kinsta 用户来说,在 MyKinsta 中要做的事情很简单:登录并进入站点>备份。您可以在那里找到一个可下载的 zip 文件。

这个备份包含了你的数据库(一个 SQL 文件)和你的整个站点,所以如果出现问题,你会非常安全。

使用 cPanel 升级 MySQL

如果您的主机提供 cPanel,这可能是最简单的升级方式,因为您可以使用提供的接口。但是由于 cPanel 默认默认为 MySQL 5.7,你可能要做一个升级。

由于 cPanel 不允许您降级,您应该在继续之前备份您的数据库。

大多数 cPanel 安装都带有 Web 主机管理器,WHM,它给你更深层次的根访问。

第一步:通过访问“example-site.com:2087”或“example-site.com/whm”登录 WHM 你也可以询问你的虚拟主机如何访问 WHM。

第二步:导航到软件> MySQL 升级或者在搜索栏中键入“MySQL”。你也可以在 SQL 服务> MySQL/MariaDB 升级下找到它。

第三步:选择想要升级到的 MySQL 版本,点击下一步。现在,按照升级步骤,它会为您处理一切。

Web Host Manager cPanel MySQL update 

Web Host Manager cPanel MySQL update

这种方法是目前最简单的 MySQL 升级方法,但是如果你的主机不提供 cPanel 或 WHM,你可能需要手动升级。

在 Linux/Ubuntu 中升级 MySQL

有各种各样的 Linux 发行版,但是 Ubuntu 是最常见的。这些说明应该适用于任何使用 apt/apt-get 函数来安装软件的操作系统。

需要一个给你带来竞争优势的托管解决方案吗?Kinsta 为您提供了令人难以置信的速度、一流的安全性和自动伸缩功能。查看我们的计划

MySQL APT Repository

MySQL APT Repository

Linux 可以轻松地进行 SSH 连接,而不需要任何额外的软件要求。所以,你可以直接进入你的服务器。

第一步:启动终端。获取您的 SSH 凭证并使用 ssh 命令登录。

第二步:你应该已经安装了 MySQL apt 库,因为 MySQL 已经在你的服务器上了。使用以下命令更新您的软件包列表:

sudo apt-get update

第三步:现在升级 MySQL。

sudo apt-get upgrade mysql-server

如果上述方法不起作用,您也可以尝试此命令:

sudo apt-get install mysql-server

它会提示您选择一个版本;选择 5.7 或 8.0。如果你从 5.6 升级,你应该先升级到 5.7,而不是直接升级到 8.0。

在 macOS 上升级 MySQL

虽然 macOS 自带 MySQL 版本,但是你无法通过通常的方法升级它。最有可能的是,您的服务器正在使用一个单独的实例。

其中许多步骤与在 Linux 上更新 MySQL 非常相似。macOS 同样在操作系统中内置了 SSH,所以您需要做的就是运行命令。

我们假设你正在使用 Homebrew 作为包管理器,因为这是在 Mac 上安装和更新 MySQL 最简单的方法。如果你最初没有用自制软件安装 MySQL,你就不应该尝试用它来升级。

Using Homebrew to install MySQL on Mac

Using Homebrew to install MySQL on Mac

步骤 1: 启动终端程序,用 ssh 命令登录。

第二步:使用自制软件运行这些命令。

brew update
brew install mysql

该命令应该会自动安装 8.0 并升级任何现有版本。

你遇到麻烦了吗?请先尝试卸载当前版本的 MySQL。使用这些命令:

brew remove mysql
brew cleanup

然后,您可以再次尝试运行更新和安装命令。

步骤 3: 确保再次手动启动 MySQL 服务器:

mysql.server start

在 Windows 中升级 MySQL

与 Mac 和 Linux 不同,Windows 默认不能使用 SSH。相反,您需要安装一个单独的客户端,然后您可以连接到您的服务器。

第一步:下载 PuTTY 并安装在你的系统上。启动它并输入您的 SSH 凭证以连接到服务器。3306 是默认端口号。忽略任何安全警报;这些都很正常。

第二步:假设你正在连接一个 Linux 终端,你可以使用上面 Linux/Ubuntu 部分的 Linux 命令来执行升级。

您也可以使用 MySQL 安装程序将 MySQL 直接下载到系统中。这个过程完全跳过 SSH 连接。

保持你的 MySQL 版本最新对于网站安全至关重要🔒点击此处查看如何升级您的版本⬇️ 点击推文

摘要

对于任何软件来说,保持最新都是至关重要的。随着 MySQL 成为你的网站及其数据库不可或缺的一部分,它变得更加重要。不幸的是,太多的网站管理员选择让他们的 MySQL 版本落后,这不利于他们网站的速度和安全性。

幸运的是,检查你的 MySQL 版本并升级它几乎总是一个平稳的过程。虽然你肯定应该备份你的网站和数据库以备不时之需,但你不太可能遇到任何问题。

只需在您的 web 服务器终端输入一个微小的命令,您的数据库就会得到很好的优化,而且比以往任何时候都要快。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

负面 SEO(案例研究)-用 Ahrefs 清除攻击

原文:https://kinsta.com/blog/negative-seo/

负面搜索引擎优化是任何企业都不想处理的事情。这一点都不好玩,它会破坏你在搜索引擎中的网站,而且清理起来很费时间。然而,随着网络的持续增长,负面搜索引擎优化变得越来越常见。许多没有做错任何事情的网站现在受到了冲击。这甚至包括金斯塔!今天,我们将向您介绍我们如何清除对我们网站的攻击,以及如何提交否认文件。

定期检查和监控你的反向链接资料总是好的,否则,你可能会以谷歌对你的网站的手动操作而告终。然后你真的会陷入恐慌状态!当谈到负面 SEO 时,你不能总是阻止它,所以建议利用现有的伟大工具来知道何时应该采取行动。

The best way to prevent negative #SEO disasters is to always be proactive. 💪Click to Tweet

什么是负 SEO?

Kissmetrics 将负面 SEO 定义为使用黑帽和不道德的技术来破坏竞争对手在搜索引擎中的排名。然而,重要的是要理解负面的 SEO 并不总是有意的。现在有链接农场,私人博客网络,成千上万的机器人抓取网站,以及各种各样产生链接的东西。有时,不幸的是,你的网站可能会简单地和其他人混在一起。

如果我们看看过去 24 个月的谷歌趋势,我们可以看到“负面搜索引擎优化”似乎在增长。这不会很快发生,所以理解为什么会发生以及如何保护你的网站是很重要的。

Negative SEO trends

Negative SEO trends

有各种不同形式的负面搜索引擎优化。这里有几个例子:

  • 针对您的域名建立垃圾链接
  • 生成负面评论以影响 SERPs 中的评级
  • 创建虚假的社交信号或个人资料
  • 链接农场和私人博客网络(PBNs)
  • 抓取并重新分发您的内容
  • 让你的网站去索引化(例如,入侵你的 robots.txt 文件)

最糟糕的一种可能是有人侵入你的网站并向其中注入成千上万的伟哥和药物术语。以下是一位营销人员某天早上醒来时的情景。这也被称为站内负面 SEO。重要的是要认识到,消极的搜索引擎优化不只是站外。如果谷歌发现一个链接农场来自你的 IP 地址或网站,你也会受到惩罚。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

Spammy Viagra links

Spammy Viagra links

负面搜索引擎优化也比以前公开了很多。不久前,这只是互联网营销人员之间相互谈论的事情。但是现在你甚至可以在 Fiverr 这样的热门网站上搜索“负面搜索引擎优化”,一堆对你的竞争对手进行负面搜索引擎优化的广告(如下所示)就会出现。或者你可以很容易地浏览黑帽论坛,雇人开始建立针对你选择的任何人的坏链接。

Negative SEO gigs

Negative SEO gigs

不幸的是,像上面这些服务现在让你的网站很容易成为竞争对手的目标。这就是为什么你总是需要保持警惕!

如何检查反向链接

所以你可能想知道,你如何检查你的反向链接?这就是反向链接工具的用武之地。有数百种不同的工具提供不同形式的数据,但我们将分享一些我们推荐和使用的工具,包括免费和高级工具。

免费反向链接工具

老实说,没有多少好的免费反向链接工具。原因是获取、过滤和传递数据需要大量的处理能力。一些网站有数百万的反向链接。这就是为什么你可能不会对许多免费工具感到满意。然而,有一对夫妇值得一提。

1.谷歌搜索控制台

很多人并没有意识到这一点,但是谷歌实际上在谷歌搜索控制台中免费提供了反向链接数据。如果你点击“链接到你的网站”下的搜索流量,你可以访问你的链接。使用 GSC 的一个缺点是,它没有关于链接的任何附加属性,比如它是 dofollow 还是 nofollow,锚文本等等。数据不是那么容易过滤的。在大多数情况下,您必须将其导出到 Excel,这可能会变得非常耗时。但你不能和免费争论,谷歌的抓取数据相当准确。

Backlinks in Google Search Console

谷歌搜索控制台中的反向链接

2.打开链接分析器

我们推荐的另一个免费反向链接工具是 SEOprofiler 团队的 Open Link Profiler 。这允许你查看多达 200,000 个活跃的反向链接,这对很多人来说已经足够了。在网上免费的反向链接工具中,这可能给了你最多的数据。然而,这里的一个限制是,免费帐户一次只能导出 1000 个链接。

Open Link Profiler

Open Link Profiler

高级反向链接工具

如果你需要更深入地挖掘你的数据,过滤它,并导出它,你最好的选择是购买一个高级反向链接工具。我们建议至少每 3 到 6 个月进行一次反向链接审计。或者如果你像我们一样痴迷于数据,每周。网站越大,你可能需要更频繁地检查它,因为会有更多的链接不断出现。有时在这种情况下,你等待的时间越长,你就需要留出更多的时间进行审计。下面是我们推荐的几个高级反向链接工具。

1.Ahrefs

我们在 Kinsta 利用了 Ahrefs,这是一个搜索引擎优化工具,你可以用它来做关键词研究,进行竞争对手分析,监控反向链接等等。它拥有网络上最大的数据库之一,我们在很多事情上都依赖于它的数据。如果你对市场营销和 SEO 相关话题感兴趣,他们还有一个非常棒的博客。

Ahrefs

Ahrefs

2.宏伟的

就像 Ahrefs 一样, Majestic 也有一个非常大的反向链接数据库。事实上,这两种工具已经争斗多年,看谁能提供更多的数据。这两种工具都不会错。

Majestic backlink tool

Majestic backlink tool

3.开放站点浏览器

Moz 是一款面向数字营销人员和机构的一体化搜索引擎优化工具。他们有一个叫做 Open Site Explorer 的工具,可以让你访问大量的反向链接数据,类似于上面的工具。对于初学者来说,Moz 工具可能是更好的选择,因为它们以一种非常容易理解的格式呈现数据。他们还因为创造了许多营销人员所称的“领域权威”而广受欢迎谷歌仍然在幕后使用 PageRank,但不再发布或更新。因此,很多营销人员都在 Moz 上寻找域名授权来比较网站。

Moz Open Site Explorer

墨子打开站点浏览器

4.塞姆拉什

最后, SEMrush 是面向数字营销专业人士的一体化竞争数据和分析工具。它没有上述工具所拥有的强大的反向链接数据库,但他们在不断改进它。肯定是要去检查的。

SEMrush

SEMrush

我们还在 Kinsta 使用 SEMrush 来研究新的博客帖子想法,并战略性地为我们的集客营销做出数据驱动的决策。这个工具让我们可以很容易地看到诸如关键词或主题的搜索量以及该关键词的竞争力。正如你们中的一些人可能知道的,谷歌不久前改变了他们的关键词规划工具,现在相近的变体关键词显示出相同的搜索量。SEMrush 从许多不同的来源收集他们的搜索量,以及他们自己的数据库,所以这允许他们仍然为你提供准确的搜索量。

买不起包月?你可以做的一个选择是注册 30 天,导出数据,然后取消它。然后,你可以在 Excel 中自己挖掘,并根据自己的意愿处理数据。然后只需定期再次订阅以导出数据。在本帖中,我们回顾了更多的 SEO 工具和插件。

负面搜索引擎优化攻击 Kinsta.com

大多数负面的搜索引擎优化攻击通常很容易被发现。它们通常都有某种类型的模式。几周前,我们开始看到数百个垃圾链接进来。他们都在不同的。传统知识领域(如下所示),是 dofollow 链接,都指向我们博客上的同一篇文章。

Spammy links in Ahrefs

Spammy links in Ahrefs

调查一个链接的简单方法是简单地点击它。然而,只是一个公平的警告,有时你可能会遇到恶意软件这样做。然而,经过进一步调查,似乎所有这些网站都是自动 RSS 帖子,这些帖子从他们链接到我们的 WordPress.org 帖子中抓取内容(见帖子:WordPress 中的月份:2017 年 6 月)。

Backlink to Kinsta

Backlink to Kinsta on WordPress.org

所以基本上发生的事情是,因为 WordPress.org 是如此受欢迎,有数百个网站抓取它并重新分发内容。对于大型网站来说,这并不罕见。然而,问题是所有这些垃圾网站现在都有指向 Kinsta 的 dofollow 链接。因此,尽管看起来这可能不是故意的,但我们陷入了一场大规模的抓取战,这仍然是一种消极的 SEO 形式。《WordPress.org 邮报》官方网站上的其他人也会有同样的问题,比如马特·克伦威尔和亚伦·乔宾。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

有些时候,像这样的内容会消失,在这种情况下,你不需要担心。谷歌的算法通常可以确定垃圾链接农场的抓取网站。但这不是我们愿意赌的风险。这也是谷歌创造否认工具的原因之一。否认工具本质上允许你向谷歌提交一个链接列表,告诉他们应该忽略这些链接。这是谷歌在 2012 年创建的,目的就是为了对抗负面 SEO,防止人们伤害他人。

用 Ahrefs 清除负面 SEO 攻击

按照下面的步骤,如何使用 Ahrefs 来清除攻击,并向 Google 提交否认文件。注意:在这个例子中,我们使用了来自对 kinsta.com 的攻击的实际数据。当然,根据你自己链接的性质,这些步骤可能会稍有不同,但是策略是一样的。

第一步

假设你已经知道了这个模式,你要做的第一件事就是过滤你的链接。所以点击反向链接下的“新建”。然后点击“实时索引”这允许您只看到活动的链接。然后过滤垃圾链接。当然,这将根据您的 SEO 攻击的性质而有所不同。在我们的例子中,我们放入。tk,因为所有的垃圾域名都包含这个。并从下拉列表中选择“60”天。

Filter backlinks in Ahrefs

Filter backlinks in Ahrefs

第二步

根据有多少链接,你可能想展开它,以显示更多的每一页。在我们的例子中,有超过 100 个,所以我们必须这样做几次。然后选中左上角的框,选择页面上的所有链接,并点击“拒绝 URL”如果您愿意,也可以拒绝整个域,但是我们只建议在最后的情况下这样做。这样做的目的是在您的 Ahrefs 帐户中创建一个否认列表,以便您轻松访问。

Ahrefs disavow URLs

Ahrefs disavow URLs

第三步

然后,您将希望启用顶部的“隐藏否认的链接”。我们还没有提交否认文件,但我们会在下面。Ahrefs 不会为你向 Google 提交否认链接,他们只是创建一个列表。然而,这是一个付费使用高级反向链接工具的领域。通过隐藏它们,我们可以再次分析我们的反向链接档案,而不必再看到这些,因为我们知道它们被谷歌安全地忽略了。如果你正在使用一个免费的工具,你将不得不自己跟踪它,这可能是一个烂摊子。

Hide disavowed links in Ahrefs

Hide disavowed links in Ahrefs

第四步

然后,您需要导出您的否认文件链接,以提交给谷歌。它位于项目旁边的主仪表板下。只需点击“否认链接。”

Disavow links list in Ahrefs

Disavow links list in Ahrefs

第五步

点击“导出”

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

Export disavow links

Export disavow links

第六步

选中“另存为 TXT”选项,然后单击确定。否认文件要求格式为。如果您正在编辑一个已经存在的否认文件,如果您需要先在 Excel 中合并一些数据,您可能希望不选中此选项。

Save TXT disavow

Save TXT disavow

我们现在有一个 disavow_links.txt 文件,其中包含所有垃圾链接。

Spammy links

Spammy links

第七步

下一步是使用他们的否认工具提交给谷歌。只需在谷歌搜索控制台中选择你的网站,然后点击“否认链接”

Disavow links

Disavow links

如果你的网站只在新的谷歌搜索控制台中,你可以很容易地使用“URL 前缀”方法再次添加它,然后你可以用旧的否认工具访问它。他们很有可能最终将这个工具转移到新 GSC。

Google Search Console URL prefix

Google Search Console URL prefix

第八步

选择你的否认 TXT 文件,上传它,然后点击“提交”

Submit disavow file

Submit disavow file

它保留了您最近提交的否认文件的副本。这样,万一你需要更新它,你可以再次下载,然后结合新的数据上传。

Download old disavow file

Download old disavow file

就是这样!你现在已经提交了一个否认文件,我们可以放心了,谷歌会忽略这些链接。然而,谷歌也建议你仍然应该尽一切努力清理指向你网站的不自然链接。为此,我们建议检查一下 rmoov 工具。它基本上有助于自动化向网站所有者发送电子邮件要求他们删除链接的过程。这里有一个很好的教程如何使用 rmoov 清理反向链接

上面只是一个例子,而且是一个相当简单的例子。然而,负面搜索引擎优化攻击可以变得非常复杂。我们已经看到网站同时受到超过 20,000 个坏链接的攻击。在这种情况下,你肯定需要一些好的工具,甚至可能需要一个 SEO 专家来清理一切。但是同样的策略仍然适用,并且希望您现在知道一些自己做这件事的工具、技巧和步骤。

技巧 1——发现负面 SEO 的另一种方法

另一个发现负面 SEO 的简单方法是快速查看你的锚文本比例。在 Ahrefs 中,您可以通过点击“锚点”来快速完成此操作锚文本就是超链接中使用的文本。一个健康的锚文本比例很可能包含你的品牌术语的大部分,然后是你写的内容或登陆页面的其他各种关键字。如果你注意到一堆不寻常的锚文本术语,这可能是一些指向你的垃圾链接的迹象。在 Ahrefs 中,您可以点击“详细信息”来查看锚文本附带的域名和/或 URL。

Anchor text ratio

Anchor text ratio

提示 2–启用谷歌搜索控制台通知

我们强烈建议您将您的网站连接到谷歌搜索控制台,然后在“搜索控制台首选项”下启用电子邮件通知。这将确保你从谷歌那里得到任何关于你网站上垃圾链接、、断链、404 错误增加等的通知。

Google Search Console notifications

Google Search Console notifications

提示 3-复议请求

如果你的网站已经被谷歌采取了手动操作,你应该会看到它出现在谷歌搜索控制台上。然后,您可以填写复议申请表。然而,在你这样做之前,清理你的站点是很重要的。很多时候,手动操作信息不会给你一个完整的错误信息,但它通常会给你指出正确的方向。使用我们上面提到的工具之一检查你的反向链接档案是一个好的开始。

Google Search Console manual actions

Google Search Console manual actions

摘要

负面 SEO 是没有人想处理的事情,但在 2018 年,这是你最有可能在某一点上遇到的真实问题。你真的想相信谷歌会整理出所有的垃圾链接吗?安全总比后悔好。有一个好的反向链接检查工具,如 Ahrefs,可以帮助您监控您的网站,并确保只有高质量的链接进来。它还可以使取消链接的过程更快。

你遇到过负面 SEO 攻击吗?如果有,你的经历是什么?请在评论中告诉我们。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

网络延迟——比较对你的 WordPress 网站的影响

原文:https://kinsta.com/blog/network-latency/

网络上的许多文章倾向于主要关注前端优化和加快网站速度的快速方法。网络延迟等服务器优化有时会被忽视或忽略。正因为如此,我们认为深入了解网络延迟的重要性以及它在加载不同区域时对你的 WordPress 站点的影响会很有趣。

虽然 CDN 肯定有助于减少网络延迟,但您的主机服务器位置仍然非常重要,尤其是如果您在一个非常具体的地理位置为访问者提供服务。延迟很重要,我们将向您展示几个原因。

Kinsta uses Google Cloud Platform's premium tier network. Because your websites deserve the best. ⚡Click to Tweet

什么是网络延迟?

网络延迟是指通过网络传输数据所涉及的时间和/或延迟。换句话说,一个数据包从一点到另一点需要多长时间。如今,这通常以毫秒为单位,然而,根据网络的不同,也可能是秒。越接近零越好。

“延迟是信号通过地理距离和各种通信设备时产生的等待时间。”–Whatis.com

换句话说,距离越远,延迟越大,这相当于更长的延迟。当通过光缆传输数据时,你无法超越光速。例如,下面是谷歌云平台网络的地图。他们有数千英里的电缆在海底横跨整个地球。这就是为什么它是世界上最快的网络之一的原因之一。即使有了如此先进的网络,仍然会有延迟。

Latency over fiber optics cables

Latency over fiber optics cables

有几个不同的因素会导致网络延迟,包括:

  • 传输延迟:不同类型的介质,如无线或光纤连接都会引入某种类型的延迟,因为它们只能推出这么多位。例如,光纤连接的传输延迟将低于 T1 线路。你还必须考虑数据包的大小。
  • 传播延迟:这是数据包传播所需的时间。这可能包括距离、网络延迟等。
  • 排队延迟:如果超出带宽,可能会出现排队延迟,数据必须在主机或路由器上等待。这可能会受到网络拥塞的影响。

为什么网络延迟很重要

有些人可能会认为网络延迟不是很重要,但是,它可能与您选择托管站点的位置有关。对于媒体和你的资产(比如图像、JavaScript、CSS、视频),一个 CDN 可以通过从一个更近的服务器传送一个副本来修复很多额外的延迟。然而,在大多数配置中,您仍然需要查询您的托管服务器来进行初始文档加载。这就是为什么延迟很重要

该铁路线将他们的漏斗中的延迟减少了 0.3 秒,客户一年多花了 800 万英镑(约 1150 万美元)。–WPO 统计数据

对于在特定地理位置为访问者提供服务的企业来说,延迟尤为重要。举个例子,假设你在悉尼有一家电商店铺,90%的客户来自澳大利亚。将你的网站放在澳大利亚的服务器上,而不是放在欧洲或美国,你的企业肯定会从中受益。我们将在下面讨论它对你的网站有多大影响。
T3】

比较谷歌云网络延迟

距离是延迟的主要原因之一。然而,重要的是要记住,延迟不仅受距离的影响,还受跳数、中间的路由器等的影响。测量网络延迟的几种方法包括 Ping、Traceroute 和 MTR。在本例中,我们将简单地使用 ping 时间并运行一些 traceroute 测试。如果你真的想挖掘数据,你可以运行 traceroute 命令

因此,我们在位于不同地理区域的谷歌云平台上安装了一些测试机器。在 Kinsta,我们将谷歌云平台的高级层网络纳入所有托管计划。许多其他主机提供商使用谷歌云的标准层网络,这导致速度较慢。

  • perf1.kinsta.com(位于美国爱荷华州)
  • perf2.kinsta.com(位于澳洲悉尼)
  • perf3.kinsta.com(位于德国法兰克福)

了解更多:谷歌云平台网络:高级层与标准层

然后,我们利用了 KeyCDN 的免费 Ping 测试工具,它允许我们从 14 个位置同时进行测试。请记住,ping 时间越短越好,因为这直接关系到数据通过互联网传输到目的地址,然后返回给你的延迟时间(毫秒)。我们还利用了他们的追踪工具

Perf1(美国爱荷华州)

对于位于美国衣阿华州的测试服务器,ping 时间比位于美国的位置要低得多(到达拉斯的平均 ping 时间为 16 毫秒)。随着你开始向欧洲或新加坡更远的地方走,你开始体验到更高的 ping 时间平均值(到新加坡的平均 ping 时间为 244 毫秒)。

Ping times perf1

Ping times perf1 (USA)

如果我们比较 Traceroute,您可以看到一个示例:从美国爱荷华州到德国法兰克福需要 7 个额外的网络跳(相比之下,从达拉斯需要 10 跳)。这就是为什么要记住网络跳数也是网络延迟的一个重要因素。

Traceroute perf1

【跟踪路线 perf1(美国)

Perf2(澳大利亚悉尼)

对于位于澳大利亚悉尼的测试服务器,从澳大利亚和亚太地区的 ping 时间要低得多(到悉尼的平均 ping 时间为 1 ms)。当你开始进一步向欧洲或南美进发时,你会开始体验到更高的 ping 时间平均值(到圣保罗的 ping 时间平均值为 319 毫秒)。

Ping times perf2

Ping times perf2 (Australia)

如果我们比较一下 Traceroute,您可以看到一个例子:从澳大利亚悉尼到德国法兰克福需要 14 个额外的网络跳。

Traceroute perf2

Traceroute perf2 (Australia)

Perf3(德国法兰克福)

对于位于德国法兰克福的测试服务器,ping 时间比欧洲甚至美国的服务器要低得多,这可能是由于两者之间的快速主干连接(到阿姆斯特丹的平均 ping 时间为7 ms)。随着您开始向亚太地区或南美进一步深入,您会开始体验到更高的 ping 时间平均值(到新加坡的平均 ping 时间为 308 毫秒)。

Ping times perf3

Ping times perf3 (Germany)

如果我们比较一下 Traceroute,您可以看到一个例子:从德国法兰克福到巴西圣保罗需要 11 个额外的网络跳。

Traceroute perf3 (Germany)

Traceroute perf3 (Germany)

正如您在上面看到的,距离越大,ping 次数越多,T2 越多,这就构成了网络延迟。这就是为什么你应该战略性地定位你的网站来减少这两个因素。

比较不同地区的谷歌云延迟

上面我们测试了服务器所在位置的 ping 时间,与 Ping 服务器相关。但是 Google 云平台区域之间的延迟呢? Geek Flare 在 9 个不同地区进行了一次大测试。这可以让您快速了解放置在一个区域与另一个区域时由于延迟而发生的延迟。

Google Cloud Platform latency

Google Cloud Platform latency (Source Geek Flare)

请务必查看我们关于 Google Cloud 与 AWS 的文章,了解网络延迟的差异。
T3】

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

比较页面加载时间

当然,我们忽略了总的页面加载时间。事实上,这是一些最有趣的数据所在。但是,请记住,这包括其他因素,如 TTFB 。所有三个测试站点都是一样的,运行一个新安装的 WordPress,安装了2017 主题。我们也在使用 Pingdom ,所以时间是从他们的测试服务器位置开始计算的。

性能 1(美国爱荷华州)

我们在三个不同的测试地点对位于美国爱荷华州的服务器进行了速度测试,结果如下。

Speed test perf1 dallas

Speed test perf1 Dallas

Speed test perf1 Melbourne

Speed test perf1 Australia

Speed test perf1 stockholm

Speed test perf1 Stockholm

正如我们在上面看到的,从美国国内(靠近主机服务器)加载一个站点和从全球加载有很大的不同。

性能 2(澳大利亚悉尼)

我们在三个不同的测试地点对位于澳大利亚悉尼的服务器进行了速度测试,结果如下。

Speed test perf2 Dallas

Speed test perf2 Dallas

Speed test perf2 Melbourne

Speed test perf2 Melbourne

Speed test perf2 Stockholm

Speed test perf2 Stockholm

正如我们在上面看到的,从澳大利亚境内(靠近主机服务器)加载一个站点和从全球加载有很大的不同。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

性能 3(德国法兰克福)

我们在三个不同的测试地点对位于德国法兰克福的服务器进行了速度测试,结果如下。

Speed test perf3 Dallas

Speed test perf3 Dallas

Speed test perf3 Melbourne

Speed test perf3 Melbourne

Speed test perf3 Stockholm

Speed test perf3 Stockholm

正如我们在上面看到的,从欧洲(靠近主机服务器)加载一个站点和从全球加载有很大的不同。

如果那些页面负载测试不能说服你,我们不知道什么能说服你!比如美国爱荷华州的考点,从达拉斯加载只需要 368 ms。但是从澳大利亚悉尼装货用了 2.14 秒。这就是为什么位置很重要!同样,你可以通过 CDN 让你的媒体资产更接近你的访客,从而帮助减少总加载时间。Kinsta 包括一个面向所有客户的 CDN!但是您总是会遇到来自主机服务器的加载时间和延迟,所以要明智地选择。

选择合适的位置来托管你的 WordPress 站点

大多数主机提供商通常允许你选择不同的位置来托管你的网站。在金斯塔这里,我们有所有 35 个谷歌云平台位置现在可用。这使您可以战略性地将您的站点放置在您需要确保低延迟和 TTFB 以及极快加载时间的地方。您也可以为每个单独的站点选择不同的位置。

Google Cloud data center locations

Google Cloud data center locations

不确定选哪个?以下是一些建议。

技巧 1——查看谷歌分析

你可以做的第一件事就是在谷歌分析中查看访客的地理位置。在下面的示例中,您可以看到 90%以上的流量来自美国。所以在大多数情况下,你会想把你的网站放在美国的服务器上。您可以将数据过滤到城市,但我们通常会推荐一个中心位置,如美国爱荷华州。

Geo data in Google Analytics

Geo data in Google Analytics

技巧 2——检查电子商务数据

如果你经营一家电子商务商店,一定要查看你的顾客来自哪里。这当然是你创收的方式,所以这些是你最重要的访客。这应该与你上面的流量相吻合,然而,这并不总是如此。如果您有电子商务数据设置或目标,您可以轻松地将该信息叠加到地理数据之上,以做出更明智的决策。

技巧 3——做一个快速延迟测试

有很多方便的免费工具可以为不同的云提供商测量从你当前位置的延迟。这可以帮助您快速评估哪个地区可能是您站点的最佳选择。

Measure Google Cloud Platform latency

Measure Google Cloud Platform latency

你也可以利用 CloudHarmony ,这是一个云比较工具。您可以测试延迟、DNS、上行链路和下行链路等内容。

CloudHarmony network test

CloudHarmony network test

缩短网络延迟的快速方法

总而言之,这里有一些快速减少网络延迟的方法。

摘要

希望现在您对网络延迟有了更多的了解,为什么它很重要,以及它如何影响您的站点。为了确保快速加载,请确保选择一台离您的访客和客户最近的服务器。你有什么想法?你是否经历过由于网站被放置在错误的位置而导致的缓慢加载时间?请在评论中告诉我们。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

19 个强大的时事通讯例子,帮助你掌握电子邮件营销

原文:https://kinsta.com/blog/newsletter-examples/

寻找时事通讯的例子来帮助你掌握电子邮件的力量?

在 2022 年,电子邮件营销不是你可以忽视的事情——电子邮件订户成为付费客户的可能性是来自有机搜索的访客的 19 倍。

这是有道理的,对吗?毕竟,他们是回来的,感兴趣的,潜在的买家,而不仅仅是随机的访客。

但是如果你想利用这种力量,你需要每周写一份值得一读的时事通讯。只有拥有正确的新闻稿内容、设计和交付方式,您才能创建一份能够吸引受众并推动销售的新闻稿。

在本帖中,我们将涵盖不同类别中的 19 个简讯示例,并详细解释它们为什么如此有效。

T3】

一份好的时事通讯的关键要素

完美的简讯没有单一的公式。

你必须考虑你的目标受众、行业以及过去对你有效的方法。

但是伟大的电子邮件通讯通常有一些共同的元素。它们包括:

  • 一个标志
  • 清除 CTA
  • 引人注目的相关主题
  • 精彩的特色图片

我们将逐一介绍,从徽标开始。

你知道吗,✨19 times✨的电子邮件订户比有机搜索的访客更有可能成为付费客户?😮点击此处查看如何提升你的电子邮件简讯👇 点击推文

从标志开始(品牌是至关重要的)

你在你的简讯中投入了大量的工作和思想,你希望每个订阅者都将它与你的品牌和公司联系起来。

Microsoft newsletter with logo

带有标志的微软简讯。

像微软或苹果这样的大品牌明白,与潜在客户的每一次互动都是宣传他们公司的机会,他们不会忽视电子邮件沟通。

这些巨头都不回避把他们的商标贴在所有促销邮件的最上面。

还有其他方法可以给你的电子邮件简讯打上品牌,比如使用品牌颜色和用一致的声音写作。

清除 CTA 推动销售

根据最新的电子邮件营销统计数据,电子邮件营销的投资回报率高达 42 美元。但前提是你能利用电子邮件建立关系并推动销售。

行动号召(CTA)是将电子邮件收件人从被动的读者转变为采取行动的人,比如购买你的产品。

The North Face email newsletter with CTAs

The North Face email newsletter with CTAs.

这些是至关重要的,主要是如果电子邮件的目标是推广产品或服务,而不是进一步建立关系。

相关的、引人注目的主题(和主题)

每个主题行(以及时事通讯的主题)都应该吸引注册接收它的读者。

但这对于一个注册电子商务网站获得 20%折扣优惠券的人来说,与注册 SaaS 行业状况信息通讯的人来说,意味着非常不同的事情。

因此,在构思主题和主题句时,要把你的受众放在心上。当他们第一次注册你的时事通讯时,他们在寻求什么好处?

如果你有很多因各种原因注册的用户,如果你想最大化参与度,你应该对这些用户进行细分。

例如,您可以根据用户注册的登录页面对他们进行分类。这是向每个人发送更多相关电子邮件的简单方法。

列表细分只是电子邮件营销最佳实践的众多伟大建议之一。

专业特色图片(或 gif)提高参与度

试图仅用文本来抓住读者的注意力是一个挑战。最好的时事通讯知道如何使用特色图片(甚至是 gif 图片)来吸引你。

The Hustle email newsletter

奔忙的邮件通迅。

电子邮件营销软件,如 Mailchimp 或其他流行的替代品,在创建简讯活动时会很有帮助。从有很多好选项可供选择。

5 个吸引您注意力的产品更新简讯示例

让客户了解新产品、功能或即将举行的活动是电子邮件简讯的基本用途。

一份成功的产品更新简讯会抓住读者的注意力,并解释他们为什么应该关注最新的产品发布。

这里有五个我们喜欢的。

1.三星电子

三星最近发布了三星 Z Flip3 和 Fold3 可折叠手机。这份时事通讯公布了新产品,并提供了一些特别优惠。

Product announcement email from Samsung

三星产品公告邮件。

为什么会被淘汰

时事通讯以高质量的图片和醒目的大标题吸引您的注意力。每个部分都有明确的 CTA。

虽然新闻简报有几个部分,但它将最重要的内容和主要的 CTA 按钮(产品发布和“立即购买”按钮)放在折页上方。

2.星巴克

星巴克的粉丝们每年都热切期待南瓜香料拿铁和其他秋季饮品的到来。这份时事通讯让订户知道时机已到。

Starbucks fall product announcement newsletter

星巴克秋季产品发布简讯。

为什么会被淘汰

这封邮件通过给读者一个选择来吸引他们。它不只是提供信息,而是要求他们思考:夏天还是秋天?

时事通讯也有一个有趣的流行色彩的布局,星巴克的标签在顶部清晰可见。

3.金斯塔

嘿,那是我们!

我们最新的电子邮件简讯首先宣布推出我们的选择性推送功能,然后提供精选的博客和视频内容。

稍后,我们将向您展示更多内容推广电子邮件简讯的示例。

Kinsta product feature announcement email newsletter

金士达产品功能发布邮件简讯。

为什么会被淘汰

金斯塔品牌并没有停止在标志之后。熟悉该品牌的人都能认出这封邮件的颜色和风格。

这封邮件里有适合每个人的东西。如果读者对产品功能更新不感兴趣,他们可能会被吸引到 Kinsta 网站,以了解更多关于恶意软件或如何发送大型附件的信息。
T3】

4.斯巴鲁

斯巴鲁宣布斯巴鲁 STI S209 采用这种圆滑的电子邮件设计。主题是,“等等……有多少台 S209 正在生产?”

Subaru email newsletter product announcement

斯巴鲁产品公告邮件简讯。

为什么会被淘汰

首先,光是主题行就很引人注目。答案是什么?是个小数字吗?想买一台 S209 要抓紧时间吗?

时事通讯的设计具有精致的高科技外观,并使用高质量的照片。这封电子邮件强调了这样一个观点,即你应该迅速行动以获得这一独家产品。

5.联想(电脑的品牌名)

与上面的斯巴鲁电子邮件一样,联想选择了黑色背景下的大胆颜色来宣布军团 7。

Product announcement from Lenovo

联想产品发布邮件简讯样本。

为什么会被淘汰

这是一个有吸引力的,现代的电子邮件设计,有很好的图像。

该电子邮件还介绍了其他几款产品,但军团 7 规格、免费送货和 CTA 都在顶部附近。“建立你的装备”是一个整洁的 CTA,将吸引喜欢定制他们的笔记本电脑的读者。

6 个推动销售的电子商务简讯示例

如果你发送电子邮件来推广你的电子商务业务,竞争是激烈的。你的订户每天都会收到大量电子商务邮件,敦促他们购买这个或那个。

你必须鹤立鸡群。

以下六个电子邮件简讯向你展示了如何创建一个引人注目的电子商务电子邮件简讯。

1.沃比·帕克

这封来自 Warby Parker 的电子邮件简讯是电子邮件营销极简主义的一课。你不需要五页的长篇大论来销售一个消费品。

有了合适的视觉效果,你可以让产品自己说话。

Warby Parker ecommerce email newsletter

沃比帕克电子商务邮件简讯。

为什么会被淘汰

Warby Parker 明白,在做出购买眼镜的决定时,外观很重要。

这就是为什么它会抓住每一个机会,在营销邮件中突出公司最有信心的设计。

该公司还充分利用 gif 来展示一系列不同的产品,或者像这里一样,展示每种可能颜色的单个框架。

2.芙蓉和蜜蜂

Fleur and Bee 是一家护肤品公司,致力于生产自然、道德的产品。对 Fleur 和 Bee 及其顾客来说,素食、无虐待和环境友好对于拥有有意识的、容光焕发的皮肤至关重要。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Ecommerce newsletter from Fleur and Bee

芙蓉与蜜蜂电子商务邮件简讯。

为什么会被淘汰

通过这封邮件,Fleur 和 Bee 忠于品牌。吸引人的主图像给人一种印象,即展示的产品是由简单、天然的成分制成的,文案强调了公司的价值观。

CTA 上的促销代码总是吸引更多点击的好方法。

3.告密

Tattly 出售临时纹身——但不是你记得的童年纹身。Tattly 纹身是由专业艺术家设计的,他们从每笔销售中提成。

这封电子邮件简讯宣布了 Tattly 的“Laboryay”销售的最后一天。

Tattly sale promotion email newsletter

公开出售促销邮件简讯。

为什么会被淘汰

这封邮件在制造紧迫感方面做得很好。你不能忘记这是你告密的最后一天。

明亮的色彩吸引你的注意力,艺术照片是一家专注于高品质可穿戴艺术的公司的品牌。

4.珀洛东

Peloton 具有非常一致的品牌外观和感觉,这封电子邮件简讯也不例外。

像斯巴鲁和联想——其他品牌希望传达他们的产品是复杂的,强大的,高科技的——Peloton 采用了黑色背景和高对比度的文字。

Peloton email newsletter

Peloton 电子邮件简讯。

为什么会被淘汰

Peloton 吸引你的承诺是你可以在这辆车上省下一大笔钱。

不仅降价是你看到的第一件事,而且$0 和$0 APR 的会员价也用大字体强调。

然后,这封邮件会告诉你送货预约很快就满了,从而产生一种紧迫感。整个通讯设计是美丽的,有吸引力的抱负的照片。

5.布鲁克斯在跑步

很难让鞋子的照片看起来有趣,但布鲁克斯做到了。

这封邮件宣传跑鞋和运动胸罩,并提供一些有用的工具。

Ecommerce email from Brooks Running

布鲁克斯运行电子商务邮件简讯。

为什么会被淘汰

图像不仅仅是产品的图片。很耐人寻味,很有艺术性。这些颜色增加了吸引力,并与鞋子的光泽相得益彰。

这封邮件不只是向你展示产品。它提供了一个在线鞋子和胸罩搜索工具来帮助你找到合适的。

如果这些有价值的工具没有说服你去看看布鲁克斯的网站,也许你会打电话给公司,从一位大师那里获得额外的技巧,就像电子邮件底部宣传的那样。

6.臀部

你知道什么是旅行吗?

与我们世界一流的支持团队一起体验卓越的 WordPress 托管支持!与支持我们财富 500 强客户的同一个团队聊天。查看我们的计划

这封邮件没有告诉你。但它确实有一个很棒的产品在屏幕上跳舞的 GIF。如果你还是不明白,你会想要点击并找到答案。

TUSHY email newsletter sample with gif

TUSHY 电子邮件通迅样本配 GIF。

为什么会被淘汰

这封邮件的正文只有 18 个字(不包括底部巧妙的退订提示),但是非常有效。

读者会情不自禁地观看亮粉色便携式坐浴盆的动画。对于不熟悉该产品的订户来说,它肯定会引起兴趣。对于那些已经了解 TUSHY 的人来说,这封有趣的邮件让这家公司更令人难忘。

5 个推广内容的时事通讯示例

电子邮件简讯是分享内容的好方法。一些电子邮件时事通讯也从网络上收集内容与读者分享。

重要的是记住你的听众。他们对阅读什么感兴趣?为什么订阅你的公司时事通讯对他们有价值?

这五个电子邮件简讯提供相关的,有价值的信息给他们的目标读者。

1.居住

Dwell 是一个杂志和在线中心,面向家居设计爱好者和专业人士。这份来自 Dwell 的时事通讯介绍了网站上的购物指南、特色产品和热门文章。

Dwell content promotion email newsletter

详解内容推广邮件快讯

为什么会被淘汰

社交证明获得点击量。人们对受欢迎和受他人喜爱的东西感兴趣。

这就是为什么 Dwell 作出了一个很好的选择,它以“Dwell 读者在九月份购买的 15 种产品”开始了这篇通讯。

九月和十月排名靠前的文章也有同样的效果。其他人喜欢这些文章,所以你也应该看看。

另外,这封邮件设计得很好,有高质量的照片。

2.蚊子

Moz Top 10 并不像这个列表中的一些电子邮件通讯那样华丽,但它给了人们他们想要的东西——互联网上最有价值的 SEO 和营销技巧。

Moz Top 10 curated content email newsletter 

墨子十大策展内容邮件快讯

这种电子邮件设计简单明了。如果你对搜索引擎优化和在线营销感兴趣,你一定会找到一些值得点击的东西。每个链接对典型的 Moz 读者来说都是相关的和有价值的。

Moz 证明了花里胡哨并不总能让邮件变得更好。

3.美国防止虐待动物协会(American Society for the Prevention of Cruelty to Animals)

美国防止虐待动物协会是一个非营利组织,自 1866 年以来致力于动物福利。

这个话题很严肃,但是这个以万圣节为主题的电子邮件时事通讯很有趣。

ASPCA email newsletter example

ASPCA 邮件简讯示例

为什么会被淘汰

我们知道这份时事通讯的订户都是动物爱好者,所以可爱的主角形象是一个好的开始。读者也一定会对“pawpular”和“你想要的尾巴”这样的短语微笑

ASPCA 是一个非盈利组织,所以寻求捐赠总是很重要的。这封电子邮件上的捐赠按钮以橙色粗体显示在最上方。阅读第一篇博文的 CTA 也很引人注目,位于折叠上方。时事通讯提供各种内容和特别优惠。

这封电子邮件简讯有一个干净的布局,并符合 ASPCA 的品牌颜色。

4.国家地理

《国家地理》以其令人惊叹的照片而闻名,这份电子邮件时事通讯符合标准。

它还提出了一个旨在让你停下来思考的问题:行星还是塑料?

National Geographic email newsletter example

国家地理邮件通迅示例

为什么会被淘汰

这是一封从上到下都很漂亮的邮件。这张图片乍一看像一座冰山,但实际上是一个漂浮的塑料袋,吸引读者不仅仅是看一眼。

时事通讯的内容集中在一个主题上,并为点击 CTA 提供了一个强有力的理由:它可能有助于拯救地球。

邮件的最后部分要求订阅者参与国家地理的社交媒体。

5.每日收入

每日摘要是新闻故事的每日摘要,以简单、易读、有时幽默的方式解释。

Email newsletter from The Daily Skimm

每日克扣’邮件简讯。

为什么会被淘汰

每日 Skimm 有一个一致的和可识别的品牌声音。

每天的浏览覆盖了相当多的新闻故事,但对于一封邮件来说并不过分,因为文本被分成了易于管理的片段,并配有巧妙的标题。

哪里可以找到更多的灵感——无需订阅数百份时事通讯

如果你不想设置一个一次性的电子邮件帐户并注册数百份简讯,我们为你提供了一个有趣的内幕提示,它将帮助你轻松获得数千个品牌的简讯。

是一个电子邮件时事通讯的搜索引擎。您可以键入品牌名称(或类别)并浏览各种行业、语言和国家的时事通讯。

Milled is a search engine for email newsletters

胎记邮件简讯搜索引擎。

你甚至可以找到直接的竞争对手(尽管理想情况下,你应该已经订阅了他们的时事通讯)。

真正好的邮件是另一个邮件数据库。该网站不仅仅包括任何旧的营销电子邮件。它们都是(你猜对了)非常好的邮件。

这是一个为你的品牌寻找时事通讯想法的好地方。

在本指南的帮助下,驾驭电子邮件营销的力量📧⬇️ 点击推文

摘要

无论你是想卖一个科技产品,还是想建立一个专业顾问的形象,制作一份成功的时事通讯都需要许多相同的元素。

探索你的竞争对手在做什么,遵循良好的设计实践,包括基本的时事通讯元素,永远不要忘记谁是你的目标受众。

使用他们的语言,说出他们的问题,并提供他们需要的解决方案。电子邮件时事通讯不仅仅是你应该扔在一起的东西。

简讯是一个无价的营销渠道,你可以用它来建立你的品牌和业务。从这些时事通讯的例子中学习,然后为你的观众创造更好的东西


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

Nginx vs Apache: Web 服务器对决

原文:https://kinsta.com/blog/nginx-vs-apache/

正如我们今天所知,互联网在 90 年代开始了它的全球“征服”。整个“web”协议可以总结为一个访问者从给定的 Web 地址请求一个文档,DNS 和 IP 系统将该请求转发到正确的计算机。托管所请求的网页的这台计算机将把该网页“提供”给访问者。

网页本质上是 HTML 文档。为了能够为访问者提供不同的网页,“服务”机器需要一个服务器程序。像 Nginx vs Apache 这样的软件处理请求,分析它们,然后将相应的文档返回到访问者的浏览器中进行查看。

Nginx vs Apache

Nginx 和 Apache 是流行的 web 服务器,用于向用户的浏览器提供网页。在我们的例子中,来自一个托管的 WordPress 站点。快速统计:

  • Apache 于 1995 年首次发布,然后在 2004 年发布了 Nginx。
  • 全球财富 500 强的大公司都使用这两种方法。
  • Nginx 的市场份额多年来一直在稳步增长。
  • 在某些情况下,Nginx 在性能方面具有竞争优势。

Support

街头流氓

我们将首先深入研究 Apache,因为它是首先发布的。

在互联网出现的前几年,蒂姆·伯纳斯·李的 CERN HTTPd T1 和 T2 的 NCSA HTTPd T3 之后,1995 年首次发布的 Apache T5 迅速占领了市场,成为世界上最受欢迎的网络服务器。如今,它仍处于这一市场地位,但主要是因为传统原因。Apache 是由 Apache 基金会在 Apache 许可下开发和维护的。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

关于 Apache 如何得名有两个不同的故事。一个版本说这个名字来源于著名的美国土著遗产,而另一个版本说这个名字是“一个拼凑的服务器”的双关语,它是在一系列软件补丁之后出现的。

Linux 操作系统

Apache 的巨大市场份额部分是由于它预装了所有主要的 Linux 发行版,如 Red Hat/Centos 和 Ubuntu。

Ubuntu default page

Ubuntu default page

Apache 在 Linux 世界中的重要作用的一个例子是,它的服务器进程名是 HTTPd,这使得 Apache 成为 web 服务器软件的同义词。

除了是 web 服务器市场的第一个重要玩家之外,Apache 的发展部分归功于它的配置系统和它的。htaccess 文件。

。htaccess

阿帕奇用。htaccess 进行配置。有很多关于如何配置、编辑和使用这个文件的教程,因为它在配置 Apache 如何处理传入请求方面提供了很大的灵活性。一些例子是:不同的重定向规则最大上传文件大小、URL 重写、内存限制、目录保护(htpasswd)、过期头缓存控制头编码头、cookies、查询字符串操作。

另一方面,Kinsta 使用不支持的 Nginx。htaccess 文件。但是,您的中的设置和规则。htaccess 文件可以很容易地“翻译”成 Nginx 自己的重写规则语法。

Apache 的主要“优点”之一是,在服务器根目录(主网站目录)中,目录树中的每个级别或目录都可以有自己的目录。具有自己配置的 htaccess 文件。

对于共享主机服务提供商来说,这是一个梦想,因为他们可以为同一台机器上的数百名用户提供一种方式来配置他们网站的服务方式,而不会影响到其他人。客户可以在一个受限的共享托管环境中配置很多细节,同时永远不会触及全局服务器配置。

正如官方文件所说:

“一般来说,你应该只用。当您没有访问主服务器配置文件的权限时,请使用 htaccess 文件。

然而,这种灵活性是以牺牲性能为代价的。htaccess 文件会导致性能下降,不管你实际上是否使用它们!”

每次都是。htaccess 文件,Apache 必须遍历整个目录树,从请求的 URL 或文件开始,通过所有更高的级别,直到服务器的根目录,然后为每个请求加载它们。然后,它需要处理这些文件,并为以这种方式配置的每个目录重新配置自己。

有了 WordPress 网站,事情会变得非常复杂。一个典型的 WordPress 网站可能有数百个来自不同目录的请求。

来自/wp-content/uploads/yyyy/mm 类型的目录,它通常在单个页面负载上有多个请求,通常来自不同的月份目录。然后会有/WP-content/themes/parent-theme 静态资源,/wp-content/themes/child-theme 资源:这些会包括 javascript, css 文件,图片。

然后还会有/wp-content/plugins,其中包含从几十个插件子目录中加载的静态文件。对于这些资源中的每一个,Apache 都必须遍历整个树来查找配置。

一项分析表明,一个典型的 WordPress 设置,对于共享主机上的网站来说相当普遍,将包括 42 个独立的。htaccess 执行和 249 个单独的查找。htaccess 文件。

这只是在网络服务器层面。访问者仍然需要等待 PHP 进程执行整个 WordPress 调用栈来创建数据库查询,并将其交给 MySQL 来组装网页并发送给访问者。

模块

另一个让 Apache 流行起来的是它的动态模块系统

模块——作为允许用户扩展 web 服务器功能的特性——在 Nginx 和 Apache 中都存在。Apache 允许用户在安装和部署 web 服务器后安装模块,然后根据需要启用/禁用它们。基于 Debian 的发行版有一些命令允许启用和禁用这些模块,而不需要编辑任何配置文件:a2enmod 和 a2dismod。

作为 Apache 标准发行版一部分的官方模块列表是这里的,包括从压缩、加密、日志、重定向到更高级的东西,比如用高级语法编辑请求和响应。
T3】

Nginx

nginx (也写作 Nginx 或 Nginx)于 2004 年出现,当时它由俄罗斯开发者伊戈尔·塞索耶夫首次公开发布。正如 Nginx 项目经理欧文加勒特所说:

" Nginx 是专门为解决 Apache web 服务器的性能限制而编写的."

该服务器最初是在 2002 年作为 rambler.ru 网站的缩放工具而创建的。它有两个版本:开放源码,带有 BSD 类型的许可,和 Nginx Plus ,带有支持和额外的企业特性。

在发布之后,Nginx 主要用于服务静态文件,并作为 Apache 安装前的负载平衡器或反向代理。随着网络的发展,以及对速度和硬件使用效率的需求,越来越多的网站开始用 Nginx 完全取代 Apache,这也要归功于一个更成熟的软件。

NGINX Inc acquired by F5 Networks

NGINX Inc acquired by F5 Networks

2019 年 3 月,Nginx Inc 被 F5 Networks 以6.7 亿美元收购。据 Techcrunch 报道,当时 Nginx 服务器为“3.75 亿个网站和大约 1500 名付费用户”提供支持。

根据 w3techs 的数据,Nginx 的市场份额一直在稳步增长,将 Apache 挤出并从第一的位置上赶了下来:

Web server usage

Web server usage

这些数据与全球所有网络服务器有关,但如果我们从排名前 100 万的网站中抽取样本,Nginx 已经存在一段时间了:

Percentage of websites using Nginx

Percentage of websites using Nginx

谷歌搜索趋势似乎也反映了这一事实:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Google Search Trends: Nginx vs Apache

Google Search Trends: Nginx vs Apache

Netcraft 调查提示【2019 年 4 月阿帕奇已经被 Nginx 超越。

Nginx 配置

Nginx 没有像 Apache 那样的配置系统,因此,尽管它更加高效和快速,但它并没有被零售主机提供商广泛采用。它不像 Apache 那样在共享环境中大放异彩。

Kinsta hosting architecture.

Kinsta hosting architecture.

另一方面,正如我们所说的,由于不允许目录级配置,Nginx 比 Apache 有明显的优势。Nginx wiki 上有一篇文章比较了性能影响:

Performance impact Nginx vs Apache.png

Performance impact Nginx vs Apache.png

Nginx 模块

Nginx 模块系统是又一个将其定位为更高级选择的东西。Nginx 模块通常需要在构建时启用,这意味着涉及到更多的技术能力,并且模块的安装后添加有点复杂。

2016 年,随着 1.9.11 版本的推出,事情发生了变化,官方/经过验证的动态模块库被保留给付费用户。截至 2019 年 5 月,他们宣布开始开发对 QUIC 和 HTTP/3 的支持。

缓存的问题:Nginx vs Apache

缓存——如果我们想把它过于简化的话——可以想象成在网站访问者访问之前为他们准备内容,这样当他们“敲门”时,你就不需要去寻找他们正在寻找的内容。你已经准备好了,你没有任何等待就把它交给他们。

像 Apache 一样,Nginx 的典型设置是位于服务器和最终用户之间,以减轻对基础设施其余部分的性能影响。在这些情况下,它可以缓存静态内容,而不需要每次都从受保护的源服务器获取它。

如果我们使用 Nginx 作为一个独立的网络服务器——就像 Kinsta LXC 容器一样——就没有这种需要。Nginx 本身在提供静态内容方面非常高效。

然后就是动态缓存或者说页面缓存的问题。在 WordPress 网站的场景中,这意味着将为每个 URL 生成的所有 WordPress 页面存储在内存或磁盘上。

FastCGI 缓存在标准 Nginx 安装中是本地可用的。它很简单,非常强大,是 Nginx 中不常用的特性之一。

为了与 Apache 的同类产品进行比较,您应该知道 Apache 有 mod_cache 模块,据报道,该模块容易出问题,与其他模块冲突。所以 Apache 部署的标准缓存解决方案是 Varnish HTTP accelerator。虽然 Varnish 是专门的行业解决方案,但最近的一些测试让 Nginx 缓存明显优于 Varnish。

你厌倦了缓慢的 WordPress 托管吗?我们在服务器级别使用全页面缓存,几乎可以即时向您的访问者提供内容。查看我们的托管计划

在 Kinsta,我们使用 Nginx 进行动态 WordPress 缓存,以及一个专有的缓存插件,允许对缓存的页面和由 Kinsta CDN 缓存的静态资产进行粒度控制。

处理请求:Nginx 与 Apache

Apache 和 Nginx 最大的区别在于它们处理请求的底层架构。

Apache 用 MPM-s 或多处理模块处理请求,它“负责绑定到机器上的网络端口,接受请求,并分派子进程来处理请求。”

最古老的 MPM,可以追溯到 Apache 的开端,是 prefork 模块。单单这个模块就可以让 Apache 的性能声名狼藉。在这种模式下,Apache 为每个请求生成一个线程的新进程。

这个模块与 mod_php 一起使用,意味着 Apache server 在每个进程中都嵌入了一个 php 解释器,即使它必须提供 CSS 文件或图像。

这是低效的。Prefork 模块是 Apache 自带的默认模块。它还将连接限制到 HTTP/1。

在后来的几年里,Apache 开发了多线程 worker mpm 以及之后的 event mpm 。两者都缓解了 Apache 的许多性能问题。切换到 php-fpm 使得 Apache 在今天仍然是一个有竞争力的解决方案,同时消除了。htaccess,但这有点违背了它的目的。

Nginx 使用异步、非阻塞的事件驱动架构。

解释一下区别:在 Linux/Unix 世界中,进程是运行程序。

线程是进程的子集,在一个进程执行中可以有多个线程。请将此想象为浏览器窗口中的多个选项卡。通过这种方式,程序可以利用多个 CPU 和多核、多线程 CPU 来提高执行速度。你可以阅读 Linus Torvalds 对差异的阐述。

简而言之,Apache 对每个连接都使用进程(对于 worker mpm,它使用线程)。随着流量的增加,它很快变得过于昂贵。

我们可以想象新的进程或线程的创建,比如启动计算机或启动程序。即使在最快的计算机上,也需要一些时间。随着今天的网站在一个页面上发出数百个请求,这种情况会迅速增加。

Event mpm 在优化方面走得更远一点,但是一些 测试显示它跑不过 Nginx。特别是当我们谈到静态文件时,Nginx 处理的请求是 Apache 的两倍。

Nginx 理想情况下每个 CPU/内核有一个工作进程。Nginx worker 进程的不同之处在于,每个 worker 可以处理成千上万的网络连接。不需要为每个连接创建新的线程或进程。

这就是为什么主要的内容交付网络,如 Cloudflare 、MaxCDN 和我们的合作伙伴 key cdn——或网站如网飞——发现 Nginx 对他们的内容交付至关重要。

利用 Nginx 的公司名单太长,无法一一列出,所以我们将以 WordPress.com 背后的私人公司 Automattic 结束。

Automattic 在 2008 年将他们所有的负载均衡器转换成 Nginx 用于 WordPress.com(你可以在这里读到它)并且将他们的服务器栈完全迁移到 Nginx

在现实生活中检验它

如果我们想检查生产中的网站使用了什么,我们通常可以在 HTTP 响应头中找到它。这意味着我们将需要右键单击一个网站>检查,在开发者工具中,我们将选择网络面板,然后重新加载该网站。我们将看到网站正在加载的所有资源。如果我们选择任何特定的资源及其标题标签,我们通常会看到服务器信息。如果网站使用 CDN,我们可能会在服务器行中看到类似 Cloudflare 的内容,或者如果网站使用 HTTP 加速器,会看到类似 Varnish 的内容。

这是一个使用 cPanel、Apache 和 PHP 的典型共享主机设置的 WordPress 网站的例子:

Apache http header

Apache HTTP header

这是 Nginx 上的一个网站:

Nginx http header

Nginx HTTP header

在左侧,如果我们展开它,我们还将能够分析每个资源的时间,并看到它对整个页面加载时间的影响。

Nginx vs Apache: which one provides faster solutions for your WordPress sites? 🚀 Check out our web server showdown!Click to Tweet

摘要

在本文中,我将重点放在 Nginx 和 Apache 上,并解释了帮助 Nginx 在 web 服务器领域获得更多关注的主要架构差异。这些是在我们这个资源饥渴的行业中赋予它性能优势的关键特征。

当然,并不是每个用例都有相同的优先级,Apache 或其他工具如 LighttpdIISLiteSpeedCaddy 可能是好的解决方案。

在 Kinsta,我们使用 Nginx 作为我们为 WordPress 和 WooCommerce 提供的性能优化托管解决方案的一部分。每一个 WordPress 站点都有自己的独立容器,里面有运行它所需的所有软件资源(Nginx,Linux,PHP,MySQL)。这些资源是 100%私有的,不会在任何其他站点之间共享。

请务必查看 Nginx 和我们所有的高级附加软件。此外,查看我们的应用托管数据库托管服务,获得更多托管机会。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何使用多种工具调试 Node.js 代码

原文:https://kinsta.com/blog/node-debug/

Node.js 是一个 JavaScript 运行时,基于与谷歌 Chrome 浏览器相同的 V8 引擎。它通常用于构建跨平台的服务器端和终端应用程序。 Node.js 在过去十年里变得越来越受欢迎,因为它的易于安装,实用,快速,并允许客户端 web 开发人员在其他地方利用他们的技能

然而,软件开发仍然是一项复杂的任务,您的 Node.js 代码在某些时候会失败。本教程演示了帮助调试应用程序和查找问题原因的各种工具。

让我们开始吧。

查看我们的视频指南调试 Node.js 代码

信息

Deno 是一个替代的 JavaScript 运行时。它类似于 Node.js,但更新,并且消除了一些漏洞和不一致。下面的工具和信息可以经常应用到 Deno 应用和 Node.js 上

调试概述

“调试”是修复软件缺陷的各种方法的名称。修复一个 bug 通常很简单。查找 bug 的原因可能要复杂得多,并且要花很多时间绞尽脑汁。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

以下部分描述了您将会遇到的三种常见错误。

句法误差

你的代码没有遵循语言的规则——例如,当你省略了一个右括号或者拼错了一个语句,比如console.lag(x)

优秀的代码编辑器可以通过以下方式帮助发现常见问题:

  • 对有效或无效陈述进行颜色编码
  • 类型检查变量
  • 自动完成函数和变量名
  • 突出显示匹配的括号
  • 自动缩进代码块
  • 检测无法到达的代码
  • 重构混乱的函数

免费编辑器VS CodeAtom 对 Node.js、JavaScript 和 TypeScript(将文件转换为 JavaScript)有很大的支持。基本语法问题通常可以在保存和测试代码之前发现。

ESLint 这样的代码 linter 也会报告语法错误、错误的缩进和未声明的变量。ESLint 是一个 Node.js 工具,您可以使用以下工具进行全局安装:

npm i eslint -g

您可以使用以下命令从命令行检查 JavaScript 文件:

eslint mycode.js

…但使用编辑器插件更容易,例如 VS 代码的ESLint或 Atom 的linter-ESLint,它们会在您键入时自动验证代码:

ESlint in VS Code

ESlint in VS Code.

逻辑错误

您的代码可以运行,但并不像您预期的那样工作。例如,当用户请求注销时,他们没有注销;一份报告显示不正确的数字;数据没有完全保存到数据库中;等等。

逻辑错误可能由以下原因引起:

  • 使用错误的变量
  • 不正确的条件,例如if (a > 5)而不是if (a < 5)
  • 未考虑运算符优先级的计算,例如1+2*3产生 7 而不是 9。

这是不可避免的:你的 Node.js 代码会在某个时候失败。😅查看您可以使用哪些工具来调试应用程序并找到问题的原因就在这里✅ 点击发推

运行时(或执行)错误

只有在执行应用程序时,错误才会变得明显,这通常会导致崩溃。运行时错误可能由以下原因引起:

  • 除以被设置为零的变量
  • 试图访问不存在的数组项目
  • 试图写入只读文件

逻辑和运行时错误更难发现,尽管以下开发技术会有所帮助:

  1. 使用测试驱动开发: TTD 鼓励你在开发一个函数之前编写测试,比如当 Z 作为参数传递时,X 从 functionY 返回。这些测试在初始开发和后续更新期间运行,以确保代码继续按预期工作。
  2. 使用问题跟踪系统:没有什么比声称“你的软件不工作”的电子邮件更糟糕的了!问题跟踪系统允许您记录特定的问题、记录复制步骤、确定优先级、分配开发人员以及跟踪修复的进度。
  3. 使用源代码控制:像 Git 这样的源代码控制系统将帮助你备份代码,管理修改,并识别哪里引入了 bug。在线知识库,包括 GithubBitbucket、为较小的或开源项目提供免费空间和工具。

您仍然会遇到 Node.js 错误,但是下面几节描述了定位这种难以捉摸的错误的方法。

设置适当的 Node.js 环境变量

在主机操作系统中设置的环境变量可以控制 Node.js 应用程序和模块设置。最常见的是NODE_ENV,调试时通常设置为开发,运行在活动服务器上时设置为生产。使用命令在 macOS 或 Linux 上设置环境变量:

NODE_ENV=development

或者在(经典)Windows 命令提示符下:

set NODE_ENV=development

或 Windows Powershell:

$env:NODE_ENV="development"

在流行的 Express.js 框架中,将 NODE_ENV 设置为 development 会禁用模板文件缓存,并输出详细的错误消息,这在调试时会很有帮助。其他模块可能提供类似的特性,您可以向您的应用程序添加 NODE_ENV 条件,例如

// running in development mode?
const devMode = (process.env.NODE_ENV !== 'production');

if (devMode) {
  console.log('application is running in development mode');
} 

您还可以使用节点的 util.debuglog 方法有条件地输出错误消息,例如

import { debuglog } from 'util';
const myappDebug = debuglog('myapp');
myappDebug('log something'); 

只有当 NODE_DEBUG 设置为 myapp 或通配符(如或 my)时,该应用程序才会输出日志消息。

使用 Node.js 命令行选项

节点脚本通常以 Node 启动,后跟条目脚本的名称:

node app.js

您还可以设置命令行选项来控制各种运行时方面。用于调试的有用标志包括:

  • --check
    语法检查脚本不执行
  • --trace-warnings
    JavaScript 承诺不解析或拒绝时输出堆栈跟踪
  • --enable-source-maps
    使用 transpiler 如 TypeScript 时显示源地图
  • --throw-deprecation
    使用不推荐使用的 Node.js 功能时发出警告
  • --redirect-warnings=file
    将警告输出到文件而不是 stderr
  • --trace-exit
    调用process.exit()时输出堆栈跟踪。

向控制台输出消息

输出控制台消息是调试 Node.js 应用程序的最简单方法之一:

console.log(`someVariable: ${ someVariable }`);

很少有开发人员意识到还有许多其他的控制台方法:

控制台方法 描述
.log(msg) 标准控制台消息
.log('%j', obj) 将对象输出为紧凑的 JSON 字符串
.dir(obj, opt) 漂亮打印对象属性
.table(obj) 以表格格式输出数组和对象
.error(msg) 错误消息
.count(label) 递增指定的计数器并输出
.countReset(label) 重置命名计数器
.group(label) 缩进一组邮件
.groupEnd(label) 终止一个组
.time(label) 启动指定的计时器
.timeLog(label) 报告经过的时间
.timeEnd(label) 停止指定的计时器
.trace() 输出堆栈跟踪(所有函数调用的列表)
.clear() 清空控制台

console.log()也接受逗号分隔值列表:

let x = 123;
console.log('x:', x);
// x: 123 

…尽管 ES6 析构化以较少的工作量提供了类似的输出:

console.log({ x });
// { x: 123 } 

console.dir() 命令以与 util.inspect() 相同的方式美化打印对象属性:

console.dir(myObject, { depth: null, color: true });

控制台争议

一些开发者声称你应该永远不要使用console.log(),因为:

  • 您正在更改代码,可能会更改某些内容或忘记删除它,并且
  • 当有更好的调试选项时,就没有必要了。

不要相信任何声称自己从来不用console.log()的人!日志记录又快又脏,但是每个人都在某个时候使用它。使用你喜欢的任何工具或技术。修复一个 bug 比你采用什么方法找到它更重要。

使用第三方日志系统

第三方日志记录系统提供了更复杂的功能,如消息传递级别、详细程度、排序、文件输出、分析、报告等等。流行的解决方案有小屋日志级别摩根皮诺信号故事板追踪器温斯顿

使用 V8 检查器

V8 JavaScript 引擎提供了一个调试客户端,您可以在 Node.js 中使用它

node inspect app.js

调试器在第一行暂停,并显示 debug >提示符:

$ node inspect .\mycode.js
< Debugger listening on ws://127.0.0.1:9229/143e23fb
< For help, see: https://nodejs.org/en/docs/inspector
<
 ok
< Debugger attached.
<
Break on start in mycode.js:1
> 1 const count = 10;
  2
  3 for (i = 0; i < counter; i++) {
debug> 

输入 help 查看命令列表。您可以通过输入以下命令来逐步完成应用程序:

  • 控制c :继续执行
  • 下一条n :运行下一条命令
  • 步骤步骤:进入被调用的函数
  • outo :跳出一个函数,返回调用语句
  • 暂停:暂停运行代码
  • watch('myvar') :观察一个变量
  • 设置断点()sb() :设置断点
  • 重启:重启脚本
  • 。退出Ctrl | Cmd + D :退出调试器

不可否认,这种调试方法既耗时又笨拙。只有在没有其他选择的时候才使用它,比如当你在一个远程服务器上运行代码并且不能从其他地方连接或者安装额外的软件的时候。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

T2】

使用 Chrome 浏览器调试 Node.js 代码

上面使用的 Node.js inspect 选项启动一个监听本地主机端口 9229 的 Web 套接字服务器。它还启动了一个基于文本的调试客户端,但也可以使用图形客户端——例如内置于谷歌 Chrome 的客户端和基于 Chrome 的浏览器,如 Chromium、Edge、Opera、Vivaldi 和 Brave

要调试典型的 web 应用程序,请使用–inspect 选项启动它,以启用 V8 调试器的 Web 套接字服务器:

node --inspect index.js

注意:

  • index.js 被认为是应用程序的入口脚本。
  • 确保使用带双破折号的--inspect,以确保不会启动基于文本的调试器客户端。
  • 如果您想在文件更改时自动重启应用程序,可以使用 nodemon 而不是 node。

默认情况下,调试器将只接受来自本地计算机的传入连接。如果您在另一个设备、虚拟机或 Docker 容器上运行应用程序,请使用:

node --inspect=0.0.0.0:9229 index.js

node inspect

node inspect option.

您还可以使用--inspect-brk而不是--inspect在第一行暂停处理(设置断点),这样您就可以从头开始单步执行代码。

打开基于 Chrome 的浏览器,在地址栏输入chrome://inspect查看本地和联网设备:

Chrome inspect tool

Chrome inspect tool.

如果 Node.js 应用程序没有作为远程目标出现,或者:

  • 单击为节点打开专用的 DevTools 并选择地址和端口,或者
  • 勾选发现网络目标,点击配置,然后添加运行设备的 IP 地址和端口。

单击目标的 inspect 链接以启动 DevTools 调试器客户端。任何使用 DevTools 进行客户端代码调试的人都应该对此很熟悉:

Chrome DevTools

Chrome DevTools.

切换到信号源面板。您可以通过点击 Cmd | Ctrl + P 并输入其文件名(如 index.js)来打开任何文件。

但是,将项目文件夹添加到工作区更容易。这允许您直接从 DevTools 加载、编辑和保存文件(您是否认为这是一个好主意是另一回事!)

  1. 点击 +将文件夹添加到工作区
  2. 选择 Node.js 项目的位置
  3. 点击同意允许文件更改

现在,您可以从左侧目录树中加载文件:

Chrome DevTools Sources panel

Chrome DevTools Sources panel.

单击任意行号设置由蓝色标记表示的断点。

调试基于断点。它们指定调试器应该在哪里暂停程序执行,并显示程序的当前状态(变量、调用堆栈等)。)

您可以在用户界面中定义任意数量的断点。另一种选择是放置一个调试器;语句,该语句在附加调试器时停止。

加载并使用 web 应用程序到达设置断点的语句。在这里的示例中, http://localhost:3000/ 在任何浏览器中打开,DevTools 将在第 44 行暂停执行:

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

Chrome breakpoint

Chrome breakpoint.

右侧面板显示:

  • 一排动作图标(见下文)。
  • 一个监视窗格允许你通过点击 + 图标并输入它们的名称来监视变量。
  • 一个断点窗格显示所有断点的列表,并允许启用或禁用它们。
  • 一个范围窗格显示所有局部、模块和全局变量的状态。你会经常检查这个窗格。
  • 一个调用栈窗格显示了到达这一点所调用的函数的层次结构。

在断点处暂停的上方显示一行动作图标:

Chrome breakpoint icons

Chrome breakpoint icons.

从左到右,它们执行以下操作:

  • 继续执行:继续加工,直到下一个断点
  • 步过:执行下一条命令,但停留在当前代码块内——不要跳到它调用的任何函数中
  • 进入:执行下一条命令,根据需要跳转到任意功能
  • 步出:继续处理到函数结束,返回调用命令
  • 步骤:类似于步骤进入,除了它不会跳转到异步功能
  • 取消激活所有断点
  • 异常暂停:发生错误时暂停处理。

条件断点

有时有必要对断点进行更多的控制。假设您有一个完成了 1000 次迭代的循环,但是您只对最后一次迭代的状态感兴趣:

 for (let i = 0; i < 1000; i++) {
  // set breakpoint here
} 

而不是点击恢复执行 999 次,你可以右击该行,选择添加条件断点,输入一个条件比如i = 999:

Chrome conditional breakpoint

Chrome conditional breakpoint.

Chrome 以黄色而非蓝色显示条件断点。在这种情况下,断点仅在循环的最后一次迭代时触发。

日志点

日志点有效实现 console.log(),无需任何代码!当代码执行任何一行时,都可以输出一个表达式,但它不像断点那样暂停处理。

要添加日志点,右击任意一行,选择添加日志点,输入表达式,如'loop counter i', i:

Chrome logpoint

Chrome log point.

在上面的例子中,DevTools 控制台输出loop counter i: 0loop counter i: 999

使用 VS 代码调试 Node.js 应用程序

VS Code 或 Visual Studio Code,是微软的免费代码编辑器,它在网络开发者中很受欢迎。该应用程序可用于 Windows、macOS 和 Linux,并使用 web 技术在电子框架中开发。

VS 代码支持 Node.js,内置调试客户端。大多数应用程序不需要任何配置就可以调试;编辑器将自动启动调试服务器和客户端。

打开启动文件(如 index.js),激活运行调试窗格,点击运行调试按钮,选择 Node.js 环境。单击任一行激活显示为红色圆圈图标的断点。然后,像以前一样在浏览器中打开应用程序——当到达断点时,VS 代码停止执行:

VS Code breakpoint

VS Code breakpoint.

变量观察调用栈断点窗格与 Chrome DevTools 中显示的类似。 Loaded Scripts 窗格显示哪些脚本已经被加载,尽管许多脚本在 Node.js 内部。

操作图标工具栏允许您:

  • 继续执行:继续加工,直到下一个断点
  • 步过:执行下一个命令,但停留在当前函数中——不要跳到它调用的任何函数中
  • 进入:执行下一条命令,跳转到它调用的任何函数
  • 步出:继续处理到函数结束,返回调用命令
  • 重启应用程序和调试器
  • 停止应用程序和调试器

和 Chrome DevTools 一样,你可以右击任意一行来添加条件断点日志点

有关更多信息,请参考 Visual Studio 代码中的调试。

VS 代码高级调试配置

如果您想要在另一个设备、虚拟机上调试代码,或者需要使用其他启动选项(比如 nodemon ),那么可能需要进一步配置 VS 代码。

VS 代码将调试配置存储在项目的.vscode目录下的 launch.json 文件中。打开运行调试窗格,点击创建 launch.json 文件,选择 Node.js 环境生成该文件。提供了一个配置示例:

VS Code debugger configuration

VS Code debugger configuration.

可以将任意数量的配置设置定义为"configurations"数组中的对象。点击添加配置… 并选择合适的选项。

单个 Node.js 配置可以:

  1. 启动流程本身,或者
  2. 连接到调试 Web Socket 服务器,可能运行在远程机器或 Docker 容器上。

例如,要定义一个 nodemon 配置,选择 Node.js: Nodemon Setup 并在必要时更改“程序”入口脚本:

{
  // custom configuration
  "version": "0.2.0",
  "configurations": [
    {
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "name": "nodemon",
      "program": "${workspaceFolder}/index.js",
      "request": "launch",
      "restart": true,
      "runtimeExecutable": "nodemon",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "type": "pwa-node"
    }
  ]
} 

保存launch.json文件, nodemon (配置“名称”)出现在运行和调试窗格顶部的下拉列表中。单击绿色的 run 图标开始使用该配置,并使用 nodemon 启动应用程序:

VS Code debugging with nodemon

VS Code debugging with nodemon.

和以前一样,您可以添加断点、条件断点和日志点。主要区别在于,当文件被修改时,nodemon 会自动重启服务器。

更多信息,请参考与代码启动配置

以下 VS 代码扩展还可以帮助您调试远程或隔离服务器环境中承载的代码:

  • 远程容器:连接到 Docker 容器中运行的应用程序
  • 远程— SSH :连接到运行在远程服务器上的应用程序
  • Remote — WSL :连接到运行在 Windows 子系统 for Linux (WSL)上的应用程序。

其他 Node.js 调试选项

Node.js 调试指南为一系列文本编辑器和 ide 提供建议,包括 Visual Studio、JetBrains WebStorm、Gitpod 和 Eclipse。Atom 提供了一个节点调试扩展,将 Chrome DevTools 调试器集成到编辑器中。

一旦您的应用程序上线,您可以考虑使用商业调试服务,如 LogRocketSentry.io ,它们可以记录和回放真实用户遇到的客户端和服务器错误。

需要一些调试应用程序的帮助吗?🐛从这里开始👇

T2】

摘要

从历史上看, JavaScript 调试一直很困难,但是在过去的十年中已经有了巨大的改进。这个选择和为其他语言提供的选择一样好——如果不是更好的话

*使用任何实用的工具来定位问题。使用 console.log()快速查找 bug 并没有错,但是对于更复杂的问题,Chrome DevTools 或 VS 代码可能更好。这些工具可以帮助您创建更健壮的代码,并且您将花费更少的时间来修复错误。

你信誓旦旦的 Node.js 调试实践是什么?在下面的评论区分享吧!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。*

2022 年最受欢迎的 10 种 Node.js 应用

原文:https://kinsta.com/blog/node-js-apps/

Node.js 已经存在了一段时间,有许多记录证明了它在构建和扩展企业级应用程序时是多么高效和快速。几家领先的技术公司开发的这些 Node.js 应用程序通过高效、简单、灵活的 API 解决了业务需求。

它也是协作开发的优秀工具,允许用一种语言开发产品的前端和后端,从而允许一个统一的 JavaScripters 团队。

在本文中,我们将通过示例讨论十种流行的 Node.js 应用程序。我们还将聚焦使用 Node.js 的顶级领先公司,以帮助您确定为什么应该使用 Node.js。

我们开始吧!

Node.js 是什么?

Node.js 是一个异步事件驱动的 JavaScript 运行时引擎,旨在构建可扩展的网络应用。这是一个快速、轻量级、高效和可扩展的开发环境,由 Chrome 的 V8 JavaScript 引擎构建。

自从拉恩·达尔在 2009 年首次发布 Node.js 以来,它在财富 500 强企业中的使用量和普及率都有了巨大的增长。

对 Node.js 好奇?👀了解其快速、高效和灵活的 API 如何使其成为许多企业的首选✅ 点击推特

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

为什么要用 Node.js?

由于其单线程和实时推送架构,开发人员主要将 Node.js 用于非阻塞、事件驱动的应用程序和服务器。它对于开发传统的 web 应用程序后端和 API 也非常有用。

以下是您可能希望使用 Node.js 以及它适合构建应用程序的几个原因。

可量测性

Node.js 允许您使用微服务架构和容器化来构建随业务扩展的应用程序。您几乎不费吹灰之力就可以实现可伸缩性和灵活性。

表演

Node.js 使用 Chrome 的 V8 引擎提高了性能。这是一个高性能系统,这就是为什么优步等公司在 2009 年的早期版本中采用了它。

微服务

Node.js 的微服务特性对于可维护性来说是一个巨大的优势。如果你能把一个代码库分成小块,那么维护起来就比一个臃肿的代码库简单多了。

可用性

由于 Node.js 的微服务架构、在前端和后端使用一种编程语言的能力,以及通过 NPM 提供的数百万个库来满足您的确切开发需求,因此使用 node . js 可以优化和加速 web 应用程序开发过程。
T3】

构建 Node.js 应用的顶级公司

下面列出了一些在服务器上运行 Node.js 来支持企业应用程序的热门公司。

商务化人际关系网

A screenshot of LinkedIn's homepage

LinkedIn

LinkedIn 是一种社交媒体服务,用于职业联系和职业发展。它的目标是寻求职业发展的候选人和寻找有竞争力的候选人的公司。

Linkedin 开始只在他们的移动应用程序中使用 Node.js,后来将整个代码库迁移到它上面。他们还记录了比之前的 Ruby on Rails 快 20 倍的应用速度。

网飞

A screenshot of Netflix's homepage

Netflix

网飞是一个拥有数百万用户的视频流媒体平台,允许使用任何智能设备或平台的流媒体电影和电视节目。

据网飞称,由于 Node.js 的模块化,他们用 node . js 构建了自己的用户界面。使用 Node.js 时,网飞的启动时间比快了两倍

超级的

A screenshot of Uber's homepage

Uber

优步是一款国际乘车和交通网络应用。显而易见,优步已经改变了运输业。它在 85 个国家和全球 900 多个城市提供服务,每天完成超过 1400 万次旅行。

最重要的是,优步也是 Node.js 的早期采用者

采用它们的主要原因是因为 Node.js 拥有易于错误检查、卓越的调试、更快的处理速度和持续的开发。

这些特性促进了优步的开发运营,使他们几乎可以立即修复错误,而无需重启应用程序。

贝宝

A screenshot of PayPal's homepage

PayPal

PayPal顶级在线支付系统之一,为许多受支持国家的数百万用户提供值得信赖的支付服务。PayPal 使用 Node.js 构建应用程序中面向用户的内容部分。

Node.js 统一了每个应用程序前端和后端的 JavaScript。最值得注意的是,PayPal 喜欢 Node.js 的地方在于它有助于他们的开发过程。

根据 Brainhub 的消息,Node.js 为 PayPal 提供了更快的网络应用加载时间,比最初基于 Java 的应用快了近一倍,代码行数减少了 33%,文件数量减少了 40%。

浏览器名

A screenshot of Mozilla Personas' homepage

Mozilla Personas

Mozilla Firefox 是第二受欢迎的网络浏览器。Mozilla 使用 Node.js 作为他们的主要语言,他们的许多 web 应用程序都使用它。例如,Mozilla Persona 是用 Node.js 构建的跨平台登录技术

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

10 种流行的 Node.js 应用程序

下面是我们精心挑选的可以构建的 10 种 Node.js 应用程序。

实时协作工具

Node.js 是一个强大的引擎,用于创建实时协作工具,从协同工作应用程序到项目管理、视频和音频会议以及协作文档编辑。

这解释了为什么 Node.js 是大型科技公司拥有的许多流行协作工具的基础,如用于项目管理的 Trello 和用于小组聊天和远程团队通信的 Slack。

Node.js 的异步和基于事件的架构提供了基础,非常适合构建和扩展协作应用程序。

单页应用程序

单页应用程序(SPA)对于 web 开发来说并不是新概念。这是一个流行词,描述了一种方法,其中整个应用程序适合单个页面,具有更好的开发人员体验。

Node.js 非常适合 spa,因为它可以更快、更高效地处理异步调用和繁重的输入/输出(I/O)工作负载。为了实现视图和服务器之间的无缝数据转换,Node.js 事件循环可以“延迟”来自客户端的多个并发请求,从而实现平滑处理。

Node.js 也是利用其数据驱动方法构建 SPA 后端的绝佳选择。我们可以使用 JavaScript 框架比如 Express.js ,Adonis.js,或者 Koa 来开发一个复杂的数据密集型 SPA 后端

实时应用

构建实时网络应用程序是 Node.js 的最佳功能之一。从构建实时聊天应用程序如即时消息(IM)和互联网中继聊天(IRC)应用程序到构建复杂的实时应用程序,您都可以完成。

Node.js 提供了使用事件 API 构建和部署实时和网络应用程序的基本功能。它可以创建一个名为发射器的对象,该对象定期发射命名事件,并且可以被事件处理程序监听。

由于其基于事件的体系结构,Node.js 可以有效地使用 WebSockets 协议,促进服务器和客户端之间的实时双向通信。

Node.js 通过诸如 Socket.io 和 WebSocket-node 等库提供了出色的 WebSockets 支持,您可以使用这些库快速有效地创建和部署实时聊天

基于位置的应用

Node.js 的异步特性及其提供实时更新的能力使其成为构建基于位置的应用程序的首选。

需要一流的,快速的,安全的托管你的新 WordPress 网站?Kinsta 提供超快的服务器和来自 WordPress 专家的 24/7 世界级支持。查看我们的计划

2020 年,基于位置的应用数量有所增加。这些应用程序大多使用 Node.js 和其他相关堆栈,因为 Node.js 具有基于事件的架构和异步编程等特性,可用于构建实时和网络应用程序。

流媒体应用

应用程序流是一个按需下载部分应用程序的过程,不会使服务器或用户的本地计算机过载。

有了 stream API, Node.js 可以轻松处理实时数据流,这是一个流应用的主要特性。Node.js 还可以提供服务器和客户端之间的快速数据同步,这通过使用 Node.js 事件循环最小化延迟来改善用户体验。

Node.js 提供了一个可读和可写的流接口,您可以使用它来高效地处理数据流。

物联网

自 2012 年物联网兴起以来,Node.js 已成为为私有和公共物联网系统构建企业和组织级解决方案的首选引擎。

Node.js 可以处理遍布互联网的数百万个物联网设备发出的多个并发请求和事件,这是任何物联网设备的本质属性。

例如,Skycatch 使用 Node.js 为其专门的无人机提供动力,这些无人机拍摄建筑工地照片并将其转化为 3D 模型——如果没有 Node.js,这一壮举将更难完成

微服务架构

将一个应用程序分解成独立的模块化服务组,每个服务作为一个独特的进程运行,这称为微服务。

Node.js 对微服务架构有很好的支持,并鼓励将大型复杂的应用程序拆分成较小的独立工作单元。

Node.js 的微服务架构大大减少了开发时间,并提高了应用程序的可维护性、可伸缩性和效率。PayPal 通过利用 Node.js 构建世界领先的在线支付解决方案证明了这一点。

复杂的金融科技应用

要开发一个成功的金融科技应用,你必须有安全意识,因为金融科技应用很容易受到黑客的攻击。

Node.js 有专门的安全工作组负责所有的安全和漏洞更新,使得开发企业级、可扩展的 fintech 应用非常安全可靠。

PayPal 和 Capital One 等公司信任 Node.js 在构建和扩展具有最高安全需求的企业级金融科技应用程序方面的安全性。

电子商务应用

电子商务应用程序也需要更快的加载时间和高级网络开发语言来处理它们产生的数百万流量。

易贝和 Groupon 使用 Node.js 来开发和扩展他们的企业级电子商务平台,将页面加载时间减少到最低限度。

由于将代码库从 Ruby on Rails 转移到 Node.js,Groupon 的页面加载时间减少了 50%。

内容管理系统

内容管理系统(CMS)并不新鲜,尽管 CMS 行业已经有了大量的改进。

Node.js 是一个强大的引擎,用于开发和扩展复杂的分布式 CMS 应用程序,如用于在整个互联网上共享和分发内容的 Strapi

另一个流行的 Node.js app 是 Medium。截至 2019 年, Medium 每月吸引近 2 亿次访问,这需要一个非常可扩展的解决方案,而这正是 Node.js 带来的。

想了解更多流行的 Node.js 应用类型?你来对地方了。😌

摘要

我们已经讨论了十种最受欢迎的 Node.js 应用程序,以及用这个运行时引擎开发的几个流行的应用程序。您也已经了解了许多顶级领先的技术公司如何以及为什么使用 Node.js 来驱动他们的服务器。

希望这能让您对 Node.js 的受欢迎程度和可伸缩性有所了解。在开发下一个应用程序时,一定要考虑它。

你有正在使用 Node.js 的项目吗?在评论区告诉我们,继续编码!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

Node.js 开发者工资平均多少?看看 2022 年的数据

原文:https://kinsta.com/blog/node-js-developer-salary/

需要高薪工作的开发者应该看看 Node.js 。这种流行的 JavaScript 工具已经存在了几十年,但是对掌握它的人的需求仍然很大。

您有兴趣成为 Node.js 开发人员并进一步探索 JavaScript 吗?薪水值得你花时间吗?本文将回答许多关于 Node.js 的常见问题。我们还包括各种统计数据,以帮助您决定这是否是您的职业道路。

激动吗?我们开始吧!

Node.js 是什么?如何使用?

JavaScript 一直以来都是一种通用的编程语言,这也是为什么它是世界上最流行的语言之一,如果不是 T2 最流行的话。虽然它以创建高级客户端脚本的能力而闻名,但您也可以使用它通过合适的工具在服务器端创建后端应用程序。

Node.js 是一个后端 JavaScript 运行时环境——一个允许您在 web 浏览器之外编写服务器端和客户端 JavaScript 的程序。

Node.js

Node.js.

与 PHP 和 Python 相比,这种方法有几个显著的优势——node . js 函数不会阻塞(它们并发运行)。相比之下,每个 PHP 或 Python 命令都会停止其他命令,直到它执行完毕。换句话说,JavaScript 服务器应用程序可以更快,实时性更好。

Node.js 是开源的,免费的,所以开发人员喜欢它,尤其是那些想把他们的编码提升到一个新水平的 JavaScript 开发人员。雇用这些开发人员的人对今天更快、实时、事件驱动的服务器感兴趣,因此 Node.js 开发人员需求量很大。

Interested in working as a Node.js developer? 👀 Read this before you start applying for jobs 👩‍💻Click to Tweet

Node.js 开发者是做什么的?

Node.js 开发人员有一套独特的职责和技能。作为一份要求你了解各种技术的更复杂的工作,学习必要的技能更具挑战性,但报酬也更高。

下面,我们列出了 Node.js 开发人员的主要需求。你需要了解 Node.js(以及 JavaScript),但是如果你想被雇佣的话,还有更多。如果你想得到一份 Node.js 开发人员的工作,请研究一下这些技能:

  • 精通 JavaScript 和 Node.js 技术,以及关于流行框架和其他扩展的工作知识
  • 了解后端技术,能够使用 Node.js 构建服务器端应用程序
  • 使用数据库的能力
  • 前端技术(如 HTML 和 CSS )和在客户端使用 JavaScript 的技能
  • 安全编程标准
  • 沟通和组织能力以及与其他开发人员合作的能力

你可能还需要一个计算机科学领域的学士学位或更好的学位,尽管不是所有的工作都需要这个,如果你有实践经验来弥补的话。

作为 Node.js 开发人员,您通常会在服务器端工作,但是您可能会与前端开发人员合作。这样看来,Node.js 开发就非常像是全栈开发的一种更加专业化的形式。

您可能不只是在使用 Node.js,而是在使用整个服务器。因此,如果你对后端或全栈开发以及 JavaScript 感兴趣,这可能是适合你的工作。

也可以使用 Node.js 开发前端应用;只是程序的一个不太常见的用法。如果你觉得这个想法更吸引人,你还是可以找到工作的。

Node.js 需求量大吗?

Node.js 一直很受欢迎,但是最近你可能越来越多地听说它。

JavaScript 本身是一种很有潜力的脚本语言。它一直在 TIOBE 指数的前十名中排名,所以如果你想挑选一门有就业前景的语言,这是一个不错的选择。

Node.js 在 2019 年和 2020 年栈溢出开发者调查中成为最常用的框架,超过 50%的受访者使用该框架。在 2021 中,受欢迎程度有所下降,但它仍然是第六大最受欢迎的技术,而对 Node.js 的工作搜索增长了 57%

Job searches for Node.js

Job searches for Node.js.

尽管如此,寻找 Node.js 开发者的雇主经常发现他们无法雇佣足够的开发者来满足他们的需求。这里的高需求和低供给会导致高于平均水平的工资,更容易找到工作。

Node.js 可能不是最热门的职业,但很明显这不仅仅是一种趋势。如果你想学习一门能提供稳定高薪工作的技术,Node.js 将是一个绝佳的选择。

Node.js 开发者平均薪资是多少?

Node.js 开发人员的工资较高。这是由于熟练的 Node.js 开发人员和希望雇佣他们的人之间的差距。自己看:

  • 人才:11.7 万美元/年,低的 10 万美元,高的 14.6 万美元。
  • glass door:88k/年,低的 68k,高的 114k。
  • zip recruiter:11.4 万美元/年,低的 7.3 万美元,高的 15.5 万美元。
  • 工资等级:10.5 万美元/年,最低 6.7 万美元,最高 11.3 万美元。

把这些放在一起,你会得到 10.6 万美元/年的平均估计工资。除了一个来源之外,所有来源都列出了超过 10 万美元的年薪,这是一个好迹象。

这一工资比业内类似的开发工作略高,也比求职者过饱和的热门职位高很多,如 PHP 开发人员WordPress 开发人员

Average Node.js developer salary

Average Node.js developer salary.

但是类似的工作比如全栈或者 JavaScript 开发呢?以及 Node.js 开发者薪资看起来如何取决于地点和经验水平?我们来看看数据。

Node.js 开发人员薪资与 JavaScript 开发人员薪资

如果你已经打算学习 JavaScript,你可能想知道 JavaScript 开发人员的工资与 Node.js 开发人员相比如何。专业化的工作往往比一般的工作,如网络开发员工资高,数字也支持这一点。以下是统计数据:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

  • 实际上:11 万美元/年,基于 400+报告的工资
  • glass door:91,000 美元/年,最低 5.4 万美元,最高 15.2 万美元
  • zip recruiter:7.1 万美元/年,最低 2.4 万美元,最高 13.4 万美元
  • 工资等级:8.2 万美元/年,最低 5.4 万美元,最高 12.7 万美元

Average salary a Javascript developer makes

Average salary a Javascript developer makes.

平均年薪为 8.9 万美元,而 Node.js 的平均年薪为 10.6 万美元。如你所见,如果你想赚更多的钱,专精会好很多。利基技能集更难开发,但它比学习一门编程语言能让你走得更远。

按经验划分的 Node.js 开发人员工资

经验水平会对你的最终薪水产生重大影响。雇主愿意为有几十年经验的开发人员支付高价,而且你可以期待你的薪水随着你花更多的时间练习你所选择的技能而增加。

但有时,初级工资与平均工资相比微不足道,以至于很难获得足够的技能来赚取体面的工资。Node.js 也是这样吗?

根据 FullStack Labs 的数据,初级 Node.js 开发者平均收入 86k 美元/年;拥有 4-6 年经验的中级开发人员年薪为 99k 美元,高级开发人员年薪为 117k 美元。

Average Node.js developer salaries as of August 2020

Average Node.js developer salaries as of August 2020.

在你的整个职业生涯中,从初级到高级,你的工资可能会跃升至每年 3 万美元。即使是初级开发人员的工资也比许多类似的开发工作高一点,但请记住 Node.js 是一个需要大量技术技能的专业职业,因此对初学者来说更具挑战性。

Node.js 按地点列出的薪金

如果有一件事会对你的薪水产生巨大影响,那就是你在世界上的居住地。许多薪资统计数据都是以美国为中心的,所以如果你住在美国以外的地方,看看 Node.js 的薪资列表:

  • 瑞士:9.7 万美元/年。/年)
  • 美国:9.2 万美元/年
  • 挪威:6.3 万美元/年(54.9 万克朗/年)
  • 德国:6.3 万美元/年(5.4 万欧元/年)
  • 加拿大:5.8 万美元/年(7.3 万加元/年)
  • 澳大利亚:5.8 万美元/年(7.9 万澳元/年)
  • 瑞典:57000 美元/年(498000 克朗/年)
  • 荷兰:5.6 万美元/年(4.8 万欧元/年)
  • 奥地利:5.6 万美元/年(4.8 万欧元/年)
  • 英国:5.4 万美元/年(3.9 万美元/年)
  • 芬兰:5.2 万美元/年(4.4 万欧元/年)
  • 爱尔兰:5.2 万美元/年(4.4 万欧元/年)
  • 比利时:4.9 万美元/年(4.2 万欧元/年)
  • 法国:4.7 万美元/年(4 万欧元/年)
  • 中国:4.4 万美元/年(28.2 万美元/年)
  • 新加坡:4.3 万美元/年(5.9 万新元/年)
  • 丹麦:4.2 万美元/年(36.8 万克朗。/年)
  • 意大利:3.5 万美元/年(3 万欧元/年)
  • 西班牙:3.5 万美元/年(3 万欧元/年)
  • 保加利亚:2.3 万美元/年(BGN 3.8 万美元/年)
  • 葡萄牙:2.3 万美元/年(2 万欧元/年)
  • 墨西哥:1.5 万美元/年(30.6 万美元/年)
  • 俄罗斯:14,000 美元/年(1m₽/year)
  • 印度:每年 9 万美元(₹665k/year)
  • 印度尼西亚:6000 美元/年(9200 万印尼盾/年)
  • 罗马尼亚:5000 美元/年(19000 卢比/年)
  • 乌克兰:千美元/年(₴28k/year)

自由职业者 Node.js 开发者工资

自由职业者会给你的潜在薪水带来一些变数。当你被一家公司聘用时,更安全的保证是你的工资数字将更接近平均水平,你将永远知道你每个月都有工资。

需要一流的,快速的,安全的主机为您的新电子商务网站?Kinsta 提供超快的服务器和来自 WooCommerce 专家的 24/7 世界级支持。查看我们的计划

但是如果你选择自由职业,你能得到多少客户,以及你的收费都取决于你。不能保证你能吸引足够多的客户来养活自己。

另一方面,如果你能建立一个成功的自由职业企业,你可能会发现你的收入远远超过你在一家支付固定工资的公司的收入。

那么,这些数字看起来如何?

根据 ZipRecruiter 的说法,自由职业 Node.js 开发者每年挣 113,000 美元或每小时 54 美元。CodeMentor 的估计甚至更为慷慨:它列出了 81-100 美元(16.8 万-20.8 万美元/年,假设每周工作 40 小时)的平均时薪和 61-80 美元(12.7 万-16.6 万美元/年)的中值时薪。

Average hourly rate for Node.js developers

Average hourly rate for Node.js developers.

这些估计值远远高于 Node.js 的平均工资,即使是高级 Node.js 开发人员也是如此。作为一名自由职业者起步可能很有挑战性,但是如果你有办法并且愿意尝试,它可能会最终导致一个利润丰厚的职业生涯。

远程 Node.js 薪水

随着远程工作越来越受欢迎,尤其是在科技行业,你可能会想,你是否会和远程工作挣得一样多,或者是否从事一份有薪的、面对面的工作更好。

它还与自由职业密切相关,而自由职业往往更为遥远,这可能会使数据有些失真。但是,传统的有薪工作也越来越遥远,公司正在寻找更多在家工作的人来填补空缺。

ZipRecruiter 列出了远程工作的平均年薪为 11.4 万美元,比 Node.js 开发人员的平均年薪高得多。 Talent.com 的估计甚至更高,为 135,000 美元/年,有经验的开发人员年薪高达 145,000 美元/年,入门级职位起薪为 88,000 美元/年。

Arc 的估计更残酷一些:它列出的远程 Node.js 开发人员的平均工资仅为 7.3 万美元/年,高年级学生仅为 8.6 万美元/年,低年级学生甚至更低,为 6 万美元/年。

Average Node.js developer salary for those who work remotely

Average Node.js developer salary for those who work remotely.

就目前情况来看,远程工作似乎仍在行业中找到了立足之地,其可用性可能会因许多情况而有很大差异。你最终可能会比平均水平挣得多,也可能挣得少得多。最好的建议是让你的选择保持开放,寻找报酬合理的工作。

Node.js 工资与前端、后端和全栈开发人员工资

您可能想知道 Node.js 与前端、后端和全栈开发人员等类似工作相比如何。您可能会对全栈开发特别感兴趣,因为 Node.js 的体验在许多方面是相同的。

由于 Node.js 开发是一个更专业化的工作,所以很有可能有更高的工资。但是让我们比较数据,看看它看起来怎么样。

根据工资等级,前端开发人员每年挣75k 美元,而后端开发人员每年挣81k 美元。最后,我们有全栈开发人员工资,平均每年 97k 美元,比 Node.js 开发少 9k 美元。

Back end developer salaries according to Payscale

Back-end developer salaries according to Payscale.

您可能已经知道,前端开发人员在工资方面往往吃亏,而全栈开发人员的工资通常不足以补偿他们更广泛的技能。

如果你想在学习 Node.js 的过程中获得公平的报酬,那么专攻 node . js 开发或类似的工作通常是最好的选择。

Node.js has been around for decades, but the demand for people who can master it is still going strong. 👩‍💻 Learn how much you could make as a Node.js developer here ⬇️Click to Tweet

摘要

平均年薪为 10.6 万美元,从事 Node.js 开发是值得的。如果你对 JavaScript 感兴趣,想从事专门的技术工作,并对全栈工作感兴趣,它可能适合你。

不确定从哪里开始?你可以随时查看 Node.js 文档,或者寻求 OpenJS 提供的 Node.js 认证。或者,如果你还没有开始学习 JavaScript,看看我们的JavaScript入门指南,从我们的列表中挑选出你最喜欢的代码编辑器

你现在正在寻找 Node.js 和/或 JavaScript 开发人员的职位吗?加入我们不可思议的完全远程的全球团队。Kinsta 总是有个 JavaScript 开发人员职位空缺!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

Node.js vs Golang:哪个最适合你的项目?

原文:# t0]https://kinta . com/blog/node-js-vs-golang/

对于公司和工程师来说,为他们的下一个项目选择完美的技术组合是一项挑战。尤其是对于后端开发——这都是关于构建和扩展 API、库、数据管理和面向用户较少的代码。

两种主要的编程语言脱颖而出,争夺后端开发的头把交椅。您可能已经熟悉 Node.js,它在后端使用了 JavaScript 。但是自从像优步这样的顶级公司迁移到 Google Go 之后,Google Go 或 Golang 也在后端开发行业获得了一席之地。

本文将比较 Node.js 和 Golang,并通过概述两者的优缺点来帮助您做出更好的决定。我们还将提到使用它们的顶级公司和应用程序。最后,我们将根据性能、可伸缩性、错误处理、开发人员的可用性以及每种编程语言的平均工资来比较每种语言。

我们开始吧!

T3】

什么是节点。Js?

Node.js 是一个开源的 JavaScript 引擎,旨在使用 JavaScript 在服务器端构建复杂而简单的可扩展网络应用。Node.js 运行在不同的平台上,比如 Windows、Linux 和 macOS。

Chrome 的 V8 JavaScript 引擎是 Node.js 的基石,因为它在后台解析和运行 Chrome 引擎中的 JavaScript 代码。Node.js 还为构建和部署可伸缩的服务器端应用程序提供了丰富的库。

Screenshot of the Node.js website homepage.

The Node.js website homepage.

最初,Node.js 是作为执行 JavaScript 代码的引擎开发的。它已经发展了多年,支持应用程序前端和后端的全栈开发。仅这个特性就使 Node.js 成为一种革命性的 web 应用程序编程语言。

JavaScript 是一种流行的编程语言,根据 Tiobe 指数(撰写本文时)排名第七。这种受欢迎程度直接影响 Node.js 的受欢迎程度,包括前者在后者的好处和特点。

Golang 是什么?

Golang 的第一个版本是在 2009 年,与 Node.js 相同。Golang 也称为 Go,是一种开源、统计类型、多用途、跨平台、编译和快速的编程语言,由谷歌的工程师开发,通过结合其他编程语言的优势并消除其弱点来解决特定问题。

Screenshot of the Golang website homepage.

The Golang website homepage.

Go 是一种高效的编程语言,在速度和语法方面与 C 编程语言有相似之处。Go 是一种简单明了的编程语法,用于编写可读和可维护的代码。

Golang 也是一种结构化语言,能够充分处理并发编程,具有出色的垃圾收集处理、动态接口和内置的内存安全。

Golang 在最受欢迎的编程语言中平均排名第 13 位,是 2009 年和 2016 年的年度编程语言。2019 年堆栈溢出开发者调查显示,Go 是第 13 大最受欢迎的技术。

什么是节点。Js 用于?

Node.js 是构建简单和复杂网络应用程序的引擎。它可以有效地扩展到任何与网络相关的应用程序。这个基于 JavaScript 的运行时环境有助于创建服务器端环境和网络应用程序。

Node.js 是创建具有双向连接的实时应用程序的绝佳选择,在这种情况下,服务器不会等待 API 返回数据。
T3】

Golang 是用来做什么的?

Golang 是一种多用途编程语言,可以用来创建各种应用程序,包括注重安全性和速度的高度模块化的应用程序系统。

最重要的是,您可以使用 Golang 进行系统编程、大型分布式系统以及高度可扩展的网络应用程序和服务器。它还可以用于基于云的开发、web 应用程序开发以及大数据或机器学习应用。

节点的利与弊。射流研究…

接下来,我们将探讨 Node.js 的优缺点,让您更好地理解这种语言。

赞成者

  • 用于构建可伸缩的 web 应用程序
  • 与 NoSQL 数据库 MongoDB 配合得非常好
  • 简单易学,因为它使用 JavaScript,这也很容易上手
  • 因为内置了事件循环功能,所以用于创建高性能的应用程序
  • 拥有发展最快的社区,每天都有新的功能和软件包问世
  • JavaScript 运行时环境是构建流应用程序的绝佳选择。
  • 它使得缓存单个模块变得轻而易举,并鼓励快速应用。

坏处

  • 调试 Node.js 可能会变得很困难,因为它使用 JavaScript,一种动态类型的语言。使代码错误与变量相关是不可避免的,需要一个有经验的程序员来驾驭 Node.js 的真正本质
  • 它使用异步编程,这看起来很有优势,但是要创建可伸缩的应用程序,需要很高的专业知识。
  • 在 Node.js 中,许多 API 和程序包经历了频繁的更改和更新,这导致了兼容性问题并使开发人员感到困惑。

戈朗的利与弊

接下来,我们将探讨 Golang 的利弊,让您更好地了解 Golang。

赞成者

  • 由于代码易于阅读,应用程序易于维护
  • 受到开发人员的欢迎,因为它具有简洁明了的语法
  • 谷歌积极支持 Golang 的发展。它是谷歌用于构建所有大型项目的官方语言,因此,它得到了所需的所有支持。
  • 由于 Golang 是静态类型的,语言开发人员不容易犯变量错误。
  • 当你在没有适当文档的情况下编写程序时,Go 会提醒你
  • 由于是一种编译语言(解释型语言速度稍慢),性能显著提高
  • 可用于测试和扩展代码的 API
  • 使用 GoMetaLinter 这个便捷的工具进行静态代码分析
  • 支持并发性,这有助于程序员构建高度并行处理的系统

坏处

  • 开发人员需要编写更多的代码来实现 Golang 中的一个简单特性(不提供复杂的抽象;虽然这使得 Go 成为一种简单的语言,但它限制了它的通用性)
  • 由于 Go 不支持泛型,代码重用在 Go 中比在其他语言中更困难。
  • 它没有提供一个内置的 GUI 库来构建 GUI 应用程序(这个缺陷意味着您需要花费大量的精力来连接一个库和您的项目)
  • 与其他一些领先的编程语言相比,社区不够成熟。
  • Go 为复杂的程序消耗更多的计算资源——因为 Go 没有虚拟机(VM ),所以这类程序具有相当大的文件大小

使用 Node 的公司和应用。射流研究…

下面是在其服务器上积极使用 Node.js 的公司和应用程序列表。

  • 网飞
  • LinkedIn
  • 沃尔玛
  • 特雷罗
  • 超级的
  • 贝宝
  • 中等
  • 通过易趣网购买
  • 国家航空与航天局

使用 Golang 的公司和应用

以下是在其服务器上积极使用 Golang 的公司和应用程序列表:

  • 谷歌
  • 超级的
  • 推趣
  • dailymotion
  • SendGrid
  • Dropbox
  • 声音云

节点的比较。Js 对 Golang

表演

性能是每个可扩展系统不可或缺的一部分,这就是开发人员喜欢 Node.js 的原因。为了说明这一点,这里有一些使用 Node.js 开发的最佳应用程序。除了通过缓存获得性能之外,让我们比较一下 Node.js 和 Golang,就绝对速度而言,前者的处理速度更快。

Golang 开发人员强调,Go 的性能与 C 和 C++相同,这很棒,因为 Go 将其代码直接编译为机器码,没有任何虚拟机来减慢编译过程。

Golang 中还有一个内置的垃圾收集器,可以自动释放未使用的内存空间,增加可用内存以加快处理速度。该特性还降低了由于内存泄漏而导致的安全漏洞的风险。

另一方面,Node.js 使用最快的 JavaScript 引擎,称为 V8 。Node.js 中的代码是可重用的,这使得它成为实时更新数据的基于事件的应用程序的首选。这种语言也广泛用于即时消息、视频聊天和在线游戏。

2013 年, Paypal 将其代码库从 Java 迁移到 Node.js,并报告称其页面的服务速度比快了 200 毫秒,平均响应时间减少了 35%。

TypeScript 的静态类型 Node.js 一般比其他编程语言慢。与 Go 不同,Node.js 不能提供 CPU 和内存受限的任务性能,这意味着 Node.js 的版本不能那么具体——它可以表现得很好或很差,这取决于应用程序的性质。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

在这个性能比较中,Go 在编程语言的执行速度以及编译和执行指令的速度方面超过了 Node.js。

可扩展性和并发性

Google 打算开发一种编程语言,从可伸缩性的角度来看,这种语言可以构建沉重而复杂的企业级、生产就绪的应用程序。他们将可伸缩性定义为他们的首要任务,并且他们做到了。

Go 使用 goroutines,它允许可靠和容易地执行线程,并且可以以平滑的方式并发执行。这些 goroutines 使 Go 成为一种完美的可伸缩编程语言。

使用并发,Go 每秒可以处理超过 1000 个请求。仅这个特性就使得 Go 在可伸缩性和并发性方面优于 Node.js。同样值得注意的是 Node.js 是一个单线程异步 JavaScript 引擎。

在 Node.js 单线程架构中,CPU 绑定的任务有时会阻塞事件循环,降低程序速度。结果你得到的是一个很慢的 app,惹恼了用户。

在这个比较中,很明显 Go 优于 Node.js,因为它允许通过 goroutines 实现并发,这导致了比 Node.js 单线程架构更快的进程。

基准

有时候,你可以通过运行不同的任务或算法,计算时间、速度等,来确定最佳的工具或语言。,它需要每种语言来执行。

下面,我们将看一个例子,它显示了 Node.js 与 Go 在不同计算机语言方法和算法下的基准任务性能。

Node.js vs Golang benchmarks table.

Node.js vs Golang benchmarks. (Image source: Intellectsoft)

More of the Node.js vs Golang benchmarks table.

Node.js vs Golang more benchmarks. (Image source: Intellectsoft)

从上面的统计数据中,我们可以观察到 Golang 执行操作所需的时间、内存和 CPU 负载都比 Node.js 少。

错误处理

Node.js 传统上使用处理异常的 try-catch 技术来处理错误,在这种情况下,错误仅在发生时被捕获,开发人员可以更快地调试错误。

Golang 对编译时和运行时错误进行了不同的分离。这种不一致导致了开发人员之间的混乱,并导致了处理异常的标准过程。

然而,Go 开发者认为,在即将到来的 Go 2 版本中,该语言将会有更多的改进,包括更好的错误处理、错误值和泛型。

不过,目前来看,Node.js 在正确处理错误和异常方面明显优于 Golang。

所有的 Kinsta 托管计划都包括来自我们资深 WordPress 开发者和工程师的 24/7 支持。与支持我们财富 500 强客户的同一个团队聊天。查看我们的计划!

难度水平

Node.js 比 Golang 更容易学习,因为它使用 JavaScript,JavaScript 在所有类型的开发人员中很流行,是全球使用最广泛的编程语言。

此外,如果开发人员不熟悉 JavaScript,学习 Node.js 会比 Golang 更容易一些,因为互联网上有大量的 Node.js 课程和内容。

Golang 要求开发人员学习它的具体流程、概念、规则、指针、严格类型、接口、协程等等。Golang 开发人员通常面临更陡峭的学习曲线。

最重要的是,Golang 只是一种后端编程语言。所以,你需要单独雇佣一个前端开发者

通过比较,很明显 Node.js 的学习曲线比 Golang 低。

社区

众所周知,开源项目有大量的开发人员每天都在做贡献,还有大量的社区支持这些项目。Node.js 和 Golang 都是开源的,拥有广泛的开发者支持和社区。

一方面,Node.js 是更成熟的工具,有更强大的社区支持。Node.js 基金会支持 Node.js 的广泛应用;一个专业团队负责监督旨在提高 Node.js 稳定性的安全和长期支持(LTS)计划

GoDaddy 、英特尔、IBM、微软、PayPal、NodeSource 都是 Node.js 基金会和 Node+JS Interactive 的活跃成员,开发者在这里宣布新的改进,改变 Node.js。

截至本文撰写之时,Node.js 拥有 80,300 颗 Github 星,Node.js 下载量超过 10 亿次。

而 Golang 的社区更小,每天都在不断增长。谷歌对 Go 的支持和主办 GopherCon,每年都聚集全球 Go 开发者讨论新的机会和变化,这为迁移到 Golang 提供了一个理由。

在撰写本文时,Golang 拥有 87,600 名 Github 明星(T1 ),甚至比 Node.js 还多,还有大量遍布世界各地的贡献者(T3)。

通过这个对比,很明显 Node.js 比 Golang 更有社区力量,因为它是一个 JavaScript 引擎,JavaScript 更受欢迎。

开发工具

每个人都会同意,每个任务和项目的库和工具的可用性减少了开发时间和成本。

就开发工具的可用性而言,Node.js 是王者。在 JavaScript 生态系统中,有几乎任何你能想到的工具,从执行简单的任务到完成复杂的任务。

仅 NPM 一个国家就有大约 800,000 个针对任何特定情况的现成工具,还有许多尚未发布的工具也接近实用。

Golang 对于后端开发生态系统来说并不陌生,尽管它们是解决特定任务的优秀工具,但没有 Node.js 那么多。

通过我们的比较,很明显 Node.js 比 Golang 拥有更多的可用开发工具,因为它同时支持前端和后端。

开发人员的工资和可用性

寻找 Go 开发者可能很困难,因为这是一种全新的语言,但它是最有前途的语言之一,有着光明的未来。

Node.js 已经非常受欢迎,这要归功于它的 JavaScript 生态系统。对于不同的开发任务,找到 Node.js 开发人员和专家要容易得多。

就每项技术的薪酬而言,我们来看看 Stackoverflow Survey 2020

Golang 的报酬非常高,因为作为一种新的有前途的编程语言,它的稀缺性:

A survey result of the top paying technologies worldwide.

Top paying technologies worldwide. (Image Source: Stackoverflow Survey 2020)

Golang 支付 74,000 美元,比 Node.js 的 53,000 美元多。此外,Node.js 的工作机会比 Golang 更多,需求量也更大。Node.js 是一个 JavaScript 引擎,基于此,JavaScript 的工作可用性已经很高,这使得 Node.js 非常有利可图。

也可以看看美国的对比。

A survey result of the top paying technologies in the USA.

Top paying technologies in the USA. (Image Source Stackoverflow Survey 2020)

从对比中可以明显看出,Node.js 比 Golang 拥有更多的可用开发人员和工作岗位,但 Golang 的薪酬却比 Node.js 高。

你是 team Node.js 还是 Team Golang?👀在这篇文章中探索这两种流行的选择👇

摘要

从上面的分析来看,选择哪种技术更好很有挑战性。我们试图让您了解哪种技术最适合您的项目,或者最适合您公司的文化和流程。

希望这篇文章已经帮助你在 Golang 和 Node.js 之间做出了决定,并且你现在有了一些方向!

你更喜欢用哪种编程语言工作?请在下面的评论中告诉我们。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

Node.js 与 PHP:势均力敌的比较

原文:https://kinsta.com/blog/node-js-vs-php/

Node.js 和 PHP 是两种基本的 web 技术,在 web 开发工作中很常见。两者都对服务器端开发做出了贡献,Node.js 甚至同时服务于客户端和服务器端开发。

PHP 已经为开发者服务了近三十年,现在它为 78%的网络提供支持。相比之下,Node.js 相对较新,但扩展速度非常快,由于其全栈开发能力,成为一种流行的选择。

有一个大问题:你应该为你的下一个项目选择哪一个——新鲜、健壮、快速的 Node.js,还是老化但仍然可靠、高效的 PHP?

嗯,在许多不同的层面上,两者都是很好的选择。但是,你需要了解他们两个,才能明白哪一个是你下一个项目或者你后续学习的更好选择。

查看我们的视频指南 Node.js vs PHP

在本文中,我们将深入探讨 Node.js 和 PHP,讨论这两种 web 技术的所有特性、特征和优势。

为什么我们要比较这两种技术?尽管它们看起来没有直接的相似性,但我们注意到很多用户搜索了“Node.js vs PHP”本文将通过查看它们的关键特性、主要差异和用例来帮助回答这个问题。

我们开始吧!

Node.js 是什么?

令人惊讶的是,一些网络资源提到 Node.js 是 JavaScript 编程语言(js)的一个框架,这无疑在现有和潜在用户中引起了很多困惑。所以我们澄清一下:Node.js 既不是编程语言,也不是 JavaScript 框架。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

Node.js 更像是一个环境,您可以将 JavaScript 作为服务器端脚本工具来执行。打个比方,如果 Node.js 是 Ironman,那么 Node 就是套装,JavaScript 就是里面的人。

Node.js 是一个单线程、开源、跨平台的运行时环境,用于开发快速、可扩展的服务器端和网络应用。它由事件驱动的非阻塞 I/O 架构组成,在 Google V8 JavaScript 运行时引擎上运行。因此,对于实时应用程序开发来说,它是一个高效而理想的工具。

信息

Node.js 在过去几年中有了很大的改进。但是和所有后端技术一样,说服用户升级到最新最好的版本需要很大的努力——我们甚至在 PHP 中看到了这一点。本文只是不比较 Node.js 和 PHP 的最新版本,而是比较它们最流行的版本(以及它们的特性)。

此外,Node.js 是用 C 和 C++编程语言与 JavaScript 一起编写的。这是因为低级 C 语言是构建操作系统、数据库引擎和所有其他与系统编程相关的代码的最有效的编程语言之一。

另一方面,C++有几个特质允许 Node.js 与操作系统通信,直接与服务器建立内部连接,这对于 JavaScript 这样的客户端编程语言来说是不可想象的。

因此,它与 C++交互来管理这些计算机特征,并产生 Node.js,这是一个对服务器端和客户端都非常高效的编程环境。

Should you pick fresh, robust, and fast Node.js, or the aging yet still dependable and efficient PHP? 🤔 Learn more here ✅Click to Tweet

为什么要用 Node.js?

根据 StackOverflow 的 2021 年开发者调查,去年/2021 年有 36.19%的职业开发者使用 Node.js 进行粗放式开发,今年/2022 年有保证数字在增长。这是因为 Node.js 提供了全面的功能,例如:

  • 全栈 JS: Node.js 允许你用 Javascript 在客户端和服务器端都进行编码,产生强大的前端和后端开发组合。这可以说是 node.js 最大的好处。同样,它克服了雇佣两个资源团队的限制,同时您可以为整个项目开发节省大量的资源。

  • 简单: Node.js 学习起来非常简单。如果你是 web 编程的新手,这是一个很好的开始技术。在大量教程和庞大的用户社区的帮助下,你可以快速开始学习。

  • 非阻塞代码:这是选择 node.js 作为你的服务器的最有说服力的理由之一。Node.js 主要是事件驱动的,大部分代码依赖于回调。因此,它允许程序在其他请求可用时暂停或休眠。
    此外,node.js 库和核心 API 提供了开发高性能应用程序的非阻塞调用。此外,这些程序利用 I/O 等待时间来满足其他请求。

  • 快速和可伸缩:它带来了应用程序的大量可伸缩性。因为 Node.js 是单线程的,所以它可以高性能地处理大量并发连接。同样,非阻塞线程执行也让 Node.js 更快更高效。

  • 强大的后端连接: Node.js 是用 C 和 C++开发的,可以直接和服务器建立健壮的连接。

  • 庞大的生态系统:有许多开源 Node.js 包可以帮助您的项目。值得注意的是, NPM 生态系统为你提供了超过一百万个开源 Node.js 包的集合。

  • 物联网协议: Node.js 不需要大量的服务器端内存和资源。因此,软件开发人员可以利用物联网开发来实现跨多个设备的并发链接。此外,Node.js 支持大多数物联网应用程序使用的消息队列遥测传输(MQTT)协议。因此,在后端级别集成独立的第三方设备变得更加容易。

  • 社区支持: Node.js 接受全球用户的支持和贡献,以开源项目的形式即兴扩展平台。因此,社区在不断扩大,为初学者和专业人士提供更多的帮助和资源。

谁用 Node.js?

自 2009 年推出以来,Node.js 已经为几个行业领导者重新创造了一个至关重要的角色。现在各种业务,从创业公司到顶尖公司,都在依托 Node.js。

让我们来认识一些使用 Node.js 的业界大腕:

Node.js 的利与弊

目前,Node.js 是应用最广泛的软件开发技术之一,因为它具有前端和后端开发以及跨平台的能力。

Node.js 的优点

让我们看看使用 Node.js 的所有优点:

  • 可伸缩性: Node.js 集群模块在几个 CPU 内核上提供负载平衡,使得通过更小的模块实现所需的结果变得简单,而不会耗尽您的 RAM。此外,Node.js 实现了一个非阻塞事件循环架构,该架构提供了出色的可伸缩性,并使服务器能够实时执行请求。此外,Node.js 将应用程序分配给多个团队,并使您能够同时定义和分配任务。总的来说,您可以使用更少的资源获得高性能的框架。

  • 跨平台功能:开发者可以将 NW.js 和 Electron 结合起来,创建实时的跨平台 app,不需要为多个平台编写不同的代码。相应地,如果你的开发团队缺乏对 Objective-C 和 C#的深入理解,你也不需要担心;Node.js 可以在没有它们的情况下构建原生应用。此外,谷歌工具可以很好地帮助开发者编码和调试

  • JSON 支持:PHP、Ruby on Rails 等后端技术利用 JSON 格式进行通信;Node.js 做同样的事情,不需要在二进制模型之间转换,而是使用 JavaScript。因此,为 NoSQL 数据库支持创建 RESTful APIs 变得很简单,比如 MongoDB。此外,javaScript 环境通过数据传输标准提供了简单的数据传输连接,从而提高了效率。

  • 缩短上市时间:由于 Node.js 是全栈的、轻量级的、快速的,所以你可以抢时间。除此之外,您的团队还可以从 GitHub 获得大量 Node.js 库、即用型程序和资产。它将减少大量的开发时间和工作。因此,您更有可能缩短上市时间。

  • Google 支持: Node.js 是在 Google 的 V8 JavaScript 引擎上做的,作为前端和后端的开发工具。此外,Google V8 引擎允许 Node.js 在前端同时运行大量 JavaScript 脚本。因此,用 Node.js 检测前端和后端的错误很简单。

Google 将 Node.js 列为最快的运行时系统引擎之一。此外,Google Cloud 为 JavaScript 开发者提供了构建云原生应用的工具。您可以在云运行、云函数和 GKE 上使用 SDK、IDE 内协助和原生运行时支持,以加快应用开发流程。此外,谷歌云可以从头到尾执行你的应用。

Node.js 的缺点

让我们看看使用 Node.js 的所有可能的缺点:

  • 无法处理繁重的计算:到目前为止,Node.js 还不支持多线程编程。然而,它可以处理比 Ruby 复杂得多的应用程序,尽管它并不打算执行长时间运行的计算。同样,多线程密集型计算也会降低性能。因此,Node.js 适合单线程复杂系统;否则会浪费处理能力和时间。
  • API 不稳定:node . js 应用编程接口(API)定期变化,保持不稳定。此外,对于每个新的 API 版本,一些向后不兼容的更改迫使开发人员定期更改他们的访问代码,以应对 Node.js API 的最新版本。
  • 回调地狱: JavaScript 严重依赖回调,因为它的异步本质。因此,分配了一个功能,从一个长队列中一个接一个地执行任务。每个在后台排队的带有单独回调的任务都会产生一个被称为“回调地狱”的大规模回调它直接降低了代码的质量,并且由于一个回调嵌套在另一个回调中,多个级别的回调造成了难以编码的情况。

A screenshot of an example of a Node.js callback in source code.

Node.js callback hell. (Image source: Altexsoft)

PHP 是什么?

PHP 代表超文本预处理器,最初代表个人主页。PHP 是一种面向对象、开源的服务器端脚本语言,主要用作 web 开发工具。

PHP 主要用于创建 web 服务器。然而,它可以在浏览器中执行,也可以通过命令行执行。如果不想在浏览器中显示代码输出,可以在终端中显示。

PHP 使用 Zend 引擎,这是经常使用的最广泛的实现。然而,脸书构建了 PHP 的各种实现,如 parrot、HipHop 虚拟机(HPVM)和 JPHP。

A PHP workflow showing a web browser connecting to web servers.

PHP architecture (image source: PHPTutorial)

如果你想显著提高性能、速度和安全性,你应该使用 PHP 8.08.1 。除了我们的自我修复设置,Kinsta 还支持 PHP 8.0、8.1。

为什么要用 PHP?

根据 StackOverflow 的 2021 年开发者调查,去年超过 22%的专业开发者使用 PHP 进行繁重的编程。许多网络专家预测 PHP 将会成为一种死亡的编程语言,但是它经受住了时间的考验。相当多的用户仍然依赖 PHP 及其一些优秀的特性,包括:

  • 跨平台: PHP 适合大多数主流操作系统,包括 Linux、Windows 和 macOS。同样,PHP 兼容所有主要的 web 服务器,包括 Nginx、OpenBSD 和 Apache。此外,一些云平台,如微软 Azure 和亚马逊 AWS,都支持 PHP。
  • HTML 友好:任何熟悉 HTML 的人都可以很快转向 PHP。在一个页面中,PHP 和 HTML 是可以互换的。PHP 可以放在 HTML 的外部或内部。虽然 PHP 为您的站点增加了额外的功能,但核心设计仍然是 HTML。
  • 服务器端脚本语言:迄今为止,PHP 是使用最多的服务器端脚本语言。它在服务器端而不是客户端解释脚本(比如 JavaScript)。此外,它为每个用户创建了个性化的界面,并将功能扩展到 HTML 之外。除了处理 HTML,它还帮助创建 PDF、GIF、JPEG 和 PNG 文件。
  • 连接所有数据库: PHP 是一种自适应语言。PHP 几乎支持所有数据库,包括 MySQL、 PostgreSQL 、MS SQL、db2、Oracle 数据库、 MongoDB 。因此,它允许开发人员更自由地为正在开发的应用程序确定最合适的数据库。
  • web 兼容性: PHP 兼容大多数 Web 技术,从云服务到无缝 HTML 集成。相应地,所有的主机服务都默认采用 PHP。PHP 的多功能性和灵活性与其他编程语言相当,可以在许多应用程序开发栈中找到。

谁用 PHP?

PHP 象征性地拥有整个互联网。超过 78%的网站都使用 PHP,毫无疑问,PHP 在开发领域的普及率仍然很高。同样,它仍然是一些最大的全球科技公司的关键技术。

让我们看看一些依赖 PHP 的顶级公司:

  1. 脸书
  2. WordPress
  3. 维基百科(一个基于 wiki 技术的多语言的百科全书协作计划ˌ也是一部用不同语言写成的网络百科全书ˌ 其目标及宗旨是为全人类提供自由的百科全书)ˌ开放性的百科全书
  4. Tumblr
  5. 松弛
  6. Etsy
  7. Mailchimp
  8. 日常运动
  9. 闪烁(光)
  10. Spotify

PHP 的利与弊

就像任何脚本语言一样,尽管 PHP 在市场上占主导地位,但它也有很多优点和缺点。接下来我们将详细探讨这些。

PHP 的优点

让我们来看看使用 PHP 的所有可能的优势:

  • 不贵: PHP 是一个免费的开源开发工具,它的工具也是免费的。此外,多种框架,包括 Laravel 和 CodeIgniter,以及诸如 WordPress 和 Drupal 之类的 CMSs,增强了 PHP 的特性,并有助于方便的开发环境。
  • 丰富的文档和资源:你可以访问大量关于 PHP 开发的教程、手册、参考资料和演示项目。无论你是初学程序员还是专业人士,这些资料都会在你困难的时候帮助你。
  • 维护更少: PHP 框架支持模型-视图-控制器(MVC)架构,简化了 web 应用程序的创建和维护。例如,您可以使用 MVC 架构将 web 应用程序划分为模型、视图和控制器。您还可以使用 PHP MVC 框架来分离应用程序的用户界面和业务逻辑。
  • 自动化:您可以将 PHP 绑定用于开发人员基于浏览器的自动化测试场景。该框架适应性强,Selenium web 驱动程序在所有主流浏览器中都能高效工作。此外,PHP 框架的功能和工具可以帮助您自动化日常的 web 开发任务,如缓存、认证、会话管理和 URL 映射,而不会影响效率。
  • 用户友好: PHP 的学习曲线较短,可以快速超越。如果你知道像 C 这样的初级语言,你可以很快掌握 PHP 来进行应用程序开发。即使 PHP 是你的第一语言,你也可以在任何操作系统上安装 PHP 或者在任何服务器上轻松安装 PHP,然后自己尝试一下。

大多数用户选择 PHP 是因为它简单易学,容易理解,并且很受欢迎。相当多的编程语言对于初学者来说是复杂和令人畏惧的,但是 PHP 是组织良好、清晰和流畅的。

PHP 的缺点

让我们看看使用 Node.js 的所有可能的缺点:

  • 过时的方法论:机器学习越来越受欢迎,它是技术的未来。因此,像 Python 这样的语言正在吸引用户。然而,虽然 PHP 有自己的库,但它无法与 Python 的 TensorFlow、Scikit-learn、Theano 和 Keras 库竞争,以构建由机器学习或其旧方法的类似修改支持的 web 应用程序。因此,如果你的应用需要机器学习,PHP 并不是理想的解决方案。
  • 安全缺陷:由于新程序员的准入门槛较低,PHP 在安全方面的声誉不佳。缺乏经验的开发人员创建的网站和应用程序存在潜在的漏洞。因此,这些结果经常会使 PHP 成为一种不太安全的语言。然而,如果你确切地了解 PHP 并且是一个有经验的开发人员,你将获得坚如磐石的 web 安全性。
  • 框架质量:大多数流行的 PHP 框架都是开源的,可以免费使用。因此,web 开发人员可以使用这些 web 框架,而不会增加项目成本。然而,并不是每个框架都在社区中提供相似的优势或特性,并吸引许多开发人员。因此,一些 PHP 框架缺乏适当的支持和资源。

Node.js 与 PHP:势均力敌的比较

现在,我们已经对这两种技术、它们的特性和应用有了一些了解,是时候根据一些特定的参数来比较 Node.js 和 PHP 了。这将有助于您确定特定应用程序开发的最佳选择,方法是说明使用它们是多么有效和简单,以及哪种方法可以为您的开发工作和时间提供最大的回报。

让我们来比较一下它们——node . js 和 PHP。

类似

Node.js 和 PHP 之间的相似之处包括:

  • 应用类型: Node.js 和 PHP 运行在服务器上,处理路由请求。在帮助静态内容、动态网页和数据请求时,可以将它们重叠起来。虽然 PHP 引入了 web 套接字服务器,但 Node.js web 套接字是当今最流行的。Node.js 使用 socket.io ,PHP 使用棘轮。此外,它们都服务于流(Node.js 使用 Stream API 来完成这项工作,您需要为 PHP 编写一些自定义代码)。
  • 可扩展性:你可以扩展 Node.js 和 PHP,因为它们是开源的,并且每个都有一个繁荣的附加组件生态系统。同样,您可以调整源代码,并按照您认为最适合您的项目的方式进行派生。
  • 解释的:node . js 和 PHP 都是解释的,它们都允许您在不中断您的过程的情况下在确切的实现页面上执行开发任务。容易调试、最小化程序大小和动态类型是解释语言提供的好处。
  • 跨平台:node . js 和 PHP 都是平台无关的。它们都可以在 Linux、macOS 或 Windows 上运行,Node.js 甚至可以在 SunOS 上运行。Node.js 的 Docker hub 上有官方的 Docker 镜像,不过你需要直接从命令行运行 PHP。您还可以编译 Node.js 和 PHP 的源代码。
  • 服务:node . js 和 PHP 都服务于 web 请求,并且在服务于 web 套接字方面非常高效。它们可以流畅地管理动态 web 内容,并提供一个交互式的用户友好界面。

目标受众

每种技术都有精确的用户和受众基础。同样,Node.js 和 PHP 也有其特定的受众。Node.js 以更少的努力和更高的 Node.js 薪水吸引对全栈开发感兴趣的现代学习者。与此同时,PHP 面向来自网络上的广泛受众。

这是因为仅 PHP 就驱动了 78.9%的在线网站。嗯,这几乎是整个互联网!另一方面,Node.js 是一个快速增长的潜在全栈 JavaScript 环境,在开发人员和用户中日益流行。

但是,PHP 太庞大了,至今无法攻克。因此,预测最终的赢家很有挑战性。

结构

编程语言框架越好,需要编码的就越少。捆绑的代码、预制的建模 API 和其他元素使您的编程过程变得更加简单和简短。PHP 和 Node.js 都提供不同类型的框架来服务不同的目的。

节点. js

Node.js 在短时间内遇到了库的显著增加,包括 Meteor、Derby、Express、Koa、 Nest 、Sails 等等。这些框架通过减少开发时间和资源使用来提高生产率。值得注意的是,Node.js 在数量上超过了 PHP 框架。

The logos of 14 different Node.js frameworks.

Node.js frameworks. (Image source: MindInventory)

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

在其 27 年的生命周期中,PHP 已经为不同的利基市场积累了丰富的框架库。像 Laravel、CodeIgniter、Symfony、CakePHP 和 Phalcon 这样的 PHP 框架已经为专业开发人员和主流开发机构服务了很长时间。此外,像脸书这样的行业巨头也实现了他们的 PHP 框架版本,如 HipHop。

The logos of 6 different Node.js frameworks.

PHP frameworks. (Image source: MindInventory)

尽管 PHP 几十年来一直以其丰富的框架为全球开发人员服务,但 Node.js 因其现代方法和数量迅速增加的框架而在专业人员中变得越来越受欢迎。

学习曲线

如果你已经知道 JavaScript,你会很快掌握 Node.js 的价值。但如果你从未接触过该语言,更明智的做法是先学习 JavaScript ,然后采用 Node.js 环境。事先了解另一种语言有助于掌握 JavaScript 的基础知识,并使用 Node.js 并行构建服务器。

PHP 很容易学,但是掌握起来很有挑战性。此外,PHP 的怪癖,比如不一致的函数或返回值,比 JavaScript 和 Node.js 的怪癖更容易学习和掌握。

然而,您在学习 Node.js 上投入的时间和精力将会得到回报。因为 Node.js 正变得比 PHP 更流行,知道它将是有价值的。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

速度和性能

在开发一个基本项目时,处理或执行速度通常是无关紧要的;大多数技术足以快速处理执行。但是,如果运行需要更好的算法、编译器或语言的高成本(处理方式)函数,性能就成了一个问题。如果您正在构建运行在低功耗机器上的实时系统,速度和性能就变得至关重要。

我们来看看 Node.js 和 PHP 是如何执行和处理程序的执行的。

节点. js

Node.js 由于其轻量级、高效、事件驱动、非阻塞的 I/O 模型而具有高速的执行速率。然而,就性能而言,它依赖于三个编程“向导”:异步、并发和并行编程。

A graph showing the structure and procedures of a Node.js event loop.

A Node.js event loop. (Image source: Cloudinary)

异步事件驱动的设计风格确保在运行应用程序时同时执行几个动作。Node 的 events 系统使它更加可行和快速,允许服务器响应之前的 API 请求。简而言之,这就是异步编程范式。

A flow chart showing a Node.js async function workflow explained from pending to settled.

The Node.js async function. (Image source: RisingStack)

并发功能允许同时运行多个任务。具有不同目的的不同功能以并发方式执行。此外,并行性使用 Web Workers API 来同时执行各种进程。

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

另一方面,PHP 使用较慢的同步代码实现方法,按照代码中指示的顺序执行每个模块函数。如果一个查询执行失败,下一个查询将不会运行,直到并发查询完成。

因此,这种语言保持性能稳定,无论速度如何,都能准确地执行程序。与 HHVM 虚拟机配对提高了 PHP 性能,但 Node.js 依然更胜一筹。

通过结合现代编程函数,Node.js 可以比 PHP 和大多数其他编程语言(如 Python、Java、Go 等)更快地执行程序。

安全性

当然,没有哪种编程语言是不可攻击的,也没有哪种语言没有一个安全漏洞。但是你可以建立一个系统,它可以潜在地免疫最具攻击性的安全攻击。

Node.js 和 PHP 都有各自的漏洞(也有解决方案)。也就是说,网站或应用程序的安全性相应地依赖于开发者的编码方式。

节点. js

作为 Node.js 用户,您可能会遇到诸如中间机器(MITM)攻击、代码注入和高级持久威胁之类的漏洞。例如,Node.js 面临 XSS 攻击、数据泄露、跨站点请求伪造 ( CSRF )和 HTTP 响应头问题等安全问题。

A flow chart showing a Node.js Machine-in-the-Middle attack of a client to MITM, then MITM to the server.

A Node.js machine-in-the-middle (MIDM) attack. (Image source: Medium)

然而,该系统还提供了安全实践、认证工具(Okta、Firebase、OAuth)、OWASP 依赖性检查和 Acutinex 来舒适地处理问题,减少漏洞,为您创建一个安全的系统。

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

使用 PHP 时,您可能会面临安全问题,如 SQL 注入攻击、XSS(跨站点脚本)、会话劫持、目录遍历等等。

PHP 提供了对抗所有这些问题的预防措施和途径。但在这里,我们从瓶子里放出了真相精灵:

你的 PHP 代码和你写的一样安全。

如果编码正确,您的程序就像使用其他几种编程语言一样安全。但是如果你是一个没有经验的程序员,你的网站或应用程序有安全漏洞的可能性相对较高。

如果您在构建系统时彻底考虑了安全问题,那么您应该仔细考虑安全设计。您可以使用名为 Cryptography 的 OpenSSL 函数扩展在 PHP 中加密和解密字符串,还可以实现基于语言的安全性(LBS)来增强应用程序的安全性。

请求处理

请求处理指的是 web 应用程序与用户或客户端的通信。执行任务首先从 UI 接收请求,然后将其发送到服务器端并执行。同样,一个熟练的请求处理过程决定了系统的性能、精度和结果。

Node.js 和 PHP 处理客户端请求的方式不同。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

节点. js

Node.js 接受大量的客户端请求,并将它们在 EventQueue 中排队,因为它具有事件驱动的架构。因此,Node.js 有它的 event loop——一个同时接收和处理请求的无限循环,节省了计算能力。

如果 Node.js 可以在没有 I/O 阻塞的情况下处理请求,那么事件循环将处理请求,并自己将响应返回给客户机。使用 Node.js 集群模块或者 worker_threads ,你也可以让你的系统并行处理多个请求。

A flow chart depicting Node.js request handling within the server.

Node.js request handling. (Image source: Medium)

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

PHP 一次可以处理一个请求。例如,如果你输入 10 个请求,它会在 10 个不同的提交中一个接一个地执行它们,每次使用相同的计算能力。

虽然您可以使用 PHP 库或 web 服务器让 PHP 处理多个请求,但 Node.js 仍然更胜一筹,因为它具有本地请求处理特性。

PHP request handling from browser to server connection workflow is shown in the image.

PHP Request Handling (image source: github user content)

数据库集成

Node.js 和 PHP 都支持各种数据库。但是,有一些特定的数据库最适合他们,并且在同一个应用程序中运行时可以减少可能的攻击威胁。

Some of the world's most popular databases are shown in a graph with percentages of users.

Most popular databases (image source: c-sharpcorner)

节点. js

Node.js 适合各种数据库,你可以根据你程序的复杂程度和目标来选择数据库。通常,Node.js 不仅可以有效地处理 SQL (NoSQL)数据库,如 MongoDB 和 CouchDB,也可以有效地处理图形数据库系统,如 Neo4j。

然而,NoSQL 注入攻击是一个众所周知的漏洞。此外,与 SQL 注入相比,它们的数量更大,因为 SQL 代码架构使其自然地免受此类攻击。

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

PHP 采用与传统/关系数据库的协作,包括 MySQL、 MariaDB 、Db2、MongoDB、Oracle、PostgreSQL 和 SQLite。然而,MySQL 似乎是使用最多的 PHP 数据库。

MySQL 是 SQL 兼容的,并提供各种优势。它简单、功能强大、快速、安全且可扩展。此外,MySQL 可以在多种平台上运行,包括 UNIX 或 Linux、微软 Windows、苹果 Mac OS X 等。

模块和扩展性

模块是作为子程序提供一个或多个相关功能/类的程序组件。

几个独立的模块可以构建一个程序。如果您想扩展技术能力,可以利用这些模块提供的帮助。

节点. js

Node.js 中的模块是独立的代码单元,根据它们的相关功能与外部应用程序进行交互。这些模块可以是单个文件,也可以是几个文件/文件夹的组合。您可以使用模块,因为它们的可重用性和将有问题的代码分解成易于理解的部分的能力。

Image contains several Node.js NPM modules with their version numbers.

Node.js NPM modules. (Image source: Medium)

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

PHP 模块有三种类型:核心扩展;默认情况下, PHP 安装的捆绑扩展;以及完全外部的扩展——完全外部的扩展不包含在核心 PHP 或任何包中。

PHP 扩展模块大多是用 C 编程语言编写的。然而,你可以用 PHP 编译它们,以允许静态加载(作为二进制文件的一部分)或动态加载(通过 php.ini 指令 extension=modulename.so )。

PHP 已经获得了一个充满活力的扩展模块集合,提供了大量的可扩展性。尽管 Node.js 像滚雪球一样越滚越大,PHP 模块仍然比 Node.js 多。

生态系统(社区和支持)

开源平台的社区丰富了它的生态系统。用户和爱好者对可用的库、框架、预制项目、资源和对新来者的支持负责。因此,社区的扩张也以积极的方式影响着生态系统。

节点. js

像其他成功的开源项目一样,Node.js 有一个活跃的在线社区,这意味着你会发现大量的在线资料,以及通过在线参考、Google Groups、IRC 或 GitHub 问题队列对你所关心的问题的快速响应。

A flow chart depicting the Node.js ecosystem.

The Node.js ecosystem. (Image source: Livebook)

服务器端编程语言(Professional Hypertext Preprocessor 的缩写)

WordPress ,Drupal,Jumla,脸书等。对 PHP 生态系统做出了巨大贡献。这些公司直接负责运行互联网上数百万个网站,它们共同展示了 PHP 非凡的影响力。

此外,PHP 社区多年来开发了大量的培训材料和支持技术来吸引新的开发人员。如果你想寻求帮助,请访问 Github、StackOverflow 或类似的平台。

托管机会

Node.js 和 PHP 在最著名的全球主机提供商中很常见,所以你不难找到支持它们的主机。

有趣的是,托管价格往往取决于所说的托管公司的可用性。因此,在选择一个之前做好你的研究。然而,当选择网络主机时,你必须优先考虑速度,性能和安全性。

Node.js 与 PHP:并列比较表

让我们看一下 Node.js 与 PHP 的对比,并检查一些核心编程参数:

Node.js PHP
开始 Two thousand and nine One thousand nine hundred and ninety-four
类型 JavaScript 运行时环境 程序设计语言
编码 长的 简明的
用途 1.8% 所有网站的 78.1%
发动机 谷歌的 V8 JavaScript Zend 发动机
包管理器 Composer 包管理器 节点程序包管理器(NPM)
执行 异步的 同步的
执行速度 更快、更轻便 比 Node.js 慢
并发 事件驱动的非阻塞 I/O 多线程阻塞 I/O
性能 更快的 慢的
网络服务器 不需要 Apache 和 IIS
数据库 任何数据库 关系型和传统型
JSON JSON.stringify()JSON.parse() json_encode()json_decode()
社区 小而活跃 庞大的在线社区

Node.js vs PHP:应该选哪个?

毫无疑问,这是我们在这里一直试图用一个恰当的答案来解决的问题。所以让我们试着把我们画的所有点连接起来。

事实上,这两种技术都提供了数百种特性,可以让您的开发变得轻松、有趣和稳定。然而,选择您的技术更多地取决于您的需求和您计划进行的开发类型。

您应该根据您的目标和需求来分析您的需求,然后确定最适合您的技术,而不是根据随机参数或其他人的意见来选择最佳技术。

何时使用 Node.js

让我们来看看会让您选择 Node.js 而不是 PHP 的需求:

  1. FullStack: 如果您希望同时进行服务器端和客户端开发,请选择 Node.js。选择 Node.js 的另一个坚实的原因是排除不同前端和后端团队之间协作的麻烦。
  2. 速度和性能: Node.js 执行程序的速度比其他大多数编程语言都要快。此外,theNode.js 应用程序显示了巨大的性能增益和稳定性。如果希望应用程序同时处理多个指令和请求,请选择 Node.js。
  3. 现代开发方法学: Node.js 是一个新的、现代的、更新的环境,有几个包、优秀的框架和一个相当现代的库的熟练集合。总的来说,它让你进行创新开发。
  4. 实时数据: Node.js 由于其非阻塞架构和服务器端与客户端的特殊连接,在同步实时数据方面很精通。因此,如果您需要应用程序服务上的实时数据同步,请选择 Node.js。

何时使用 PHP

现在,让我们看看可能会促使您选择 PHP 而不是 Node.js 的条件:

  1. 灵活和动态: PHP 编程的在线应用程序和网站非常安全,因为它们经过加密并可快速扩展,这有助于它们的动态性和适应性。此外,在线应用和网页会自动刷新,无需人工干预。因此,如果你想要一种动态语言,你可以选择 PHP。
  2. 可移植性: PHP 在连接服务器和数据库时具有出色的可移植性和效率。您可以随时将您的 web 应用程序移植到任何支持 apache 的服务器上,而不必重新构建它。此外,大多数内容管理系统(CMS)如 WordPress、Jumla 和 Drupal 都使用 PHP,这使得它更容易访问。

Node.js or PHP- decide for yourself with help from this guide 😄Click to Tweet

摘要

简而言之,就其特征和服务目的而言,这些 web 技术各有千秋。多年来,这两家公司都在帮助数百万专业人士方面表现出色。

但是最终的结论更多地依赖于用户需求,而不是 Node.js 或 PHP 可能提供的特性。一个可能拥有你发展所需的所有重要元素,而另一个可能没有。

无论是为了发展还是作为潜在的职业道路,这两者都值得一试。不断增长的 Node.js 和长期持续的 PHP 仍然受到开发社区的极大关注,并带来更高的薪水。

因此,无论您选择哪一种,在未来很长一段时间内,Node.js 和 PHP 都将是开发人员的热门选择。

在你最近的项目中,你选择了这两种网络技术中的哪一种?请在下面的评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

Node.js 与 Python:为您的 Web 应用选择最佳技术

原文:# t0]https://kinta . com/blog/nodejs-vs-python/

Node.js 和 Python 是后端开发最流行的两种技术。当涉及到 web 开发时,在 Node.js 和 Python 之间做出选择可能很有挑战性。两者各有利弊。

为您的项目选择正确的技术组合至关重要。它将决定项目的成本和启动时间表,以及维护和扩展的效率。为一个受欢迎的技术堆栈雇佣开发人员也比为一个不太受欢迎的堆栈雇佣开发人员更容易管理。

在本文中,我们将介绍 Node.js 和 Python 之间的主要区别,以帮助您决定下一个项目的选择。

Node.js 和 Python 概述

Python 是一种流行的编程语言,而 Node.js 不是(但它是基于 JavaScript 的)。因此,在我们比较 Node.js 和 Python 之前,有必要了解它们的基础知识。稍后,我们将在九个不同的标准上讨论它们的差异。

节点. js

nodejs

Node.js

Node.js 是一个单线程、开源、跨平台的运行时环境,用于构建快速、可伸缩的服务器端和网络应用。与编程语言 Python 不同,Node.js 是一个在浏览器外运行 JavaScript 的运行时环境。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

它是用 C、C++和 JavaScript 编写的,运行在 V8 JavaScript 运行时引擎上。Node.js 使用事件驱动的非阻塞 I/O 架构,这使得它适合开发实时应用程序。

关键 Node.js 特性

Node.js 的一些关键特性包括:

  1. Node.js 有大量的教程和一个大型社区,相对来说比较容易上手——它是 web 开发初学者的首选。
  2. 可伸缩: Node.js 是单线程的,这意味着它可以以高吞吐量处理大量的同时连接,并为应用程序提供巨大的可伸缩性。
  3. 速度:非阻塞线程执行让 Node.js 快速高效。
  4. 包:大量的开源 Node.js 包可以简化您的工作。如今,NPM 生态系统中有超过一百万个包裹。
  5. 强大的后端: Node.js 是用 C 和 C++编写的,可以更快地运行服务器,并添加像网络支持这样的功能。
  6. 多平台:跨平台支持允许您为 SaaS 产品、桌面应用程序甚至移动应用程序创建网站。
  7. 可维护: Node.js 对于开发者来说是一个很容易的选择,因为前端和后端都可以使用 JavaScript。

计算机编程语言

Python logo

Python logo

Python 是一种开源、面向对象、高级、动态编程语言。它的语法和带有解释性质的动态类型使它成为脚本语言的理想语言。

Python 的第一个版本是在 1991 年由吉多·范·罗苏姆发布的,他也被认为是 Python 编程语言的创造者。根据 GitHub 的说法,它现在是第二受欢迎的语言,也是最受机器学习欢迎的语言。

Python 主要运行在谷歌的应用引擎上。它还带来了由全球开发人员使用和维护的各种库和工具的好处。

Python 的主要特性

  1. 开源:这是一种免费的、开源的高级语言。任何人都可以学习它,用它来构建应用程序,并对该语言及其软件包做出贡献。
  2. 包: Python 提供了数千个模块,允许程序员轻松构建复杂的应用程序。
  3. 多范例:既支持函数式和结构化编程方法,也支持面向对象编程。
  4. 跨平台支持: Python 可以在任何操作系统上编写和运行,包括 Windows、Mac 或 Linux。
  5. 可扩展: Python 是高度通用的,您可以轻松地将其与 C、C++、Java 和其他语言集成。
  6. 支持 GUI:Python 支持大量的 GUI 框架。一些流行的 GUI 支持库包括 PyQT、Tkinter 和 Pygame。您可以使用它们创建各种各样的应用程序。

关于 Python 与其他语言的比较,Rossum 不得不说:

“如果你特别谈论 Java,Python 可能是所有其他语言中最合适的。然而有趣的是,从语言的角度来看,JavaScript 和 Python 有很多共同点,但它是一个有限的子集。”

Team Node.js or Team Python?💥 Decide with help from this guide 👇Click to Tweet

查看我们的 Python 教程了解更多!
T3】

Node.js 与 Python 的深入比较

Python 和 Node.js 是流行的后端技术,它们都支持许多特性。他们还带来了一个巨大的、专注的开发者社区。

在接下来的几节中,我们将仔细研究这两者,并根据各种参数对它们进行比较:

体系结构

软件架构是指软件系统的结构或组织。换句话说,它解释了软件的行为。每个结构包括软件元素、它们之间的关系以及两者的属性。良好的架构对于大型应用程序至关重要。否则,随着时间的推移,系统会变慢,将来添加新功能会变得更加昂贵。

我们来探讨一下 Node.js 的架构与 Python 有何不同。

节点. js

Node.js use a single-threaded event loop architecture.

Node.js uses a single-threaded event loop architecture.

Node.js 使用单线程事件循环模型来同时处理多个客户端。它使用更少的线程和利用更少的资源,从而提高任务执行速度。

此外,Node.js 的非阻塞特性允许它处理数千个并发连接,这使它成为实时应用程序的完美选择。

计算机编程语言

Python 的工作方式与 Node.js 不同,首先,Python 并不直接将其代码转换成机器码。相反,它将代码编译成字节码,然后使用解释器将字节码转换成机器代码。

第二,Python 不支持多线程。但是,您可以使用类似于 asyncio 的模块来构建异步和事件驱动的应用程序。

Working of the Python interpreter.

How the Python interpreter works.

速度

速度是选择编程语言前需要考虑的一个重要参数。应用程序的性能反映了软件完成任务的速度。当您扩展应用程序时,每一点效率都有助于降低运营成本。代码的执行速度越高,响应时间就越快。

节点. js

Node.js 在 web 浏览器外执行代码;因此,该应用程序的资源效率更高,性能更好。Node.js 的非阻塞特性和 V8 引擎的执行使它更快。因此,Node.js 是实时应用程序的首选之一。

计算机编程语言

与 Node.js 相比,Python 缺乏速度。Python 是一种解释型语言,这意味着它不会直接转换为机器代码,而是先将其编译为字节码,从而导致执行时间较长。

使用单流时,请求处理速度要慢得多。因此,对于优先考虑速度和性能或涉及许多复杂计算的应用程序,Python 不是最佳选择。

可量测性

想象一下,构建一个获得良好牵引力的应用程序。您不希望您的应用程序性能随着用户数量的增长而下降。可扩展性是指系统在不影响性能的情况下,根据应用程序的变化提高或降低性能和成本的能力。

节点. js

可伸缩性是 Node.js 运行时的核心。由于每个流程的轻量级通信和快速执行,扩展到多个微服务既高效又简单。

使用 Node.js 开发的应用程序可以在水平和垂直方向上快速扩展:

  • 要水平扩展,向系统添加新节点。
  • 对于垂直扩展,向现有节点添加额外的资源。

Node.js 还有一个内置的模块集群,使得在单个服务器上实现克隆策略变得更加容易。克隆是扩展应用程序的最佳技术之一。

计算机编程语言

谈到伸缩性,Python 并不是最好的。原因还是 Python 解释器导致的较慢的执行速度。它不支持多线程,因为它使用全局解释器锁(GIL),不允许 Python 解释器同时执行任务。相反,它使 Python 一次只运行一个线程。

展开性

可扩展性是对扩展系统和实现附加功能所需工作量的度量。如果应用程序不受新的或修改的功能的影响,它就是可扩展的。Node.js 和 Python 都很容易扩展,并提供了几个包来支持可扩展性。

节点. js

Node.js 可以轻松定制、扩展,并与各种包和工具集成。Node 提供了一个内置 API 用于开发 HTTP 和 DNS 服务器。你可以扩展 Node.js,用 Express,Angular, Vue 等框架构建 web 应用。它扩展到使用 Log.io 进行部署监控和故障排除,使用 Webpack 等工具进行数据迁移、流程管理和模块捆绑。

计算机编程语言

Python 通过允许用其他语言(如 C、C++和 Java)编写 Python 代码来支持可扩展性。Python 绑定将使您能够调用函数并将数据从 Python 传递到 C 或 C++,从而使您获得两种语言的优势。

Python 还提供了很多库和框架,如 Django、Flask、Web2Py 或 Pyramid。

图书馆

像 Node.js 和 Python 这样的编程语言增长的主要原因之一是它们的庞大库支持。这为开发人员提供了可以直接使用的模块,无需深入细节。良好的库支持也提高了整体开发速度。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

节点. js

Node 有数百万个包支持开发。这些库和包由节点包管理器 NPM 管理。

NPM 是全球最大的开源库生态系统,拥有超过 100 万个软件包,并且还在不断增长。NPM 可以免费使用,每天都有成千上万的开源开发者为其贡献力量。Node.js 吸引了大量的开发者主要是因为它出色的包支持。

以下是一些受欢迎的 NPM 套餐:

计算机编程语言

Python 中的库和包由 pip 管理,代表“pip 安装 Python”。换句话说,它是 Python 的包安装程序。 pip 快速、可靠、易于使用,带来高效的开发。

以下是一些流行的 Python 包:

用例

每种后端技术都有其优缺点,这两种也不例外。Node.js 被推荐用于构建快速、实时的应用程序,而 Python 是一种用于机器学习和数据分析的流行语言。

也就是说,两种语言都有很多用例。我们将在下一节探讨它们。

节点. js

Applications of Node.js

Applications of Node.js.

由于其基于事件的架构,Node.js 最适合具有大量并发请求的实时应用程序。

以下是许多使用 Node.js 的应用程序中的一些:

  • I/O 绑定的应用程序
  • 数据流应用
  • 数据密集型实时应用程序(DIRT)
  • 基于 JSON API 的应用程序
  • 单页应用程序

计算机编程语言

Python 是涉及数据分析和可视化、图像处理软件、神经网络和机器学习系统的数据科学应用程序的首选之一。

Python 也用一些框架支持 web 开发,比如 DjangoFlask 。您可以使用 Python 创建桌面和商业应用程序,甚至游戏。

社区

Node.js 和 Python 都得到了广泛而繁荣的社区的支持。我们将仔细看看每一个。

需要为你的 WordPress 站点提供超快的、可靠的、完全安全的托管服务吗?Kinsta 提供所有这些,并由 web 开发专家提供 24/7 世界一流的支持。查看我们的计划

节点. js

Node.js 是最活跃的编程社区之一。有各种各样的教程,视频,和社区为社区建立的模块。

NPM 有超过一百万个包裹,全部由社区管理。此外,当你发现自己陷入一个问题时,很有可能有人已经解决了这个问题,并分享了关于堆栈溢出的解决方案。

你可以加入 Node.js 社区并从今天开始寻找答案——或者贡献你自己的答案。

计算机编程语言

Python 有一个拥有数百万开发者的大型社区。作为一种较老的语言,与 Node.js 相比,它自然拥有更大的群体。

Python 专用论坛,包括那些关于堆栈溢出的论坛,是发布查询的好地方。Python 在线社区为全球各地发生的学习和会议提供了极好的资源,俗称 PyCon。

这样一个大规模社区的另一个优势是很容易找到开发者。各种使用 Python 的公司利用社区来寻找优秀的开发人员。

流行

受欢迎程度是需要考虑的一个重要方面。特定语言的开发人员数量取决于该语言的流行程度。

流行语言自然会产生更大的社区,有更多的贡献和积极的发展。这对于企业来说尤为重要——如果你的技术很受欢迎,就更容易找到合适的人才。

节点. js

Node.js 的受欢迎程度在最近几年有了显著的增长,因为它非常轻量级,高度灵活,并且拥有大量的库,使得开发更加容易。此外,它被数千家公司使用,包括像 Twitter、Spotify、Reddit、T2、Linkedin 和其他许多公司。

即使在 Github 上,Node.js 也有着惊人的 75.9k 星,19k 叉,3k 观察者。根据 2020 年的栈溢出调查,它也是最广泛使用的非语言、非操作系统、非数据库工具。

计算机编程语言

根据衡量编程语言受欢迎程度的 T2 Tiobe 指数 T3,Python 是第二受欢迎的语言 T1。根据前面提到的堆栈溢出调查,Python 是第三大最受欢迎的程序和最受欢迎的语言。超过 66%的开发者表示有兴趣继续用 Python 开发。

Python 也是数据科学和机器学习项目的首选之一。

Most loved languages - Stack Overflow

Most loved languages as per a Stack Overflow survey

易于学习

Python 和 Node.js 都很好学。然而,Python 可读性更强,甚至非开发人员也能理解。

接下来,我们将通过用 Node.js 和 Python 创建一个“Hello World”服务器来探索基本语法。

Node.js 中的 Hello World

让我们在 Node.js 中创建一个服务器,它将根据服务器请求返回“Hello World”输出。

// server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World! Welcome to Node.js');
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
}); 

将该文件另存为 server.js

现在转到终端,使用以下命令启动服务器:

node server.js 

服务器现在应该开始运行了。要验证输出,在浏览器中打开http://localhost:3000。如果成功,您应该会看到以下消息:

Hello World! Welcome to Node.js 

Python 中的 Hello World

我们将使用 Python 框架 Flask 来创建我们的“Hello world”服务器:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
	return 'Hello World! Welcome to Python'

if __name__ == '__main__':
	app.run() 

将该文件另存为 server.py 。在终端中使用以下命令运行服务器:

python server.py 

您可以验证服务器是否正在您的浏览器中运行。转到http://127.0.0.1:5000/,应出现以下输出:

Hello World! Welcome to Python 

Node.js vs Python:你该选哪个?

Python 和 Node.js 都有各自的优缺点。此外,每一种都有多个用例。

下面是我们在本文中讨论的差异的总结:

| Node.js | Python |
| 用于构建快速、可伸缩的服务器端和网络应用程序的运行时环境。 | 面向对象,高级,动态,多用途,高级编程语言。 |
| 它运行在谷歌的 V8 JavaScript 运行时引擎上。 | Python 使用 PyPy 作为解释器。 |
| Node.js 最初由 Ryan Dahl 在 2009 年编写。 | 相对老一些。第一个 Python 版本发布于 30 年前,即 1981 年 2 月。 |
| Node.js 易于纵向和横向扩展。 | Python 对于大型项目来说不那么具有可扩展性。尽管它是动态类型的,但管理大型 Python 代码库仍然很困难。 |
| Node.js 由于其底层强大的 V8 引擎而速度更快。 | 由于单一流,Python 速度较慢。它首先把代码转换成字节码,然后解释器把它转换成机器码。 |
| 高度灵活并提供全栈开发,使其适用于后端和前端。 | Python 通常是服务器端开发的首选,尽管也有支持前端开发的库。它还可以用于开发桌面和移动的独立应用程序。 |
| Node.js 是构建实时 web 应用程序、游戏和电子商务平台的理想平台。 | Python 是构建服务器端、数据科学、商业和桌面应用程序的好选择。 |

When it comes to web development, it can be challenging to choose between Node.js or Python — this guide makes it simple 💥Click to Tweet

摘要

Python 和 Node.js 都是开发 web 和后端应用程序的非常流行和强大的选项。没有直接的赢家;这取决于您试图解决的用例或问题。它也有助于考虑您使用这些技术的舒适程度。

Kinsta 选择了一条不同的路线来为其高速和性能优化的基础设施提供动力。但是,您可能会发现 Node.js、Python 甚至 Apache 更适合您的项目。

我们希望这篇文章已经给了你一些关于 Python 和 Node.js 的背景知识。你现在应该会发现为你的下一个项目选择正确的选项更容易了。

关于 Python 或 Node.js,你还有什么我们没有提到的问题吗?请在评论区告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

为什么你应该停止使用空的 WordPress 插件和主题

原文:https://kinsta.com/blog/nulled-wordpress-plugins-themes/

没有人喜欢花不必要的钱,这是人之常情。即使是世界上最富有的人之一,沃伦·巴菲特,仍然在搜索他购买的汽车的折扣(好吧,也许这是一个极端的例子——你明白了)。

因为人们总是在寻找降低成本的方法,一些 WordPress 用户倾向于转向无价值的 WordPress 主题和插件,而不是为官方高级版本付费。

在这篇文章中,我们将告诉你为什么使用空的 WordPress 插件和主题是一个坏主意…即使它不一定违反任何法律。

什么被认为是空插件和主题?

谈到术语 nulled,网络上有各种各样的定义。当我们定义 nulled 时,它指的是被黑客攻击的优质 WordPress 插件或主题,或者包含旨在造成伤害或收集信息的修改代码。这些是从第三方网站(不是原作者或创作者)获得的,有时是在没有许可证密钥的情况下工作的。

Support

被清空的 WordPress 插件和主题不一定是非法的

如果你使用无效的 WordPress 插件或主题,联邦调查局不太可能踢开你的门。这是因为,与人们通常“盗版”的其他内容(如音乐、电影)相比,被清空的 WordPress 插件和主题通常不违法。

这里的原因与 GPL ( 通用公共许可证)有关。不要把这当成一堂关于版权的课,你只需要知道 GPL 许可允许的一部分是任何人都可以自由发布 GPL 许可的软件(是的,甚至是高级 GPL 许可的软件)。

因此,如果一个被清空的插件网站把一个 GPL 许可的软件放出来供下载,从技术上来说,他们并没有违反法律,因为他们有权自由发布 GPL 代码。

GPL 是 WordPress 的一大部分,大多数(但不一定是全部) WordPress 主题和插件都使用 GPL。这部分是因为主题和插件必须符合 GPL 才能被列入 WordPress.org 目录。

虽然高级插件不需要 GPL 许可,但是许多在 WordPress 知识库上也有一个免费的版本,它需要 GPL 许可。或者他们选择拥有 GPL 许可。许多高级插件如 WP Rocket 和 Gravity Forms 都是 GPL 许可的。

还有其他原因——比如能够在插件和主题中使用现有的 GPL 许可的代码。通常情况下,如果你在一个产品中使用现有的 GPL 许可的代码,你必须在 GPL 下发布后续产品(这就是 2017 年 WordPress 和 Wix 之间爆发的原因)。

GPL 很复杂,我们过度简化了一些原则,将核心思想浓缩成几个段落。但是基本上——你看到的大多数被清空的 WordPress 插件和主题可能没有做任何违法的事情。事实上,GPL 是 WordPress 伟大的一个原因。

但这并不意味着你应该走出去,让你的网站充满被清空的扩展…

你仍然不应该使用空 WordPress 扩展的四个理由(即使它们是合法的)

仅仅因为空扩展名是合法的,这并不意味着在你的 WordPress 站点上使用它们是个好主意。

以下是你仍然不应该在网站上使用空插件或主题的四个原因。

  1. 你不知道代码里还有什么
  2. 开发者需要钱来继续改进他们的产品
  3. 你不会从开发商那里得到任何支持
  4. 你不会得到任何自动更新

1.你不知道代码里还有什么

当你从开发人员之外的来源(或者像 WordPress.org 这样的可信存储库)下载扩展时,你不知道代码中还隐藏着什么。

恶意行为者喜欢使用空的插件或主题来插入他们自己讨厌的有效载荷,如 SEO 的注入链接,甚至更邪恶的动作。

There are many Facebook groups where members share nulled WordPress plugins. Scary! 😧Click to Tweet

当您使用一个空扩展时,您将自己暴露在这种类型的利用之下,因为,除非您有知识和时间来挖掘所有代码,否则您不知道空扩展中还隐藏着什么。

除此之外,你可能会失去主人潜在的帮助。例如,我们在 Kinsta 这里提供了免费的黑客修复保证,但是如果你的 WordPress 网站由于一个被清空的插件或主题中的后门而被黑客攻击,这个保证就不适用。

这不是一个普遍的问题,因为你可以找到提供清洁产品的合法 GPL 俱乐部(通常按月收费)。但是,即使你为一个提供免费下载恶意代码的 GPL 俱乐部付费,仍然有其他重要的原因说明这些扩展不是一个好主意。你怎么知道哪个 GPL 俱乐部是可信的?

GPL Vault

An example of a paid GPL club

这就是为什么我们通常将从第三方网站获得的插件称为空插件。更安全的假设是,如果你不是从原作者那里获得的,它可能被修改过,是不安全的代码,甚至是病毒。你可以使用像 VirusTotal 这样的在线工具来扫描插件或主题的文件,看看它是否检测到任何类型的恶意软件

VirusTotal

VirusTotal

2.开发者需要钱来继续改进他们的产品

虽然大多数开发人员确实喜欢创建 WordPress 产品,但是他们中的大多数人也喜欢能够吃饭和买得起房子。

也就是说,WordPress 开发者需要收入来证明他们花费在维护和改进产品上的时间是值得的。

当你使用一个空的扩展,你剥夺了他们的收入,他们可以用它来进一步增强他们的插件。

基本上,你吃白食就是搬起石头砸自己的脚!

如果每个人都使用一个空版本,那么Elementorpage builder团队能让推出新功能吗,比如主题构建?如果没有收入的话,OceanWP 主题会有那些很棒的附加组件吗?

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe NowThe WordPress community needs to support developers. This is how we grow. 🌱Click to Tweet

不要!当然不是。

如果你想尽办法找到一个插件或主题的空版本,这可能意味着你认为它对你的网站是一个有价值的补充。

所以,即使你认为不值得向开发人员支付他们为构建你的产品所付出的努力,你为什么要剥夺自己在未来获得更好的产品的机会呢?

基本上,你应该帮助开发人员把食物放在桌子上,这样他们就可以继续创造令人敬畏的东西,使你的生活更容易。

3.你不会从开发商那里得到任何支持

被清空的扩展可以让你获得高级插件或主题的所有特性,但它们永远无法让你获得付费用户所获得的所有好处。

那是因为你为 GPL 许可的软件所支付的很大一部分是来自开发者的支持。

当您为产品付费时,如果您遇到产品的任何问题,您可以选择直接联系开发人员。

另一方面,对于空扩展,您得到的是零支持。遇到困难了吗?希望谷歌有所帮助!因为这是你唯一的选择。如果你使用的插件在 WordPress 知识库中有免费版本,你可能会在那里得到回应。但是说实话,这就像是在玩彩票。这仅仅是因为开发人员无法承担免费工作。

如果你浪费了三个小时去解决一个开发者可以在五分钟内解决的问题,你最终真的“省钱”了吗?可能不会(如果你珍惜时间的话)。

4.你不会得到任何自动更新

为了启用高级插件或主题的自动更新,你需要一个许可证密钥。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

如果没有有效的许可证密钥,每次有新的更新时,你都必须手动更新扩展。

这有两个大问题:

首先,这很烦人,也很费时间。你不再需要简单地点击一个按钮,而是每次都要删除并重新上传一个插件。

No updates without the license key

No updates without the license key

虽然这不是最大的问题。

更重要的是,你将不再在你的 WordPress 仪表盘上看到红色的更新通知。这意味着您必须找到另一种方法来跟踪新的更新何时出现。

如果开发人员发布了一个紧急的安全补丁,但是您直到几个星期后才收到备忘录,该怎么办?过时的扩展是 WordPress 网站的一大攻击媒介,所以如果你不能及时应用新的更新,你的网站将面临不必要的风险。

的确,一些 GPL 俱乐部会去获取最新版本,然后在他们的网站上发布更新。但是你想信任谁呢?一个有一千个不同插件的 GPL 俱乐部,或者插件的开发者。这种风险值得省几个钱吗?

你更信任谁来更新?一个有几千个插件的 GPL 俱乐部,或者插件的开发者。🤭 点击推文

例外

我们看不到任何使用空插件或主题的好理由。然而,如果你真的想吹毛求疵,这里有一个我们亲自从用户那里听到的场景。

许多高级 WordPress 插件没有免费版本或试用版,他们的退款政策可能只适用于由于技术原因插件无法工作的情况。很多时候,插件开发者必须严格遵守他们的退款政策,以防止那些试图获得免费拷贝的人滥用。

如果你是一个 WordPress 开发者、机构或者自由职业者,可能有些情况下你只需要看看一个插件是否适合客户。如果插件最终不能满足你的需求,那么购买它并不总是有意义的。因为那样你就没钱了。

在本地测试一个被清空的插件或主题,或者在一个临时站点上测试可能是你决定要走的路。我们不会在我们的网站上分享从哪里得到这些。

如果你这样做了,并且发现插件或主题确实交付了,那么,尽一切办法,与你的客户聊天,购买它以获得合法的许可密钥、支持和更新。

不要在生产网站上使用空扩展——不值得

从表面上看,免费获得一个优质插件或主题似乎是一笔不错的交易。但在我们看来,就是不值得。即使你找到了合法、干净的 GPL 插件和主题的来源,你仍然会浪费额外的时间,因为你:

  • 由于无法获得支持,您必须自己配置和修复一切。
  • 将不得不不断检查新版本,并手动更新自己。

时间就是金钱,被清空的插件和主题会让你花更多的时间去使用。

除此之外,你只是剥夺了开发者已经投入的辛勤工作的回报,以及继续改进他们产品的钱。即使你在道德上没有问题,如果每个人都使用空扩展,你也会失败,因为开发者没有改进的动力。

所以——当提到无效安装时——在安装主题或插件之前要三思。尤其是当你在别人的 WordPress 站点上构建或工作的时候。不要让你的客户以后陷入困境。这种事情我们已经见得太多了。

如果你真的预算有限,可以考虑 WordPress 网站上 55,000 多个免费插件和数千个免费主题中的一个。

有什么想法吗?我们希望在下面的评论中听到更多 WordPress 用户对这个话题的看法。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

OceanWP:易于定制和超快的 WordPress 主题

原文:# t0]https://kinta . com/blog/oceanwp/

如果你用页面生成器创建 WordPress 网站,你可能会遇到 OceanWP。与 GeneratePress 和 Astra 一起,它形成了流行主题的“三巨头”WordPress 页面生成器配对。如果你不熟悉 WordPress 页面生成器世界,OceanWP 是一个免费的多用途 WordPress 主题,它通过实时 WordPress 定制器给你很多控制来定制你的站点设计。不仅如此,它的速度也非常快

核心 OceanWP 主题免费,在 WordPress.org 上市。除此之外,它还包括各种免费和优质的扩展,可以添加额外的功能。

在我们的 OceanWP 评论中,我们将分享更多是什么让这个主题如此独特和受欢迎。

OceanWP 为什么这么受欢迎?

我们认为分享脸书元素社区用户的一些想法会更有帮助,而不是滔滔不绝地发表一个观点。您应该会注意到贯穿所有这些主题的一条共同主线:

oceanwp reviews on facebook

Two comments in the Elementor Community Facebook group

an oceanwp review on facebook

Another comment in the Elementor Community Facebook group

基本上,OceanWP 的主要吸引力在于它让你能够通过 WordPress 定制器以非常用户友好、直观的方式定制你的主题,包括对 WooCommerce 的深度支持。OceanWP 网站有各种形状和大小,所以如果你想知道一个网站是否使用 OceanWP 主题,看看我们的 WordPress 主题检测工具

通过这种定制,您可以为使用页面生成器设计的内容创建框架,也可以对主题进行更多的控制。

除了这些控件,OceanWP 还包括各种免费和付费的演示站点,允许你快速导入预制的设计,包括 WordPress 定制器设置和登陆页面的 Elementor 模板。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

通过这些演示,你可以很快让 OceanWP 变成这样:

OceanWP sports coach demo

OceanWP sports coach demo

或者像这样:

OceanWP eCommerce store demo

OceanWP eCommerce store demo

或者像其他演示一样:

All OceanWP demos

All OceanWP demos

为了获得更强大的功能,OceanWP 还提供免费和付费的扩展,例如:

  • 弹出登录
  • 照片墙
  • 白色标签
  • 投资组合
  • WooCommerce 弹出窗口
  • 粘性页脚
  • 模态窗口
  • 帖子滑块
  • 海洋钩子
  • 演示导入
  • 自定义侧栏
  • 元素或小部件
  • 响应式侧面板(内有部件)
  • 粘性标题
  • 页脚标注
  • WooCommerce 产品分享
  • 社交分享

与大多数 WordPress 主题相比,所有这些都包含在一个非常轻量级的包中。这意味着它在性能方面非常出色。

如何用 OceanWP 导入一个演示站点

向您展示定制器如何与已经构建好的站点一起工作会更容易,所以让我们先来快速了解一下 OceanWP 是如何轻松地导入一个演示站点的。

一旦你从 WordPress 安装了免费的 Ocean Demo ImportOcean Extras 附加组件,你就可以直接从你的 WordPress 仪表盘导入演示内容:

How to import an OceanWP demo

How to import an OceanWP demo

一旦您完成演示过程,您的网站应该看起来完全一样的演示。

要定制演示的主页设计,您可以使用 Elementor:

OceanWP Customizer settings

OceanWP uses Elementor for the landing pages in its demos

为了定制你的主题的其余部分,你将使用 WordPress 定制器。

说到…

OceanWP WordPress 定制器设置

WordPress 定制器是 OceanWP 真正闪光的地方。即使只安装了很少的扩展,您也有很多选择:

Full list of Customizer settings

Full list of Customizer settings

这些选项的深度远远超出了大多数常规 WordPress 主题所能提供的。

让我们看几个例子:

控制你的头球

大多数页面构建者仍然无法触及的领域之一是您的页眉…这就是为什么 OceanWP 为您提供了一大堆控制页眉的选项(以及页眉上方的“顶栏”——在本演示中包含联系信息和社交资料):

Header Customizer settings

Header Customizer settings

你不仅可以从预制的样式中选择,还可以通过许多细节设置来控制它的外观……甚至可以为不同的设备添加到标题中的实际填充:

Choose header style

Header style and padding

控制你的博客

我们不能涵盖每一个单一的设置,但让我们看看另外两个…

博客区,你可以从总体布局控制一切…

Detailed header options

Blog layout options

…下至各种元素和元信息的特定排序/可见性:

Blog layout Customizer settings

Blog details Customizer settings

控制你网站的排版

想改变你网站上的字体和字体颜色吗?没问题,只要前往排版部分,你会看到另一个长长的选项列表:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Typography settings

Typography settings

你在其他区域也能得到相似的深度

这一部分的目标并不是真的向你展示每一个单独的设置(还有很多!)。相反,它是为了让你理解你可以从 WordPress 定制器和 OceanWP 中期望的控制深度。

虽然完成所有的设置肯定会花费你一些时间,但是你有能力控制你的站点的几乎每一个重要方面,而不需要直接接触任何代码/CSS。

其他 5 个有用的 OceanWP 功能,让你的生活更轻松

除了演示和 WordPress Customizer 功能之外,这里还有一些 OceanWP 的突出特性,它们会让你的生活更轻松,在你的网站上工作时会给你更多的灵活性。

1.个别员额控制

有了免费的 OceanWP Extras 附加组件,您可以访问关于各个内容的详细的新元框:

Meta box on individual posts

Meta box on individual posts

通过这些众多的选项,您可以(部分地)基于每篇文章的或每页来控制以下设置:

  • 更改内容布局或侧栏布局
  • 禁用页眉或顶栏
  • 更改徽标或菜单颜色
  • 禁用帖子/页面标题
  • 禁用页脚
  • 其他较小的功能

虽然这些控件在各种特殊情况下都很有用,但是如果您将 OceanWP 与页面生成器一起使用,它们会特别有用,因为您可以禁用那些妨碍页面生成器的元素。

2.启用/禁用特定脚本/CSS 的选项

如果你关心你的网站加载的速度,你会喜欢 OceanWP 允许你启用或禁用单独的 JavaScript 脚本和 CSS 片段:

Disable specific scripts in OceanWP

How to disable specific scripts in OceanWP

基本上,这个区域可以让你禁用那些你实际上不使用的东西来加速你的站点。

3.大量的钩子+条件句

钩子使得在你的站点的不同区域插入内容变得容易,而不需要直接编辑主题的代码。例如,你可以使用钩子在你的文章标题下插入一个广告,或者只是在其他地方添加一般的内容。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

一旦你掌握了窍门,它们会非常有用。

当谈到钩子时,优质的 OceanWP 钩子附件不会让人失望。

它给你一大堆钩子。真正酷的是,所有这些挂钩还能让您:

  • 仅在特定内容上启用挂钩内容(就像您的主页)
  • 仅对特定用户角色启用挂钩内容

OceanWP hooks options

OceanWP hooks options

虽然钩子本身在针对这个利基市场的主题中并不是唯一的,但是条件逻辑和用户角色定位是唯一的。

4.深度 woo 商务整合

OceanWP 的另一个卖点是与 WooCommerce 的深度整合。如果你在你的网站上安装了 WooCommerce,你会在 WordPress 定制器中得到一个新的 WooCommerce 区域:

OceanWP WooCommerce settings

OceanWP WooCommerce settings

这也不仅仅是一些令牌设置。它变得非常深入–例如,您甚至可以在购物车页面上自定义追加销售和交叉销售的数量,并启用免分心购物车/结账:

Detailed cart/checkout settings

Detailed cart/checkout settings

5.许多其他扩展

到目前为止,我们还没有触及许多其他免费和收费的扩展。但是请记住——ocean WP 还可以让你添加大量其他有用的功能。

点击查看扩展的完整列表。

如果你想知道为什么有这么多扩展,这实际上是一个很好的方法,因为它使事情模块化。

OceanWP 让您挑选想要的确切功能,而不是将所有东西都放在一个主题中,您可能需要也可能不需要所有这些功能。

OceanWP 速度测试

我们很想看看 OceanWP 的表现如何,所以我们进行了一些速度测试。我们在我们的开发网站(位于金斯塔)上导入了完整的体育蔻驰演示内容,并做了一些小改动。还按照 OceanWP 的建议安装了 Elementor。

  1. 我们从页脚禁用了谷歌地图。这是一个众所周知的性能杀手,老实说永远不应该出现在主页上!
  2. 我们启用了 Kinsta CDN ,以便资产可以从我们运行测试的任何地方尽可能快地加载。
  3. 我们添加了 Google Analytics 来更好地模拟生产网站。

然后我们进行了五次速度测试,取平均值。

OceanWP speed test

OceanWP speed test (source: Pingdom)

哇,😲744 ms?这对于一键导入演示内容并做三个小改动来说是非常棒的。记住,有了脚本和样式面板,你可以很容易地浏览和优化它。但是很高兴知道,有了 OceanWP,你可以期待出色的性能

OceanWP 多少钱?

核心的 OceanWP 主题是 100%免费的。你可以在 WordPress.org 找到 7 个免费的扩展。

如果你想要高级扩展,你可以单独购买,每个 9.99 美元起,在一个网站上使用。

或者,如果你想访问所有 11 个高级扩展,以及所有的专业演示,你可以购买核心扩展包,单个站点许可起价 39 美元。

如果你想更多地了解为什么这个主题的开发者 Nicolas 决定采用这种付费模式,可以查看一下他在 Freemius 上的帖子。

试试 OceanWP——它是免费的

因为 OceanWP 的大部分核心功能都是免费的,你可以从 WordPress.org 下载 OceanWP,并在不影响你钱包的情况下使用它。

虽然高级扩展肯定增加了有用的功能,但你应该能够从免费版本中很好地掌握主题。然后,如果你喜欢,你可以随时添加这些额外的扩展。

现在轮到你了——你用过 OceanWP 吗?你认为它和其他多用途 WordPress 主题相比怎么样?


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

开源数据库软件中的佼佼者:十大精选

原文:https://kinsta.com/blog/open-source-database/

现代的大多数应用程序和程序都需要存储数据的地方。对于 web 应用程序来说,数据库是一个至关重要的齿轮。

选择数据库时需要考虑的几个因素——一个主要方面是成本,但灵活性和托管提供商的支持也很重要。出于多种原因,开源数据库是您的最佳选择。

例如,开源数据库不会超出你的预算,也不会对你如何使用它有任何限制。像 WordPress 这样的内容管理系统一样,开源工具可以提供巨大的能力和功能。更好的是,一些最受欢迎(和支持)的数据库是开源解决方案。

让我们看看几个开源数据库软件,并总结出一些不同的“味道”。

查看我们的视频指南,了解最佳开源数据库软件

开源数据库软件介绍

数据库是应用程序的后端存储,例如,web 应用程序(这是我们将在本文中引用的主要应用程序类型)。数据库本身将位于您的服务器上,与其他后端元素一起,如您站点的核心文件、您使用的任何媒体和服务器配置文件。

一般来说,数据库是站点的一个端点。例如:

  • 你网站的页面将使用 HTML 和 PHP 与服务器对话。
  • 服务器将代表您访问数据库(一个无缝的过程),拉或推数据,并将其返回到前端。
  • 您的网站将根据数据库显示或更新其内容。

这是你的网站和服务器的一项基本技术。因此,您会希望尽可能地掌握数据库的灵活性和知识。

这就引出了您的第一个考虑:是选择开源数据库还是专有数据库。

关于系统的代码库和潜力,开源数据库将 100%提供给你。相比之下,一个完全封闭的专有解决方案不会提供同样的深度或灵活性,除非开发人员选择启用它。

一些数据库是在“资源可用”的基础上运行的,比如 MongoDB :

The MongoDB logo, showing a green leaf to the left of the brand name ("mongoDB").

The MongoDB logo.

然而,对于一些开发人员来说,这是一个很好的中间地带。的确,有很多“ NoSQL”数据库的粉丝,但是这些粉丝在如何使用开源或闭源数据库方面仍然会遇到限制。另一方面,开源选项将更适合您的需求。

Wondering which open source database is right for your projects? 🤔 See more in this guide ⬇️Click to Tweet

如何(以及在哪里)使用开源数据库

值得注意的是,许可证类型并不一定会限制您可以使用它的应用程序。尽管如此,开源数据库有一些不同的用例与许可非常吻合:

  • WordPress 的开源核心与开源数据库配合得很好,主要是因为没有限制。这意味着你可以创建一个强大的定制应用来满足你的需求,尤其是当你使用 REST API 的时候。
  • 键值存储:您会发现键值存储是一项资源密集型任务,有时需要专业开发人员的熟练技巧来优化。一个开放源代码的数据库解决方案将让开发者挖掘代码,并使这些调整达到完美。
  • 利基技术:许多技术应用受益于其他开源工具,如数据库。人工智能(AI) 、图形和不同的利基可以与开源数据库一起工作,就像 WordPress 一样(没有限制),并利用数据库本身的灵活性。
  • 数据科学:数据科学是开源数据库工作良好的另一个领域。同样,这一领域的流行语言,如 Python 和 R,最适合 MySQL、MariaDB 和 MongoDB,但不太适合专有解决方案。
  • 数据存储:开源数据库可能比私有数据库更安全(由于可见的代码库),因此它也非常适合于注重隐私的数据存储。当您将数据库与其他注重隐私的解决方案相结合时,这一点会得到增强,从而形成一个非常安全的、可低成本扩展的设置。

贯穿所有这些用例的主题是,开源数据库提供的限制很少。因此,您可以利用数据库软件的强大功能,并根据您的需求进行调整。

这让我们明白了为什么使用开源数据库对你有好处。

为什么你想使用开源数据库

当然,数据库本身是任何 web 应用程序的重要组成部分。你会发现没有它也很难创造出有用的东西。然而,当选择开源数据库时,您可能看不到立竿见影的好处。

你会发现你使用开源数据库的原因和你选择像 WordPress 这样的开源 CMS 是一样的。例如:

  • 您在数据库中保存的信息是您自己的,没有任何损害或限制。
  • 你可以在数据库软件的基础上构建,就像 WordPress 一样。这为你的成就打开了几乎无限的可能性,并提供了令人兴奋的选择。
  • 开源数据库是扩展和推动应用程序和业务的好方法,而不用担心许可或更高的购买成本。您可以专注于让数据库为您工作,而不是对抗许可。

在这一点上,您可能已经看到了开源数据库是如何超越专有甚至源代码可用的解决方案的有争议的赢家。考虑到这一点,让我们深入了解市场上的一些最佳选择。

开源数据库软件中的佼佼者:10 个例子

下面的列表包含了一些开源数据库,但并不详尽。将会有更多的选择,比我们在这里可以包括的更多,所以我们已经策划了我们的最佳选择。

我们的第一个条目可以说是开源数据库最突出的选择,所以让我们从这里开始。

1.关系型数据库

如果你花一分钟在数据库中查找应用程序,MySQL 会在许多列表中名列前茅。这里也是一样,因为很长一段时间以来,这是许多开发人员的默认选项。

The MySQL logo, showing "My" in blue and "SQL" in yellow, with the blue outline of a dolphin leaping above the text.

The MySQL logo.

Oracle 将其开发为一个关系数据库管理系统(RDMS)。这意味着您将使用表来存储数据,并且那些存储的数据类型可以以某种方式链接起来。

MySQL 的核心是采用一个旧的(但流行的)专有数据库系统,保持大部分兼容性,并使结果开源。因为开发人员可以过渡到它而无需重新学习 MySQL,它已经成为应用程序开发的主要部分几十年了。

许多数据库中的许多功能都是 MySQL 的镜像或衍生。例如,您将使用结构化查询语言(SQL)来处理数据库关系,并使用几乎任何编程语言来连接数据库本身。

使用 MySQL 不需要了解太多关于 SQL 的知识,学习曲线也不太陡。您可以从命令行使用数据库,MySQL 与您将使用的几乎所有操作系统(OS)都有很高的兼容性。

总的来说,MySQL 非常适合大多数用例,因为它是一个可靠、快速、可靠的万能工具。由于这一点以及多年来它相对于其他解决方案的定位,大多数主机将支持 MySQL 数据库。但是,也有一些缺点需要考虑:

  • 虽然 MySQL 在大多数情况下是高效的,但对于大型数据库来说,它可能会比较慢。
  • 此外,与其他(甚至是专有的)解决方案相比,它的调试工具还可以改进。
  • 存在数据损坏的情况,尽管这不是一个严重的问题。

很难说出太多的缺点,因为总的来说,MySQL 是一个适合大多数应用程序的坚实可靠的数据库。然而,有些用户会考虑其他产品,原因我们将在下面讨论。

2.MariaDB

尽管 Oracle 目前拥有 MySQL,并且仍然以开源解决方案的形式提供它,但它并不像开源倡导者那样享有盛誉。收购发生时,其中一位创始人将 MySQL 拆分为 MariaDB:

The MariaDB logo.

The MariaDB logo.

这是我们在 Kinsta 支持的开源数据库,也是 DevKinsta 中的选项:

Screenshot of choosing MariaDB within DevKinsta, showing a site's name, web server, PHP version, and database (the latter of which is set to

Choosing MariaDB within DevKinsta.

因为是 MySQL 的一个分支,兼容性几乎是 1:1 。MariaDB 的开发人员也喜欢保持兼容性接近它的分叉。因此,您可以使用 MariaDB 作为 MySQL 的“替代”,几乎没有任何后果,并且毫不费力地迁移到 MySQL。

尽管 MariaDB 是 MySQL 的一个分支,但它仍在寻找自己的道路。您应该知道开源数据库的一些独特特性:

  • MariaDB 使用 Aria 存储引擎来处理复杂的 SQL 查询。这使得数据库的速度超过了 MySQL。
  • 您可以对表列使用动态行,这有助于提高灵活性和适应性。
  • 有一些你在 MySQL 中找不到的针对特定用例的专用存储引擎。例如,您可以实现分布式存储、分布式事务等等。

由于兼容性很好,你可以在任何使用 MySQL 的地方使用 MariaDB,而不会有太大的损失。因此,你可以把它看作是“所有应用的一切”,就像它的分叉一样。然而,值得注意的是,兼容性只是一种方式,所以你需要选择一方:MySQL 或 MariaDB。这个开源数据库需要忠诚!

3.一种数据库系统

如果你只知道 PHP 和 WordPress,你可能对 PostgreSQL 了解不多。然而,它是一个关系型的开源数据库,许多开发人员在数据科学、图形和人工智能行业使用它,因为它非常适合于 Python 和 Ruby 应用(尽管您也可以使用 PHP)。

The PostgreSQL logo, which is an illustration of a blue elephant head with a black outline, without any accompanying text.

The PostgreSQL logo.

与 MySQL 强大的 denim 相比,PostgreSQL 更像是精美的丝绸,因为它是一个深思熟虑的开源数据库,提供了许多杀手级功能:

  • 可以实现异步复制
  • 有对 JSON 风格的文档存储、键值存储和 XML 的原生支持。
  • 您可以对数据库进行全文搜索。
  • 一些内置的数据类型对于某些应用程序来说是无价的,比如地理定位、数组和范围。

尽管如此,您还是要小心处理 PostgreSQL,因为它不像其他用于大量读取应用程序的解决方案那样熟练。首先,如果您必须定期从现有数据创建报告,PostgreSQLs 文档存储可能会受到如此大的数据集的影响。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

然而,如果您希望在混合基础上包含 NoSQL 风格的功能,那么这种相同的文档存储模型是理想的。对键值和文档存储的本机支持是一个省时器,可以让您快速地进行项目。

4.雷迪斯

Redis 不同于这个列表中的其他开源数据库,因为几乎没有相同的应用程序使用它。

The Redis logo with the text in lowercase, showing a stack of three red tiles to the left that have white star, circle, and triangle shapes on them.

The Redis logo.

它是一个数据库,使您能够将数据结构化为键值对。您会发现这类似于 PHP 中的关联数组或 Python 中的字典——这是一种链接数据以便稍后快速引用的方式:

<?php
$type = array("Charmander"=>"fiery", "Squirtle"=>"soggy", "Snorlax"=>"sleepy");
echo "Snorlax is " . $type['Snorlax'] . " all the time.";
?>

“速度”在这里是至关重要的术语,因为 Redis 是缓存的首选数据库。这有几个原因:

  • Redis 是一个“内存”存储解决方案——完全在 RAM 中——这意味着读写速度快得惊人。
  • 您可以在几分钟内学习 Redis 的基础知识,并立即开始存储对象。
  • 您可以为字符串设置到期时间,这是缓存的一个重要组成部分。
  • 一个新颖的发布/订阅特性使用 Redis 作为发送方和接收方之间的消息缓冲。不是这些端点进行直接连接,而是发送方将发送到一个专用的 Redis“通道”,然后该通道将它移动到接收方(反之亦然)。

所有这些都意味着 Redis 非常适合分布式数据和实现缓存。对于更复杂的应用程序来说,它不是最好的,但这不在它的职权范围之内。相反,你可以将它与另一个数据库(如 MariaDB)一起使用,让它支持你的应用程序的其余部分。

5.SQLite

对于这个关系型开源数据库,关键卖点的线索就在名称中:SQLite 是一个小型的轻量级库,它提供了一个数据库引擎。

The SQLite logo, showing a feather silhouette bordering the right side of a blue gradient box.

The SQLite logo.

你经常会在智能手机等较小的设备中找到它,因为它很轻。事实上,整个数据库由一个.sqlite文件组成,它可以存在于系统的任何地方。您不需要安装任何服务器软件或连接到其他服务来使用 SQLite。

尽管数据库是如此轻量级的工具,但您仍然可以拥有数百 TB 的数据库大小,最大行大小为千兆字节。即使文件这么大,SQLite 仍然很快。

您会发现使用 SQLite 作为数据库有很多很好的用例:

  • 简单应用程序的开发人员会喜欢 SQLite,因为它是一个严肃、直接的解决方案。
  • 对于没有(或不可能有)系统管理员或开发人员在场的物联网(IoT)应用程序来说,这非常好。
  • SQLite 可能适合低流量网站,因为这些需求将是直截了当的。
  • 虽然我们在这里主要讨论 web 应用程序,但是桌面应用程序也可以使用 SQLite 来保持高性能。

考虑到 SQLite 的结构,它不太适合大流量的网站,因为性能不会达到最佳。更重要的是,这个轻量级开源数据库缺少一些可能很重要的特性。例如,不能用 MySQL 或 MariaDB 这样的客户端查询数据库。

6.Neo4j

这个列表中的大多数开源数据库都是关系型的。改变一下,Neo4j 是基于图形的。

涡轮增压您的网站,享受我们的资深 WordPress 团队的 24/7 支持。我们的谷歌云驱动的基础设施侧重于可伸缩性、性能和安全性。查看我们的计划

The Neo4j logo in lowercase, with a minimalistic blue globe to the left of the text that features three green circles connected by rows of white dots.

The Neo4j logo.

这对于你会发现的一些更现代的网络应用程序来说太棒了。Neo4j 几乎是实现基于图形的数据库的唯一解决方案(到目前为止)。

数据通常不会以有序的表格、行和列的形式出现。我们通过关系数据库来安排。然而,很难使用 SQL 为现代 web 应用程序(如社交网络)复制有机连接。它是非结构化的,与 SQL 完全相反。

正因为如此,Neo4j 是一个独一无二的数据库,几乎可以处理任何应用程序,它提供了许多好处:

  • 将表格数据转换成图形并支持结果分析是非常棒的。
  • Neo4j 也是事务性应用的明星。
  • 有一种专用的查询语言(Cypher)来帮助您获取数据并以最佳方式使用它。

但是,由于数据库的结构,性能可能是一个问题。例如,与其他解决方案的范围索引不同,您只能使用“散列索引”来对数据进行排序。这可能会消耗您的系统资源并影响性能。

但是,如果您想要实现基于图形的数据库,Neo4j 可以满足您的需求。这是一个顶级的开源数据库,只要你按照预期的方式使用它。

7.OrientDB

我们说过“几乎”没有其他基于图形的开源数据库,但这为其他人留下了一些空间。OrientDB 就是其中之一。尽管多年来它的所有权发生了变化,但它仍然是为您的 web 应用程序实现基于图形的数据库的一种很好的方式。

The OrientDB logo, with the letters "DB" in orange and the

The OrientDB logo.

OrientDB 可以处理几种模型,比如对象、图形、文档和键值。即便如此,它仍被归类为 NoSQL 解决方案,并且与记录有直接联系,因此它的核心是一个基于图形的数据库。

OrientDB 的主要好处是它的灵活性和可伸缩性。与 Neo4j 非常相似,它速度很快,但在性能方面存在一些问题。然而,OrientDB 更加灵活,并且正在开发其他索引机制来帮助用户。

您会发现 OrientDB 在相同的应用范围内与 Neo4j 一样强大,例如,社交网络、银行和金融、交通管理等。

8.CouchDB

Apache——服务器类型——也开发 CouchDB。很像 SQLite,这是一个小型的、不引人注目的开源数据库,是无数项目的工厂解决方案。

The CouchDB website, showing the silhouette of a couch in red to the left of the text.

The CouchDB website.

这个开源数据库的重点是可靠性。这个想法是数据位于多个分布式节点的集群中。这些节点中的一些将离线,它们将“保存”数据,直到它们再次在线。然后,所有数据都被传送到集群,并分发到网络中的其他节点。

为了进一步解释,设想一个包含移动设备上生成的数据的数据库。不能保证该设备将访问在线连接,因此数据将保留在那里,直到其“节点”再次在线。

因此,CouchDB 是一个久经沙场的可靠数据库,如果您需要离线容错,它应该是一个重要的考虑因素。

也就是说,CouchDB 最显著的优点也是缺点。它必须存储数据的冗余副本,这将增大文件大小。更重要的是,你会发现写的速度并不快,所以它不适合需要快速响应的用例。

然而,作为一个为可靠性而设计的离线优先开源数据库,CouchDB 是符合要求的应用程序的领跑者。

9.FirebirdSQL

FirebirdSQL 不像列表中的其他数据库那样出名,但是它可以在特定的场景中扮演重要的角色。

The FirebirdSQL logo, showing an orange-and-yellow silhouette of a phoenix head within a circle, without any accompanying text.

The FirebirdSQL logo.

您会发现 FirebirdSQL 具有几乎所有与其他基于 SQL 的数据库相同的特性和功能,并且它提供了与 MySQL 的完全兼容性。这可能是你找不到许多数据库支持者的原因——与其他平台有太多相似之处。但是,它可以在几个方面独立存在:

  • 它占地面积小,在空间有限的地方非常方便。
  • 您可以使用 FirebirdSQL 作为需要伸缩的桌面应用程序(如 LibreOffice)的数据库。
  • 数据库是跨平台的,对硬件要求不高。当您需要运行大型数据库时,这使它成为一个可靠的解决方案。

还有 FirebirdSQL 的高知名度用户,比如英国的 National Rail。尽管流行其他解决方案,FirebirdSQL 可以作为一个轻量级但功能强大的开源数据库用于您的项目。

10.BigchainDB

我们将让您猜测 BigchainDB 希望在哪些行业和应用程序中脱颖而出!这个开源解决方案采用分布式数据库,并融合了区块链技术来增强体验。

The BigchainDB logo, with the letters "DB" in green superscript.

The BigchainDB logo.

与区块链的关键元素非常相似,BigchainDB 使用不变性、分散化和“多资产”来帮助您管理数据。

您可以基于丰富的权限设置、自定义资产等来自定义您的网络。数据库也可以在分散的设置下工作,尽管关注安全或隐私的应用程序提供了最好的用例。

例如,您会发现它是保护知识产权(IP)和验证用户凭证的一个很好的盟友。相比之下,您会发现 BigchainDB 并不适合更典型的应用程序,而且对于许多 web 应用程序来说可能确实有些大材小用。

很像 Neo4j 或者 OrientDB,如果你有严格的用例,需要 BigchainDB,你会很高兴。它可以为您关注隐私的 web 应用程序添加许多独特的方面,因此它可以与您的中央开源数据库一起工作,以增强您的供应。

Wondering which open source database is right for your projects? 🤔 See more in this guide ⬇️Click to Tweet

摘要

如果你想创建一个任何类型的应用程序,一个数据库是必要的。Web 应用程序至少需要一个数据库,您可能需要几个数据库来包含您在各种用例中处理的所有数据。

虽然有许多不同许可类型的数据库,但在大多数情况下,开源数据库将是您的最佳选择。

与 WordPress 等开源解决方案非常相似,开源数据库将在核心层面上为您提供灵活性、可伸缩性和安全性。更好的是,诸如 MySQL、 MariaDB、PostgreSQL 和 Redis 之类的工具都是开源的、受欢迎的,并且受到许多 web 主机的支持。

在这个列表中,你有最喜欢的开源数据库吗?请在下面的评论区告诉我们为什么这是你的选择!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

十大最佳开源电子商务平台

原文:https://kinsta.com/blog/open-source-ecommerce/

电子商务发展迅速。事实上, eMarketer 预计 2022 年全球电子商务销售额将达到 5.542 万亿美元。

如果你想开一家网店,从这种增长中获益,选择合适的电子商务平台是你要做的最重要的决定之一。有几种电子商务解决方案可供选择,正确的选择取决于您的需求。
全球电子商务销售额预计将达到 5.542 万亿美元💰-因此,为您的企业选择合适的平台比以往任何时候都更加重要📈 点击发布推文
NeilsenIQ表示,自疫情事件以来,67%的购物者报告他们的购物方式发生了变化。您可以从定制的、可扩展的电子商务解决方案中受益,以迎合新一代客户的需求。

查看我们的最佳开源电子商务平台视频指南

请继续阅读,了解更多关于最佳电子商务平台和你应该考虑的因素。

电子商务平台 101

电子商务平台是使企业能够管理其在线商店的软件,包括销售、营销和运营。
电子商务平台通常具有支持以下功能的特性:

在寻找电子商务平台时,你会遇到软件即服务(SaaS)和开源电子商务解决方案

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

在深入每个解决方案的细节之前,让我们看看选择电子商务平台时的常见考虑因素。

电子商务平台:寻找什么

选择一个电子商务平台并不像挑选午餐吃什么那么简单。你需要考虑你的团队的能力,你的业务增长的未来,前端和后端的易用性,当然,还有成本。

在决定平台之前,请确定您的优先事项:

  • 易用性:平台的界面直观吗?你必须花很多时间学习如何使用它吗?
  • 可扩展性 : 理想情况下,你将受益于一个与你的业务一起成长的电子商务平台。您关注的解决方案是否支持小型企业到大型企业?
  • 自主:你对平台有完全的控制权,还是依赖某个提供商?例如,SaaS 的电子商务解决方案会像社交媒体平台一样定期更新,你需要适应这些变化才能继续运营。
  • 维护和安全:考虑维护和安全。你自己有管理这些的技术能力吗?你有资源雇人做这件事吗?或者您更愿意让平台团队为您维护和保护东西?
  • 成本:该平台的计划是否在您的短期和长期预算范围内?例如,SaaS 解决方案使经营一个电子商务商店更容易,但随着你的电子商务商店的增长,成本可能会大幅上升。
  • 支持:你能解决你遇到的软件问题吗?或者您需要平台的客户支持吗?
  • 功能和 可定制性 : 平台是否提供你想要的功能?如果您被该平台所束缚,您会愿意使用它的内置特性吗,或者您希望使用第三方工具吗?如果你想使用第三方工具,你应该寻找一个易于定制和开放集成的电子商务解决方案。

SaaS vs 开源电子商务平台

在 SaaS 和开源电子商务平台之间的选择归结为你需要什么样的电子商务解决方案。

SaaS 开源
易用性 专为初学者打造 可能需要广泛的技术知识
--- --- ---
可量测性 SaaS 平台适用于不同的规模 可攀登的
--- --- ---
自治 有限的控制,因为第三方提供商管理您的业务 允许您使用扩展和插件自定义和扩展功能
--- --- ---
维护和安全 SaaS 平台负责维护和安全 你必须注意你的维护和安全更新。
--- --- ---
支持 有空的 无可用。一些平台提供额外费用的客户支持。
--- --- ---
费用 每月固定成本从每月 29 美元(基本)到每月 2,500 美元(企业) 免费平台。虚拟主机+高级功能扩展可能会产生额外费用。
--- --- ---

SaaS 电子商务平台

在 SaaS,服务提供商在云上托管电子商务软件 ,并通过订阅向你发放许可。月费从小型企业每月 29 美元到大型企业每月 2500 美元不等。

除了托管,SaaS 还包括安全,维护,更新和技术支持,当你购买一个计划。

如果你想快速启动你的网站,并节省基础设施、安装、安全和维护成本,SaaS 模式是完美的选择。

流行的 SaaS 电子商务平台包括 Shopify、BigCommerce、Wix 和 Squarespace。

开源电子商务平台

开源电子商务解决方案让你访问源代码,根据自己的喜好修改平台。你可以免费使用源代码,但是电子商务托管和扩展可能会产生额外的费用,所有这些都在你的其他网站费用之上。

如果你是一个想从头开始建立自己的网上商店的企业家,开源平台为你实现这个梦想提供了灵活性、可定制性和可伸缩性。

虽然开源平台使你能够定制你的电子商务商店,但它们将安装、管理、安全、托管、维护和更新留给你,这意味着开源平台可能比 SaaS 平台需要更多的关注。

由于开源平台陡峭的学习曲线,你可能会听说一些公司从 SaaS 解决方案开始,当他们超越 SaaS 平台时就转向开源。

也就是说,开源电子商务平台并不局限于拥有大批网络开发者的大公司。您也可以在开源平台上从小处着手,并在此基础上不断发展。

此外,一些开源电子商务平台提供托管选项,为您提供两全其美的服务。

2022 年最佳开源电子商务平台

让我们来看看市场上一些最好的开源电子商务平台。

1.伍尔科贸易公司

WooCommerce's homepage says,

WooCommerce homepage. (Image source: WooCommerce)

WooCommerce 是一个流行的电子商务 插件,它为 WordPress 内容管理系统(CMS)提供电子商务功能,比如库存管理。它支持超过 500 万个电子商务网站,包括新百伦和斯巴鲁。

WooCommerce Shopify 是排名前 100 万的电子商务网站中使用最多的电子商务平台,WooCommerce 拥有 29%的市场份额(而 Shopify 的市场份额为 21%)。

Pie graph depicting ecommerce usage distribution in the Top 1 Million sites. WooCommerce Checkout has a 29% market share; Shopify has a 21% market share; Magento has an 8% share; Shopify Plus has a 3% share; and the other solutions have a 39% share.

WooCommerce vs Shopify market share. (Image source: BuiltWith)

WooCommerce 可以免费使用,但需要 WordPress 托管。你可以从 Kinsta 的 WooCommerce 主机中受益,该主机具有为 WooCommerce 量身定制的功能。
虽然开源电子商务平台通常需要专业技术知识,但 WooCommerce 非常容易学习,而且针对速度进行了优化

特性:

  • 灵活和可定制的,像 WordPress
  • 免费和付费的广泛选择 WooCommerce 主题
  • 庞大的扩展库
  • 内置安全功能
  • 支持多种集成

定价:免费

信息

如果你想了解更多关于 WooCommerce 的信息,请查看我们的 WooCommerce 指南

2.Adobe Commerce(前身为 Magento)

Adobe Commerce's homepage that says,

The homepage of Adobe Commerce (formerly Magento). (Image source: Adobe)

Adobe Commerce (之前的 Magento)是一款电子商务软件,是 Adobe 体验云的一部分。

Adobe Commerce 是一个强大、灵活、可扩展和可定制的开源平台,被全球 250,000 多家企业级在线商店使用,这些商店处理多种产品和大量流量。例如,惠普,前身为惠普,也使用 Adobe Commerce。

由于它是从 Magento 派生出来的,众所周知 Magento 是面向开发人员的,因此 Adobe Commerce 需要高级技术技能。

特性:

  • 全天候客户支持
  • 通过 Magento marketplace 的多个扩展
  • API 集成
  • 原生 SEO 特性
  • 内置分析

定价: Magento 开源免费;Adobe 的定价可应要求提供

信息

你在 Magento 和 WooCommerce 之间做选择吗?查看我们的对比指南

3.Drupal 商务

Drupal Commerce's homepage that says,

Drupal Commerce’s homepage. (Image source: Drupal)

Drupal Commerce 是一个建立在 Drupal CMS 之上的电子商务平台,后者是一个类似于 WordPress 的开源 CMS

随着谷歌算法转变为更喜欢和优先考虑内容营销,单靠电子商务平台是不够的。如果你想对内容进行排名,你的电子商务平台必须包含一个体面的 CMS 功能。这是 Drupal Commerce 提供的东西。

Drupal Commerce 很受企业网站的欢迎,比如卡地亚。

特性:

  • 搜索引擎优化和营销功能
  • 订单管理工具
  • 报告和分析
  • 通过 RESTful API 与其他系统集成

定价:免费

4.网站架站软件

Joomla's homepage says,

Joomla’s homepage. (Image source: Joomla)

Joomla T1 于 2005 年推出,是 T2 第二大流行的开源 CMS T3。它为 2.5%的网站提供动力,其社区拥有超过 20 万名成员。像 WordPress 一样,你可以通过添加扩展来使用 Joomla 进行电子商务。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

作为一个开源的 CMS,Joomla 为你提供了优化你喜欢的在线商店的灵活性。您可以为每一部分内容使用不同的模板。然而,与 Adobe Commerce 一样,它也需要高级技术技能。

Joomla 受到宜家、立顿和假日酒店等品牌的青睐。

特性:

  • 市场上有 6,000 多种扩展可用于增加功能
  • 响应式设计
  • 无限产品
  • 支持多种语言和货币

定价:免费

5.预车间

PrestaShop's homepage says,

Homepage of PrestaShop open source ecommerce platform. (Image source: PrestaShop)

PrestaShop 是一个基于 Symfony 的开源电子商务平台,这是一个框架,通过让你挑选和添加你需要的模块到你的网站或应用程序来提高灵活性。

PrestaShop 拥有 600 多项功能和 5000 多个模块,但其中许多附加组件需要额外付费。除此之外,如果你不精通技术,PrestaShop 提供了一个完全托管的解决方案,将托管和维护与他们的开源软件结合起来。

Zippo 打火机和 Fashion Stork 是使用 PrestaShop 的 300,000 多家在线商店之一。

如果您计划使用 PrestaShop,请注意它不支持几种流行的集成,因此您必须使用它的内部解决方案。

特性:

  • 数以千计的模块和附件,增加了功能
  • 3000 多个移动优化模板
  • 集成的搜索引擎优化和营销工具
  • 多种货币支持

定价:免费;托管解决方案计划起价为每月 450 欧元(473 美元)。

信息

你在 WooCommerce 和 PrestaShop 之间做决定吗?查看我们的对比指南

6.开放式购物车

OpenCart's homepage that says,

Homepage of the OpenCart ecommerce platform. (Image source: OpenCart)

OpenCart 是一个开源电子商务平台,全球有超过 400,000 个网站所有者使用,包括英国红十字会。它提供了一系列功能——从一个界面的多商店管理到充满主题和扩展的市场。

然而,OpenCart 提供有限的搜索引擎优化和营销功能,这可能会限制你发展你的电子商务网站。此外,您需要技术知识才能从 OpenCart 中受益,因为它不提供客户支持。

特性:

  • 管理控制面板—快速概述功能
  • 备份和恢复工具
  • 拥有 13,000 多个附件和扩展的大型市场
  • 支持废弃的 购物车和折扣券
  • 移动应用程序

定价:免费

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

7.狂欢式商业

Spree Commerce's homepage that says,

Homepage of the Spree Commerce platform. (Image source: Spree Commerce)

Spree Commerce 成立于 2008 年,是一个无头 电子商务平台,既可作为开源平台,也可作为 SaaS 使用。

无头电子商务平台可以让你将前端(网站客户的头部或数字店面)与后端(确保你的商店平稳运行的后台软件)分开。您可以单独准备您的前端,并将其连接到无头平台,提供丰富的客户体验。

自 2007 年以来,Spree Commerce 的 850 多名贡献者已经帮助了超过 50,000 家企业,包括 Blue 围裙和 Everlane。开源版本是免费的,但功能有限,而 Spree as a Service 为您提供了额外的功能,并让您从云托管中受益。

特性:

  • 多供应商市场
  • 支持 B2B 和 B2C 电子商务
  • 50 多个第三方集成
  • 支持 Next.js 商务和VueT2】店面
  • 分析仪表板、库存管理系统和搜索引擎优化工具

定价:免费开源;如有要求,可提供 SaaS 价格。

信息

你想增加你的电子商务销售额吗?实施这些电子商务战略,看着你的销售飙升。

8.立方体手推车

CubeCart's homepage that says,

Homepage of CubeCart’s open source ecommerce platform. (Image source: CubeCart)

成立于 2003 年的, CubeCart 是一个英国开源电子商务平台,在英国内外广受欢迎

CubeCart 使用模板驱动的响应皮肤,使在线商店在不同设备上具有视觉吸引力。然而,它的灵活性仅限于如何在设备上显示在线商店——由于缺乏功能,它不适用于企业。虽然它与一些应用程序集成,但它不像 OpenCart 那样可扩展。

与 PrestaShop 一样,CubeCart 也提供其软件的托管和自托管版本,尽管它在 2015 年免费发布了所有软件版本。CubeCart 的粉丝包括库拉卡和哈里斯有机葡萄酒。

作为一个开源电子商务平台,CubeCart 缺乏实时支持,但你可以通过每月支付最低费用获得有偿技术支持。

特性:

  • 无限的产品、订单、类别和管理员
  • 100%模板驱动的响应皮肤
  • 社交媒体和各种插件
  • 礼券、优惠券和凭证功能
  • 支持 PayPal 和 SagePay 等多种支付网关
  • 销售报告

定价:免费,无客户支持。付费计划每月起价 33 美元。

9.商店用品

Shopware's homepage that says,

Homepage of Shopware open source ecommerce platform. (Image source: Shopware)

Shopware 是一个德国开源电子商务平台,成立于 2000 年。

像 Spree Commerce 一样,Shopware 是由 Symfony 驱动后端和前端的 Vue.js 构建的。它有一个庞大的开发者社区,在全球拥有超过 100,000 名客户,包括像阿斯顿马丁和 M & Ms 这样的品牌

值得注意的商店软件特性包括 4000 多个扩展、完全集成的 CMS 功能(如 Drupal)以及集成的 SEO 和营销工具。

然而,免费版本提供有限的功能,并且与 CubeCart 一样,客户支持需要额外的订阅。

特性:

  • 完全集成的 CMS 功能
  • 拖放界面,方便在线商店的定制
  • 搜索引擎优化和营销工具
  • 与谷歌购物和社交媒体的整合
  • 自主托管或云托管变体之间的选择

定价:免费,功能有限。高级计划每月起价 199 欧元(210 美元)。
T3】

10.Solidus

Solidus's homepage that says,

Homepage of the Solidus open source ecommerce platform. (Image source: Solidus)

Solidus 是一个开源的电子商务平台,由 Ruby on Rails 提供支持,确保了安全性和灵活性。

Solidus 既可以作为一个整体平台(前端和后端捆绑在一起),也可以作为一个像 Spree 这样的无头电子商务平台。

Solidus 具有广泛的集成功能,并有一个关于 Slack 和 Stack Overflow 的活跃社区。使用 Solidus 的著名品牌包括 MeUndies、Bonobos 和 Ace & Tate。

功能:

  • 库存管理
  • 促销引擎根据订单历史提供折扣和其他复杂的促销
  • 多种支付集成和商店信用支持
  • 支持多承运商运输

定价:免费
想确保电子商务商店成功建立?🛒查看本指南✅ 点击推文

摘要

选择一个电子商务平台是你作为电子商务企业主所做的最重要的决定之一。

SaaS 平台易于使用,并会为你处理一切,但像 WooCommerce 这样的开源平台提供了急需的灵活性,以扩展和增强客户体验。

如果你在权衡你的选择,考虑你的产品、技术专长和企业规模。

换句话说,评估您对定制、特性和可伸缩性的需求。如果你正在开始或经营一个中小型企业,WooCommerce 将为你提供很好的服务。另一方面,如果你正在为一家企业开一个网上店面,你可能会从 Magento 的功能中受益。

你更喜欢哪个平台?请在评论中告诉我们。

通过以下方式优化您的电子商务网站:

  • Cloudflare 企业集成
  • 自动数据库优化
  • 谷歌云平台
  • 内置性能监控工具

与 Kinsta 一起享受所有这些和更多好处。查看我们的计划与销售人员交谈找到适合您的计划,并使用我们的 30 天退款保证进行尝试。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何优化 CSS 以获得最佳网站性能

原文:https://kinsta.com/blog/optimize-css/

即使在 2021 年,网络性能仍然是个问题。根据 HTTP Archive 的数据,一个普通的页面需要 2 MB 的下载量,发出超过 60 个 HTTP 请求,在移动设备上完全加载需要 18 秒。样式表占 60 kB,分布在七个请求中,所以当试图解决性能问题时,它很少是首要任务。

然而,CSS 确实有影响,不管它看起来有多轻微。一旦你解决了你的 JavaScript ,学习适当地优化 CSS 应该是下一个优先事项。

让我们开始吧!

CSS 如何影响页面性能

CSS 看起来很简单,但可能需要一些繁重的处理。

CSS 是渲染阻塞的

当您的浏览器遇到一个``标签时,它会暂停其他浏览器的下载和处理,同时获取和解析 CSS 文件。

JavaScript 也可以阻止浏览器呈现,但是异步处理是可能的:

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

  1. 用于并行下载脚本的async属性,这些脚本在准备就绪后会立即运行。
  2. 并行下载的defer属性,然后在 DOM 准备好的时候按顺序运行。
  3. 加载 ES 模块的type="module"属性(其行为类似于defer)。

像图像这样的资产经常需要更多的带宽,但是高效的格式是可用的,并且它们可以延迟加载 ( loading="lazy"属性)而不会阻塞浏览器渲染。

这些在 CSS 中都是不可能的。文件被缓存,所以后续的页面加载应该更快,但是呈现阻塞过程仍然存在。

想提高自己网站的性能吗?🚀从 CSS 开始💥 点击推文

处理大型 CSS 文件需要时间

样式表越大,下载和处理 CSS 对象模型(CSSOM)所需的时间就越长,浏览器和 JavaScript APIs 可以用它来显示页面。尽管 CSS 样式表比大多数其他网站文件都小,但它们也不能幸免于“越小越好”的经验法则。

CSS 文件增长

很难识别不再使用的样式,删除错误的样式会对网站造成严重破坏。开发人员通常选择最安全的“保留一切”方法。不再使用的页面样式组件和小部件继续存在于 CSS 中。结果呢?文件大小、复杂性和维护工作量呈指数级增长,使得开发人员越来越不愿意删除多余的代码。

样式表可以引用其他资源

CSS 可以使用@import 规则引用其他样式表。这些导入阻塞了当前样式表的处理,并在序列中加载进一步的 CSS 文件

也可以引用其他资源,如字体和图像。浏览器将尝试优化下载,但当有疑问时,它会立即获取它们。内联的 base64 编码文件需要进一步处理。

CSS 效果呈现

浏览器有三个渲染阶段:

  1. 布局(或重排)阶段计算每个元素的尺寸,以及它如何影响周围元素的大小或位置。
  2. 绘制阶段将每个元素的可视部分绘制到单独的图层上:文本、颜色、图像、边框、阴影等。
  3. composite 根据堆叠上下文、定位、z 索引等,以正确的顺序将每个层绘制到页面上。

如果不小心的话,CSS 属性的改变和动画会导致所有三个阶段重新渲染。一些属性,如阴影和渐变,在计算上也比块颜色和边距更昂贵。

CSS 性能分析工具

承认你有 CSS 性能问题是恢复的第一步!找到并解决原因是另一回事。

以下工具和服务(不按任何顺序排列)可以帮助您识别代码中的样式瓶颈。

1.DevTools 网络面板

网络性能专家在开发工具和 T2 网络小组上花费了大量的时间。DevTools 是大多数现代浏览器的原生版本,尽管在我们的例子中我们将使用 Google Chrome。

DevTools 可以从浏览器菜单打开,通常是在更多工具 > 开发者工具,或者通过键盘快捷键 Ctrl | Cmd + Shift + IF12

切换到网络选项卡,确保选中禁用缓存,以防止缓存文件影响报告。您还可以更改限制选项来模拟较慢的移动网络。

刷新页面以查看下载和处理瀑布图:

DevTools Network panel.

DevTools Network panel.

任何长棒线都值得关注,但你应该特别警惕长阻塞/停滞棒线(以白色显示)。在这个例子中,突出显示的行和所有后面的行不能开始下载,直到在 HTML 页面的顶部处理了呈现阻塞的 CSS 和 JavaScript 文件。

过滤器框允许您显示或隐藏特定资产:

  • larger-than:*<S>*:限制大于 < S > 的文件,以字节(10000)、千字节(1,000 kB)或兆字节(1 M)表示
  • -larger-than:<S>:限制小于 < S > 的文件
  • -domain:*<.yourdomain.com>:显示不是从您的主域加载的第三方请求。这些是慢速网站的主要原因。

一个具有优化 CSS 的高性能页面通常具有较少的并行加载的资产和较短的阻塞/停滞条。

2.网页测试

WebPageTest 提供了类似的网络瀑布视图,以及许多其他性能图表:

WebPageTest.org asset waterfall to help optimize css

WebPageTest.org asset waterfall.

该服务使用基于全球不同位置的设备,因此您可以评估现实世界的性能和 CSS 优化。

3.Chrome DevTools 灯塔面板

DevTools Lighthouse 面板在基于 Chromium 的浏览器中提供,如 Chrome、Edge、Brave、Opera 和 Vivaldi。您可以为移动和桌面设备生成性能、渐进式 Web 应用、最佳实践、可访问性和搜索引擎优化报告。

DevTools Lighthouse panel.

DevTools Lighthouse panel.

该工具提出改进建议,包括优化 CSS 的方法。并非所有的都是实际可行的,但是最有益的快速成功会被强调出来。

4.谷歌页面速度洞察

PageSpeed Insights 是 Lighthouse 的网络版。它的功能较少,但可以在任何浏览器中使用,并提供一些替代的见解。

例如,一个树形图显示了最大的 JavaScript 资产和一个覆盖率度量,它指示了使用和未使用的代码比例:

Google PageSpeed Insights treemap to help optimize css

Google PageSpeed Insights treemap.

CSS 不显示,但是 JavaScript 的数量会影响样式的效率。

类似的网速测试工具还有 Pingdom 网速测试GTmetrix

5.Chrome DevTools 覆盖面板

基于 Chromium 的浏览器中的 DevTools Coverage 面板有助于定位未使用的 CSS(和 JavaScript)代码。从 DevTools 更多工具子菜单中选择覆盖率,然后刷新您的页面并浏览您的站点/应用:

DevTools Coverage Panel.

DevTools Coverage Panel.

CSS 和 JavaScript 资产显示在覆盖率面板中,未使用代码的比例用红色表示。单击任意文件查看其源代码,未使用的代码在行号栏中以红色突出显示。

一些需要注意的事项:

  • 如果你刷新或导航到一个新的页面,覆盖率指标就会重置,这在 WordPress 网站上是很典型的。如果您浏览的是加载内容而不刷新页面的单页面应用程序,那么未使用的代码量只会减少。
  • 该工具只能说明到特定时间点为止使用的 CSS。它不能确定一个小部件是没有被查看过还是有多个 JavaScript 绑定的状态。

6.Chrome DevTools 实时性能监视器

基于 Chromium 的浏览器有一个实时性能监视器。同样,这可以从 DevTools More tools 菜单中获得。当您浏览页面、滚动和触发动画时,图表会更新:

DevTools Real-Time Performance Monitor.

DevTools Real-Time Performance Monitor.

以下指标对于优化 CSS 性能特别重要(越低越好):

  • CPU 使用率:处理器使用率从 0%到 100%。
  • 布局/秒:浏览器重新布局页面的速度。
  • 样式重新计算/秒:浏览器必须重新计算样式的速率。

如果 CSS 由于外部因素而陷入困境,其他指标也可能有用(同样,值越低表示性能越好):

  • JS 堆大小:JavaScript 对象使用的总内存。
  • DOM 节点:HTML文档中元素的数量。
  • JS 事件监听器:注册的 JavaScript 事件监听器的数量。
  • 文档:资源的数量,包括页面、CSS 文件、JavaScript 模块等。
  • 文档框架:框架、iframes 和 JavaScript 工作脚本的数量。

7.DevTools 性能报告

DevTools Performance 面板允许您记录页面活动以供进一步分析,并帮助识别性能问题。生成的报告很复杂,许多开发人员避免使用它们,但是它们提供了有价值的信息。

性能面板的设置图标允许您设置各种选项,例如降低网络和 CPU 速度。您还可以禁用 JavaScript 示例,以便不记录详细的调用堆栈。

首先,单击圆形的记录图标,加载和/或使用您的页面,然后单击停止按钮查看报告:

DevTools Performance Report to help optimize css

DevTools Performance Report.

几乎所有这些指标对 JavaScript 开发人员都有用,但是 CSS 优化问题可能在以下方面尤为明显:

  • 顶部红色条:这表示帧速率显著下降,这可能会导致性能问题。这在页面加载开始时是正常的,但是过多的 CSS 动画也可能是一个问题。
  • 摘要图表:高加载、渲染和绘制指标可能表明 CSS 问题。

间接 CSS 性能修复

以下修复不会直接解决 CSS 问题,但是它们可以帮助您以相对较少的努力解决一些性能问题。

使用一个好的主机

使用一个好的主机,让服务器在物理上离用户更近,会带来立竿见影的性能优势。托管计划各不相同,但主要有三种类型:

  1. 共享托管:你的网站托管在一个物理服务器上,可能还有数百个其他网站。磁盘空间、RAM、CPU 时间和带宽是共享的。计划通常很便宜,但是性能和可用性会受到其他站点的影响。升级是可能的,但是你的站点通常会保持在相同的基础设施上。
  2. 专用托管:您的网站托管在您拥有的一台或多台物理服务器上。硬件可以根据需要进行配置和升级。计划往往是昂贵的,硬件故障仍然是个问题。
  3. 云托管: 云托管将硬件基础设施抽象成一组可以按需访问的服务。您的站点可以跨一系列设备进行配置,从而简化升级。

云托管计划和价格相差很大。你可以考虑:

  1. 平台即服务(PaaS) 选项,如虚拟网络服务器和数据库,或
  2. 软件即服务(SaaS) 选项,提供完全托管的应用,如 WordPress

交换主机可以提高性能。它不太可能解决你的所有问题,但它是解决后端和带宽问题的一个经济高效的解决方案。

您还可以考虑使用内容交付网络(CDN) 或专业的图像和视频 CDN,将负载分布在地理上更靠近用户的多个位置。

利用浏览器和服务器效率特性

大约 10%的网站不激活 gzip(或更好的)压缩,这通常是默认的服务器选项。通过在传输前压缩文件,CSS 的大小减少了 60%或更多。它不会修复低效的 CSS,但代码会更快到达!

您还应该激活 HTTP/2 (或者更好),它以更小的二进制格式发送数据,压缩报头,并且可以在同一个 TCP 连接上发送多个文件。

最后,确保浏览器可以有效地缓存 CSS 和其他文件。这通常是在 HTTP 头中设置过期最后修改和/或 ETag 散列的问题。

优化您的 CMS

像 WordPress 这样的内容管理系统可以用主题和插件来扩展,为他们自己的 CSS 服务。在可能的情况下,你应该加速你的 CMS 以:

  1. 移除未使用的插件。
  2. 使用更简洁的主题
  3. 启用缓存以防止过多的页面重新生成。

优化您的图像

图像不像 HTML、CSS 和 JavaScript 那样具有相同的处理和渲染开销,但是它们占据了页面权重和可用带宽的很大一部分。考虑:

  1. 删除不必要的图像。
  2. 调整大图像的大小——可能不超过它们在屏幕上显示的最大尺寸的 150%。
  3. 使用合适的图像格式——理想情况下是高度压缩的选项,如 WebP 或 AVIF,但对于徽标和图表可能是 SVG
  4. 用 CSS 渐变或其他效果替换图像。
  5. 向 HTML <img>标签添加宽度和高度属性,或者使用新的 CSS 纵横比属性,以确保在图像下载之前在页面上保留适当的空间。

一个专业的图像 CDN 可以为你处理这些工作。想了解更多技巧,请查看我们的指南,了解如何为网络优化图像。

移除未使用的 CSS

最快的样式是那些你永远不需要加载或渲染的样式!尝试删除/编辑任何你不再需要的 CSS 代码,比如遗留页面、小部件或框架的代码。这在较大的网站上很难做到,而且并不总是清楚一套特定的风格是否是必要的。

以下工具在构建时分析 HTML 和 CSS 的使用情况,或者通过抓取 URL 来识别冗余代码。这并不总是足够的,因此可以设置额外的配置来确保允许列出 JavaScript 和用户交互触发的样式:

有一个更好的选择:将 CSS 分割成单独的文件,具有清晰的责任和相应的文档级别。移除不必要的样式变得相当容易。

优化 CSS 加载性能

并非所有的 CSS 都是同等加载的。不起眼的``标签有许多并不总是合乎逻辑的选项和怪癖。

优化 Web 字体的使用

谷歌字体和类似的字体代工厂已经彻底改变了网络字体,但是几行字体代码会占用数十万字节的带宽。

以下是我们的优化建议:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

  1. 仅加载您需要的字体:删除您不使用的字体,并检查是否需要新字体。
  2. 只加载你需要的粗细和样式:大部分字体代工厂都可以限制下载某些字符集(比如只下载拉丁文),粗细(粗细),斜体(倾斜)。浏览器可以自动呈现缺失的样式,尽管结果可能很差。
  3. 限制所需字符:不常用的字体可以限制为特定字符。例如,Open Sans 中的标题“CSS tutorial”可以通过向 Google fonts 查询字符串添加一个&text=参数来定义:fonts.googleapis.com/css?family=Open+Sans&text=CStuorial
  4. 考虑可变字体:可变字体使用矢量插值定义了大量不同的样式、粗细和斜体。字体文件有点大,但是你只需要一个而不是几个。递归字体展示了可变字体的灵活性。
  5. 从本地服务器加载字体: 自托管字体比使用代工更高效。需要更少的 DNS 查找,你可以限制下载到 WOFF2,所有现代浏览器都支持。老的浏览器(我看的是你 IE)可以回退到 OS 字体。
  6. 考虑操作系统字体:500 kB 的网络字体可能看起来很棒,但如果你换成常用的 Helvetica 字体、Arial 字体、佐治亚字体或 Verdana 字体,会有人注意到吗?操作系统或网页安全字体是提升性能的简单方法。

使用合适的字体加载选项

下载和处理 Web 字体可能需要几秒钟时间。浏览器将会:

  1. 显示无样式文本的闪烁(FOUT): 最初使用第一个可用的备用字体,但一旦 web 字体准备就绪,就会被替换。
  2. 显示不可见文本的闪烁(FOIT): 在 web 字体准备好之前,不显示任何文本。这是现代浏览器的默认过程,通常会等待三秒钟再恢复到备用字体。

两者都不理想。CSS font-display 属性和 Google Font & display =参数可以选择另一个选项:

  • auto: 浏览器的默认行为(通常是 FOIT)。
  • 封锁:有效封锁。文字最多三秒钟不可见。没有字体交换,但文本可能需要一段时间才能出现。
  • 互换:有效 FOUT。使用第一个回退,直到 web 字体可用。文本立即可读,但字体交换效果可能会不和谐。字体样式匹配器可用于定义类似大小的回退。
  • 退路:福伊特和 FOUT 之间的妥协。文本在短时间内(通常为 100 毫秒)不可见,然后使用第一个回退,直到 web 字体可用。
  • 可选:类似于回退,除了不发生字体交换。只有在初始阶段可用时,才会使用 web 字体。您的首页视图可能会显示备用字体,后续视图使用下载和缓存的 web 字体。

使用 swap、fallback 或 optional 可以提供明显的性能提升。

避免 CSS @import

@import at-rule 允许 CSS 文件包含在其他文件中:

/* main.css */
@import url("reset.css");
@import url("grid.css");
@import url("widget.css");

这似乎是加载较小组件和字体的有效方法。不幸的是,每个@import 都是渲染阻塞的,每个文件都必须串行加载和解析。

HTML 中的多个``标签更有效,可以并行加载 CSS 文件:




也就是说,最好…

连接和缩小 CSS

现代的构建工具、CSS 预处理器如 Sass 和 WordPress 插件可以将所有部分合并成一个大的 CSS 文件。然后删除不必要的空白、注释和字符,以将文件大小减至最小。

对于 HTTP/2 和更高的来说,多个文件不是什么性能问题,但是单个文件只需要一个头文件,可以更有效地进行 gzip 和缓存。

只有当您有一个或多个频繁更改的样式表时,单独的 CSS 文件才是实用的——可能每周都要更改几次。即使这样,大多数静态 CSS 代码仍然可以合并到一个文件中。

Kinsta 客户可以在他们的 MyKinsta 仪表板中访问代码缩小功能来帮助解决这个问题。该功能允许客户通过简单的点击实现 CSS 和 JavaScript 的自动缩小。这有助于提高网站的速度,而无需人工操作。

避免 Base64 编码

工具可以将图像编码为 base64 字符串,您可以将其用作 HTML <img>标签和 CSS 背景中的数据 URIs:

.background {
  background-image: url('data:image/jpg;base64,ABC123...');
}

这减少了 HTTP 请求的数量,但是损害了 CSS 的性能:

  • base64 字符串可以比等效的二进制字符串大 30%。
  • 浏览器必须解码字符串才能使用图像,并且
  • 改变一个图像像素会使整个 CSS 文件失效。

如果您使用非常小、不经常变化的图像,并且生成的字符串不比 URL 长很多,那么只考虑 base64 编码。

也就是说,您可以对可重用的 SVG 图标进行 UTF8 编码,例如

.svgbackground {
  background-image: url('data:image/svg+xml;utf8,<svg  viewBox="0 0 600 600"><circle cx="300" cy="300" r="150" stroke-width="3" stroke="#f00" fill="#ff0" /></svg>');
}

移除 CSS 黑客和 IE 回退

除非你很不幸,并且有很高比例的 Internet Explorer 用户,否则条件样式表和 hacks 可以从你的 CSS 中删除。在大多数情况下,IE 用户仍然会看到一些的东西,特别是如果你使用移动优先的设计,默认显示一个更简单的线性视图。结果可能并不漂亮,也不会像像素一样完美,但是考虑到所有用户的可访问性,你的开发预算还是花在这上面比较好。

预加载 CSS 文件

``标签提供了一个可选的预加载属性,它可以立即开始下载,而不是等待 HTML 中的实际引用:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>My page</title>
  <!-- preload styles -->
  
  <!-- lots more code -->
  <!-- load preloaded styles -->
  

这在 WordPress 和其他 CMS 中尤其有益,插件可以在页面的更下方添加样式表。

使用关键的内联 CSS

分析工具可能会建议你“内联关键 CSS”或“减少渲染阻塞样式表”这通过以下方式提高了性能:

需要为您的电子商务网站提供超快的、可靠的、完全安全的托管服务吗?Kinsta 提供所有这些服务,并由 WooCommerce 专家提供 24/7 的世界级支持。查看我们的计划

  1. 标识折叠上方元素使用的基本样式(页面加载时可见的样式)
  2. 将关键的 CSS 内联到您的<head>中的<style>标签中
  3. 异步加载剩余的 CSS 以避免呈现阻塞。这可以通过以浏览器给予较低优先级的“打印”样式加载样式表来实现。一旦页面加载完毕,JavaScript 就会将其切换到“所有”媒体样式(如果 JavaScript 不可用,则使用<noscript>来确保 CSS 正常工作):
<style>
/* critical styles */
body { font-family: sans-serif; color: #111; }
</style>
<!-- load remaining styles -->

<noscript>
  
</noscript>

关键关键这样的工具可以帮助提取视图中元素的样式。

该技术显著提高了性能并增加了审计分数。具有一致界面的网站或应用程序应该更容易实现,但在其他地方可能会更困难:

  • 除了最简单的站点之外,构建工具对所有站点都是必不可少的。
  • 每个设备上的“文件夹”都不同。
  • 网站可能有不同的布局,需要不同的关键 CSS。
  • 关键的 CSS 工具可能会与特定的框架、HTML 生成的客户端和动态内容发生冲突。
  • 这种技术主要有利于第一页的加载。CSS 是为后续页面缓存的,所以额外的内联样式会增加页面权重。

使用媒体查询呈现

单个连接和缩小将使大多数网站受益,但需要大量较大屏幕样式的网站可以使用媒体查询来拆分 CSS 文件和加载:

<!-- core styles loaded on all devices -->

<!-- served to screens at least 40em wide -->

<!-- served to screens at least 80em wide -->

这个例子假设了移动优先的方法。移动设备加载 core.css ,但可能不需要下载或解析剩余的样式表。

使用渐进式渲染

渐进式呈现是一种为单独的页面或组件定义单独的样式表的技术。它可以使非常大的站点受益,这些站点的单个页面是由各种各样的组件构成的。

在 HTML 中引用组件之前,会立即加载每个 CSS 文件:

<head>
  <!-- core styles -->
  
</head>
<body>
  <!-- header -->
  
  <header>...</header>
  <!-- primary content -->
  
  <main>
    <!-- widget styling -->
    
    <div class="mywidget>...</div>
  </main>
  <!-- footer -->
  
  <footer>...</footer>
</body>

这在大多数浏览器中运行良好。(Safari 会显示一个空白页,直到所有的 CSS 都加载完毕,但它应该不会比一个大样式表差太多。)

采用 Web 组件还鼓励使用自定义元素呈现时加载的作用域样式。

优化 CSS 性能

CSS 技术和属性对浏览器、CPU、内存、带宽和其他资源造成了不同的压力。以下提示可以帮助您避免不必要的处理和缓慢的性能。

采用现代布局技术(网格和 Flexbox)

基于浮动的布局很难创建,使用大量属性,需要不断调整边距和填充,必须使用媒体查询来管理,并且会导致大量的浏览器处理。多年来,它们是唯一可行的布局方法,但现在已经没有必要了。使用以下任一方式:

  • CSS Flexbox 用于一维布局,可以换行到下一行。它是菜单、图片库、卡片等的理想选择。
  • CSS 网格用于具有显式行和列的二维布局。它非常适合页面布局。

两者都更易于开发,使用的代码更少,渲染速度更快,并且无需媒体查询即可适应任何屏幕尺寸。

非常老的浏览器不会识别现代的 flexbox 和 grid 属性,所以每个元素都变成了一个块。用一个简单的类似移动设备的线性布局显示它们:没有必要用基于浮动的后退来模拟设计

用 CSS 渐变和效果替换图像

可能的话,选择 CSS 代码而不是图片。尝试使用渐变、边框、半径、阴影、滤镜、混合模式、蒙版、剪辑和伪元素效果来重用或替换现有图像。

CSS 效果使用相当少的带宽,更容易修改,并且通常可以制作动画。

避免过度使用昂贵的物业

你可能有简洁的声明性代码,但是有些 CSS 比其他的需要更多的处理。下列属性会触发绘制计算,如果过度使用,代价会很高:

  • position: fixed
  • border-radius
  • box-shadow
  • text-shadow
  • opacity
  • transform
  • filter
  • backdrop-filter
  • background-blend-mode

尽可能使用 CSS 过渡和动画

CSS 过渡和动画总是比 JavaScript 驱动的效果更平滑,JavaScript 驱动的效果修改类似的属性。它们不会在非常旧的浏览器上处理,但是,由于这些浏览器可能在功能较弱的设备上运行,这是最好的。

但是,避免过度动画。效果应该增强用户体验,而不会对性能产生负面影响或导致晕动病。检查首选减速媒体查询,并在必要时禁用动画。

避免动画属性触发重新布局

更改元素的尺寸(宽度、高度、填充、边框)或位置(上、下、左、右、边距)会导致整个页面在每个动画帧上重新布局。最有效的动画属性是:

  • T2opacity
  • filter :模糊、对比度、阴影和其他效果
  • transform :平移(移动)、缩放或旋转元素

浏览器可以使用硬件加速的 GPU 在自己的层中渲染这些效果,因此只有合成阶段受到影响。

如果您必须动画显示其他属性,可以通过使用 position: absolute 将元素从页面流中取出来提高性能。

注意复杂的选择器

浏览器可以快速解析最复杂的 CSS 选择器,但是简化它们可以减小文件大小并提高性能。当您在 CSS 预处理程序(如 Sass)中创建深度嵌套的结构时,通常会生成复杂的选择器。

指出哪些元素将会改变

CSS 的 will-change 属性允许你警告一个元素将如何被改变或动画化,这样浏览器可以提前进行优化:

.myelement {
  will-change: transform, opacity;
}

可以定义任意数量的逗号分隔值,但该属性只应作为修复已知性能问题的最后手段。您不应该将它应用于太多的元素,并确保给它足够的时间来初始化。

考虑 CSS 包容

Containment 是一个新的 CSS 特性,它允许你识别页面中孤立的子树,从而提高性能。浏览器可以通过呈现——或者而不是呈现——特定的 DOM 内容块来优化处理。

包含属性接受空格分隔列表中的一个或多个以下值:

  • none :未应用遏制
  • layout :元素的布局独立于页面的其余部分,其内容不会影响其他元素
  • paint :元素的子元素不显示在其边界之外
  • size :无需检查子元素即可确定元素的大小——尺寸与内容无关

还有两个特殊值可用:

  • strict :应用所有包含规则(无除外)
  • content :应用布局和绘画

重要

一个页面有一个应用了contain: strict;<ul>列表。如果您更改任何子<li>的内容,浏览器将不会重新计算该项目的大小或位置、列表中的其他项目或页面上的任何其他元素。 CSS 包容在大多数现代浏览器中得到支持。Safari 或更老的应用程序中没有支持,但在这些应用程序中可以安全地使用 containment,因为浏览器会简单地忽略该属性。

对保存数据头做出反应

Save-Data 是一个 HTTP 请求头,表示用户已经请求了缩减的数据。在某些浏览器中,它可能被标记为“精简”或“加速”模式。

启用后,每个浏览器请求都会发送一个Save-Data头:

GET /main.css HTTP/1.0
Host: site.com
Save-Data: on

当检测到保存数据时,服务器可以做出相应的响应。就 CSS 而言,它可以发送更简单的类似手机的线性布局,使用操作系统字体,切换到块颜色,或者加载低分辨率的图像背景。

请注意,服务器应该在修改请求时返回以下标头,以确保当用户关闭 Lite/Turbo 模式时,不会缓存和重用最少的内容:

Vary: Accept-Encoding, Save-Data

客户端 JavaScript 也可以检测到该标头。当 Save-Data 为而非启用时,以下代码向<html>元素添加一个 bestUX 类:

if ('connection' in navigator && !navigator.connection.saveData) {
  document.documentElement.classList.add('bestUX');
}

样式表可以相应地做出反应,而无需任何服务器操作:

/* no hero image by default */
header {
  background-color: #abc;
  background-image: none;
}
/* hero image when no Save-Data */
.bestUX header {
  background-image: url("hero.jpg");
}

prefers-reduced-data 媒体查询提供了一个仅支持 CSS 的选项作为替代,尽管在撰写本文时,任何浏览器都不支持:

/* no hero image by default */
header {
  background-color: #abc;
  background-image: none;
}
/* hero image when no Save-Data */
@media (prefers-reduced-data: no-preference) {
  header {
    background-image: url("hero.jpg");
  }
}

已经通过 JavaScript 解决了性能问题?💪是时候看看你的网站的 CSS 了🚀

摘要

有许多优化 CSS 性能的选项,但是对于新项目,请考虑以下实践:

  1. 使用一种 移动优先的方法:首先编码最简单的移动布局,然后随着屏幕空间和浏览器功能集的增加添加增强功能。
  2. 将 CSS 拆分成具有可识别责任的独立文件:CSS 预处理器或 CMS 插件可以将 CSS 片段合并成一个文件
  3. 添加一个构建步骤:工具可以自动 lint 编码、识别问题、连接、缩小、减少图像大小等等。自动化让生活变得更简单,你也不太可能忘记优化步骤。
  4. 文档化你的样式表:一个包含文档化例子的风格指南将使你的代码更容易理解和维护。您将能够毫不费力地识别并删除旧的 CSS。

最后,学 CSS !您知道的越多,您需要编写的代码就越少,您的 web 应用程序就会变得越快。不管你使用哪种平台和框架,它都会让你成为一个更好的开发者。

你还有什么优化 CSS 性能的技巧?请在评论区分享!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何针对网页和性能优化图像

原文:https://kinsta.com/blog/optimize-images-for-web/

相信我们,你不会希望谷歌讨厌你的网站。幸运的是,您可以减小图像的文件大小,以帮助提高网站的性能。

格式化它们的一个问题是修改经常会降低它们的质量(这反过来可能会让访问者讨厌你的网站)。只要你不把它们变丑,这不是一件坏事。

有一些技巧和技术可以让你减小图片的文件大小,并且仍然保持图片足够漂亮,可以骄傲地在你的网站上展示。

因此,让我们来看看如何格式化你的图像而不使它们变得难看,以及如何为网页和性能优化图像。

优化图像是什么意思?

大图片会降低你的网页速度,从而导致用户体验不佳。优化图像是使用插件或脚本减少其文件大小的过程,从而加快页面的加载时间。有损和无损压缩是两种常用的方法。

Support

查看我们的视频指南为 SEO 优化图片

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

格式化图像的好处

首先,为什么你需要格式化你的图像?有什么好处?优化图像的性能有很多好处。据 HTTP Archive 统计,截至 2018 年 11 月,图片平均占网页总权重的 21%。所以当谈到优化你的网站时,除了视频内容,图片是你应该首先开始的地方!

比脚本和字体更重要。具有讽刺意味的是,一个好的图像优化工作流程是最容易实现的事情之一,然而许多网站所有者忽略了这一点。

Average Bytes Per Page (KB)

Average Bytes Per Page (KB)

下面来看看主要的好处。

  • 这将提高你的页面加载速度(见下面的案例研究,它对你的速度有多大影响)。如果你的页面加载时间太长,你的访问者可能会厌倦等待,并转移到其他地方。有关优化页面加载时间的更多信息,请参见我们的深度页面速度优化指南
  • 结合一个伟大的 SEO WordPress 插件它改善你的 SEO 。您的网站在搜索引擎结果中的排名会更高。大文件会降低你网站的速度,而搜索引擎讨厌速度慢的网站。谷歌也有可能为谷歌图片搜索更快地抓取和索引你的图片。好奇你的流量有百分之几来自谷歌图片搜索?你可以使用一个 Google Analytics WordPress 插件或片段来检查 Google 图片搜索流量
  • 创建备份会更快。
  • 较小的图像文件使用较少的带宽。网络和浏览器会欣赏这一点。
  • 在您的服务器上需要更少的存储空间(这取决于您优化了多少缩略图)

如何针对网页和性能优化图片?

格式化图像的主要目标是在最小文件大小和可接受的质量之间找到平衡。

几乎所有这些优化都有多种执行方式。最流行的方法之一是在上传到 WordPress 之前简单地压缩它们。通常,这可以在像 Adobe Photoshop 或 Affinity Photo 这样的工具中完成。其中一些任务也可以使用插件来执行,我们将在下面详细介绍。

改变你的 WordPress 主机来优化你的图片,你会发现页面加载速度提高了 45%以上。免费试用 kin sta

要考虑的两件主要事情是你使用的文件格式和压缩类型。通过选择正确的文件格式和压缩类型的组合,您可以将图像大小减少 5 倍。你必须试验每种图像或文件格式,看看哪种效果最好。

1.选择正确的文件格式

在你开始修改你的图像之前,确保你已经选择了最好的文件类型。有几种类型的文件可供您使用:

  • PNG–生成更高质量的图像,但文件也更大。是作为无损图像格式创建的,尽管它也可能是有损的。
  • JPEG–使用有损和无损优化。您可以调整质量级别,以获得质量和文件大小的良好平衡。
  • GIF–仅使用 256 种颜色。是动画形象的最佳选择。它只使用无损压缩。

还有其他几个,比如 JPEG XR 和 WebP ,但是它们并没有被所有的浏览器普遍支持。理想情况下,对于色彩丰富的图像,你应该使用 JPEG 或 JPG,对于简单的图像,你应该使用 PNG。
(建议阅读: JPG vs JPEG:了解最常见的图像文件格式)

2.当心压缩质量和大小

这是一个过度压缩图像会发生什么的例子。第一种是使用非常低的压缩率,这将产生最高的质量(但文件更大)。第二种是使用非常高的压缩率,这导致图像质量非常低(但文件较小)。注:原图未动是 2.06 MB。

low compression high quality jpg

Low compression (high quality) JPG – 590 KB

high compression low quality jpg

High compression (low quality) JPG – 68 KB

如你所见,上面的第一张图片是 590 KB。这对于一张照片来说太大了!一般来说,如果你能将网页的总重量控制在 1 或 2 MB 以下,那是最好的。590 KB 已经是这个数字的四分之一了。第二个图像显然看起来很恐怖,但它只有 68 KB。你想要做的是在你的压缩率(质量)和文件大小之间找到一个合适的中间点。

因此,我们再次以中等压缩率拍摄了该图像,正如您在下面看到的,现在质量看起来不错,文件大小为 151 KB,这对于高分辨率照片来说是可以接受的。这比低压缩的原始照片小了近 4 倍。通常,为了获得最佳性能,png 等较简单的图像应该小于或等于 100 KB。

medium compression medium quality jpg

Medium compression (great quality) JPG – 151 KB

3.了解有损优化与无损优化

了解有两种类型的压缩可以使用也很重要,有损压缩和无损压缩。

有损–这是一个过滤器,可以消除一些数据。这将降低图像质量,所以你必须注意图像的缩小程度。文件大小可以减少很多。您可以使用 Adobe Photoshop、Affinity Photo 或其他图像编辑器等工具来调整图像的质量设置。我们上面使用的例子是使用有损压缩。

无损–这是一个压缩数据的过滤器。这不会降低质量,但需要在渲染之前对图像进行解压缩。您可以使用 Photoshop、 FileOptimizerImageOptim 等工具在桌面上执行无损压缩。

最好试验一下你的压缩技术,看看哪种压缩技术最适合每种图像或格式。如果您的工具有这个选项,请确保您将图像保存为 web 格式。这是许多图像编辑器中的一个选项,它将为您提供质量调整,以便您可以执行最佳压缩。你会损失一些质量,所以在不使图像难看的情况下,尝试找到最佳的平衡。

4.使用图像优化工具和程序

有很多工具和程序,有高级的也有免费的,你可以用来优化你的图片。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

有些为您提供工具来执行您自己的优化,有些则为您完成工作。我们个人是 Affinity Photo 的忠实粉丝,因为它很便宜,并且给你提供了与 Adobe Photoshop 几乎相同的功能。

affinity photo

Compressing photo in Affinity Photo

这里有一些额外的工具和程序可供查看:

5.按比例调整图像大小

在过去,你上传图片的比例,不要让 CSS 改变它们的大小是非常重要的。然而,这不再重要,因为 WordPress 4.4 现在支持响应图像(没有被 CSS 缩小)。

基本上,WordPress 会自动为上传到媒体库的每张图片创建几个尺寸。通过将图像的可用尺寸包含到一个srcset属性中,浏览器现在可以选择下载最合适的尺寸并忽略其他尺寸。下面是一个你的代码实际看起来像什么的例子。

srcset responsive images example in code

srcset responsive images example in code

所以随着现在越来越多的 HiDPI 显示器,找到一个令人愉快的媒介会很好。比如说你的网站的栏或格大小的两倍或三倍,但仍然小于原来的大小。浏览器将根据设备的分辨率显示正确的选项。

WordPress 媒体库根据您的设置创建缩略图。但是,原作仍然保留着,没有动过。如果你想通过不保存原始图像来调整图像大小和节省磁盘空间,你可以使用像 Imsanity 这样的免费插件。

wordpress media settings

WordPress media settings

Imsanity 允许您设置一个健全性限制,这样所有上传的图像将被限制在一个合理的大小,这个大小对于一个典型的网站来说已经足够大了。

Imsanity 在图片上传之后,但在 WordPress 处理发生之前,立即挂接到 WordPress。所以 WordPress 在所有方面的行为都是完全一样的,除了好像投稿人在上传之前已经将他们的图片缩放到一个合理的尺寸。

清理您的媒体库

如果您正在寻找一种工具来节省空间,同时清理您的媒体库,您可以使用媒体清理器来查找未使用的媒体文件。该插件将扫描您的所有媒体文件,并在媒体清洁器仪表板中列出未使用的文件,以便您可以浏览并删除它们。

Media Cleaner 实现了一个智能垃圾系统:当文件被删除时,它们被移动到一个垃圾目录。这样,你就可以测试你的网站一段时间,确保一切正常。如果某个文件或媒体条目丢失,您只需点击一下就可以轻松恢复它,或者在一切正常的情况下清空垃圾箱。

您可以使用的图像优化插件

幸运的是,有了 WordPress,你不必手工完成所有的格式化和压缩。你可以使用插件自动为你做一些工作。

有几个插件可以在你上传图像文件时自动优化它们。他们甚至会优化你已经上传的图片。这是一个方便的功能——尤其是如果你已经有一个充满图片的网站。这里有一些最好的插件来格式化你的图像以获得更好的性能。

重要的是,你不能仅仅依赖插件本身。例如,你不应该上传 2 MB 的图片到你的 WordPress 媒体库。这可能会导致你的网络主机的磁盘空间消耗非常快。

最好的方法是事先在照片编辑工具中快速调整图像大小,然后上传并使用以下插件之一进一步缩小。

1.图像优化器

imagify image optimizer

Imagify Image Optimizer plugin

Imagify 由开发 WP Rocket 的同一个团队创建,你们大多数人可能都很熟悉。它与 WooCommerce、 NextGen Gallery 和 WP Retina 兼容。它还具有批量优化功能,您可以在三种不同的压缩级别之间进行选择,正常、积极和超。它还有一个恢复功能,所以如果你对质量不满意,你可以一键恢复,并重新压缩到更适合你的需要的水平。有免费版和高级版。一个免费帐户每月的图片限额为 25 MB。

用这个插件也可以去掉原始图像并调整较大图像的大小。

Resize images in Imagify

Resize images in Imagify

Imagify 还在他们的第三方服务器上压缩图像,而不是你的,这对性能非常重要。Imagify 不应该拖慢你的 WordPress 站点。

2.短像素图像优化器

shortpixel wordpress image optimization plugin

ShortPixel plugin

ShortPixel Image Optimizer 是一个免费的插件,每月将压缩 100 张图像,并将压缩多种类型的文件,包括 PNG、JPG、GIF、 WebP ,甚至 PDF 文件。它将做有损和无损图像压缩。它会将 CMYK 转换为 RGB。它将你的图像和缩略图放入云端进行处理,然后将它们带回你的网站来替换原件。它会创建原始文件的备份,以便您可以根据需要手动恢复它们。它将批量转换图库文件。文件大小没有限制。

3.最佳摩尔

Optimole

Optimole plugin

Optimole 是一个图片优化插件,可以自动缩小你的图片,而不需要你做任何工作。当谈到你的网站的加载速度时,它有一个很大的优势,因为它完全基于云,从不提供比它们应该更大的图像,也就是说,它为访问者的视窗和浏览器显示完美的图像大小。

此外,该插件提供了惰性加载和高效的图像替换——如果访问者的互联网连接速度较慢,它会降低图像质量——这使它脱颖而出。它还会自动检测用户的浏览器,并在支持的情况下提供 WebP

Optimole 压缩的所有图像都通过快速 CDN 提供。如果您需要额外的带宽和处理空间,您可以免费试用 Optimole 或升级到高级计划。

4.Optimus 图像优化器

optimus image optimizer

Optimus Image Optimizer plugin

Optimus WordPress 图像优化软件使用无损压缩来优化你的图像。无损意味着你不会看到任何质量损失。它支持 WooCoomerce 和多站点,并为那些已经拥有大型媒体库的用户提供了一个很好的批量优化功能。它也兼容 WP Retina WordPress 插件。有免费版和高级版。在高级版本中,你每年支付一次费用,就可以无限制地压缩图像。如果你把它和他们的 Cache Enabler 插件结合起来,你还可以进入 WebP images ,这是谷歌的一种新的轻量级图像格式。

5.WP Smush

wp smush plugin

WP Smush plugin

WP Smush 有免费版和高级版。这将减少隐藏的信息,从图像,以减少大小,而不降低质量。它会扫描图像,并在你上传到你的网站时缩小它们。它还会扫描你已经上传的图片,并减少这些图片。它将一次批量发送多达 50 个文件。如果你愿意,你也可以手动刷。它将 smush JPEG,GIF 和 PNG 图像类型。文件大小限制为 1MB。

  • 它与一些最流行的媒体库插件兼容,如 WP All Import 和 WPML。
  • 所有图像优化都是通过无损压缩技术完成的,从而保持高质量的图像。
  • 您将图像保存在哪个目录并不重要。Smush 找到并压缩它们。
  • Smush 有一个选项可以自动设置所有图像的宽度和高度,这样所有的图像都可以调整到相同的比例。

6.TinyPNG(也是压缩的 jpg)

tinypng

TinyPNG plugin

TinyPNG 使用 TinyJPG 和 TinyPNG 服务(免费帐户可以让你每月压缩大约 100 张图像)来优化你的 JPG 和 PNG 图像。它会自动压缩新的图像和大量压缩您现有的图像。它会将 CMYK 转换为 RBG 以节省空间。它将压缩 JPEG 图像高达 60%和 PNG 图像高达 80%,而没有明显的图像质量损失。它没有文件大小限制。

7.图像回收

imagerecycle pdf image compression plugin

ImageRecycle – Image & PDF optimizer plugin

imagerecycle插件是一个自动图像和 PDF 优化器。这个插件不仅关注图像压缩,也关注 pdf。一个非常方便的特性是能够设置压缩的最小文件大小。例如,如果您有 80 KB 大小的图像,您可以让它自动将它们从压缩中排除。这可以确保图像和文件不会被过度压缩。它还包括批量优化和自动调整图像大小。注意:他们有 15 天的免费试用期,但这是一项高级服务,图片是使用他们的服务器上传和压缩的。他们不按月收费,而是按压缩的图片总数收费,每万张 10 美元起。

8.图像优化器

EWWW Image Optimizer plugin

EWWW Image Optimizer

EWWW 图像优化器帮助你更小的图像和更快的网站。对于高级用户来说,没有大小限制和足够的灵活性,你可以使用缺省值或者完全按照你的喜好定制插件。

免费模式允许无限制的 JPG 压缩和 WebP 转换,非常适合刚刚起步的爱好网站或博客。所有 EWWW IO 用户都可以使用 Bulk Optimizer 来压缩他们现有的映像,或者使用媒体库列表模式来挑选要压缩的特定映像。可以扫描其他文件夹,以确保网站上的每一张图片都得到适当的优化。

EWWW IO 甚至允许您将图像转换为下一代格式,如 WebP 或通过多格式转换选项为图像找到最佳图像格式。

高级压缩 API 允许您将压缩提升到一个全新的水平,而不牺牲质量,平均节省 50%。它还解锁 PDF 压缩,并包括方便的 30 天图像备份。借助可选的 Easy IO CDN,图像可自动压缩、缩放以适应页面和设备大小、延迟加载并转换为新一代 WebP 格式。

为网络案例研究优化图片

我们决定做我们自己的小案例研究和测试,向你展示优化你的网页图片会对你的 WordPress 网站的整体速度产生多大的影响。

未压缩的 jpg

我们首先上传了 6 个未压缩的 jpg 文件到我们的测试站点,它们的大小都超过了 1 MB。然后,我们通过 Pingdom 运行了 5 次测试,并取平均值。从下面的速度测试中可以看出,我们的总加载时间为 1.55 秒,总页面大小为 14.7 MB。

speed test uncompressed jpg

Speed test with uncompressed JPGs

压缩的 jpg

然后我们使用 Imagify WordPress 插件压缩 jpg,使用“积极设置”然后,我们通过 Pingdom 运行了 5 次测试,并取平均值。从下面的速度测试中可以看出,我们的总加载时间减少到了 476 ms,总页面大小减少到了 2.9 MB。我们的总加载时间减少了 54.88% ,页面大小减少了 80.27% 。

speed test compressed jpg

Speed test with compressed JPGs

在你的网站上,几乎没有其他优化可以让你的加载时间减少 50%以上。这就是为什么图像优化如此重要,上面的过程都是由插件自动完成的。这是一个不干涉更快的 WordPress 站点的方法。

你能做的另一个戏剧性的优化就是改变你的主机。许多迁移到 Kinsta 的客户发现速度提高了 45%以上。想象一下搬到 Kinsta 并优化您的图像!

通过优化您的图像,无论是使用照片编辑工具还是 WordPress 插件,您也可以修复您在 Google PageSpeed Insights 中获得的“优化图像”警告(如下所示。)

pagespeed insights optimize images

PageSpeed Insights optimize images warning

如果你有来自速度测试工具的其他优化警告,请确保查看我们在 Google PageSpeed Insights 上的帖子和我们深入的 Pingdom 漫游

我们将有效网站管理的知识规模化,并将其转化为电子书和视频课程。点击这里下载 2020 年管理 40 多个 WordPress 网站指南!

使用 SVG:你需要知道的好处

另一个建议是将 SVG 文件与其他图像一起使用。SVG 是一种可扩展的矢量格式,非常适用于徽标、图标、文本和简单图像。以下是几个原因:

  • SVG 在浏览器和照片编辑工具中都可以自动缩放。这是网页和平面设计师的梦想!
  • 谷歌索引 SVG,就像它索引png和 jpg 一样,所以你不必担心 SEO。
  • SVG 通常(不总是)比 png 或 jpg 文件小。这可能导致更快的加载时间。

Genki 写了一篇很棒的文章,他比较了 SVG、PNG 和 JPEG 的大小。下面是他在测试中比较三种不同图像类型的一些收获。

JPG(优化大小:81.4 KB)

JPG size

JPG image

PNG(优化大小:85.1 KB)

PNG size

PNG image

SVG(优化大小:6.1 KB)

SVG size

SVG image

如上所述,与 JPG 相比,SVG 的文件大小减少了 92.51%。与巴布亚新几内亚相比,为 92.83%。查看我们关于如何在你的 WordPress 网站上使用 SVG 的教程。

优化网页图片的最佳实践

以下是一些关于如何优化网页图片的最佳实践:

  • 如果使用 WordPress 插件,在他们的服务器上使用外部压缩和优化图片的插件。这反过来又减少了您自己站点的负载。
  • 尽可能在 png 和 jpg 中使用矢量图像。
  • 使用 CDN 将您的图像快速提供给全球各地的访客。Kinsta CDN 有一个代码缩小功能,它直接内置在 MyKinsta 仪表板中。这使得 Kinsta 的客户只需简单的点击就可以轻松实现 CSS 和 JavaScript 的自动缩小。
  • 删除不必要的图像数据。
  • 裁剪空白,并通过使用 CSS 提供填充来重新创建它。
  • 尽可能使用 CSS3 效果。
  • 以适当的尺寸保存您的图像。尽管记住 WordPress 现在支持响应式图片,不需要用 CSS 调整它们的大小。
  • 始终使用。您的图标的 ico 文件格式。
  • 使用 web 字体而不是将文本放在图像中——缩放后看起来更好,占用的空间更少。
  • 仅对具有大量形状和细节的场景使用光栅图像。
  • 将位深度减小到较小的调色板。
  • 尽可能使用有损压缩。
  • 尝试找到每种格式的最佳设置。
  • 需要动画就用 GIF。(但是压缩你的动画 gif
  • 如果您需要高细节和高分辨率,请使用 PNG。
  • 使用 JPG 的一般照片和截图。
  • 删除任何不需要的图像元数据。
  • 尽可能自动化这个过程。
  • 在某些情况下,您可能想要延迟加载图像以获得更快的首页渲染。
  • 在 Photoshop 等工具中将图像保存为“针对网络优化”。
  • 在 Chrome 中使用 WebP 来提供较小的图像。

Don't forget to optimize your images, otherwise, your WordPress site might feel like it's in slow-mo. And you know how frustrating 'slow' is! 🐌Click to Tweet

一旦你格式化了你的图片以获得更好的性能,并且遵循了最佳实践,你的站点将会更受搜索引擎、浏览器和网络的欢迎,并且为你的读者提供更快的加载速度。哦,一定要看看我们关于热链接的教程,防止人们窃取你的图像和带宽。

你是否为了更好的表现格式化了你的图像?你是手动格式化它们,使用插件,还是两者都用?有没有其他你推荐的工具或插件?你有什么要补充的吗?请在下面的评论中告诉我们你的技术和最佳实践!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

什么是外向营销?(以及为什么你不应该忽视它)

原文:https://kinsta.com/blog/outbound-marketing/

外向营销是关于接触潜在客户。

这是人们听到“营销”这个词时的想法——陌生电话、广告牌、电视广告、广播广告、传单等。听起来有点过时,不是吗?

但是这些都是让潜在客户了解你的产品的方法……而且很有效!

然而,出站营销正在失宠,尤其是在网上营销圈。

但是这种对它的否定是正当的吗?

内向营销与外向营销

直到最近,在人类历史上,外向营销几乎是营销你的产品的唯一方式。

想想传统市场。商人不能只是坐在那里等着顾客来找他们。为了销售,他们不得不兜售他们的商品。此外,他们需要比竞争对手更响亮、更有侵略性,以吸引人们的注意力。

大众媒体的发明,如报纸、广播和电视,仅仅意味着不再是商人在市场上争夺顾客,而是公司通过广告在媒体上争夺顾客。

但是后来互联网改变了一切。突然之间,消费者可以很容易地在任何主题上自学,比较各种报价,并研究他们的购买。他们不必再盲目依赖公司提供的信息。

这就是集客营销的由来。当所有这些潜在客户已经在寻找你卖的任何东西时,以一种让他们容易找到你的产品的方式来定位你的业务是有意义的。现在你可以让顾客来找你,而不是你去找他们。

集客营销

集客营销是吸引那些知道自己有问题并积极寻找解决方案的潜在客户。

它包括搜索引擎优化、建立博客、T2、建立电子邮件列表、在会议上发言以及在你的领域树立思想领袖的地位。

集客营销的主要优势是成本更低。内向销售线索的平均成本比外向销售线索低 61%。这并不奇怪。说服那些已经对你的提议感兴趣的人更容易。

然而,重要的是要明白,尽管集客营销更便宜,但它不是免费的。你要么是 T2 自己制作内容,这需要时间,要么是 T4 雇人为你制作,这需要钱。

集客营销也需要大量的前期工作,可能需要一段时间才能看到显著的效果(如果你是从零开始,至少需要 1-2 年的持续努力)。

此外,正如营销顾问 Mark Schaefer 在几年前的一篇文章中建议的那样,由于免费内容的激增,内容营销从长远来看可能不是一种可持续的战略。

他认为,由于惊人的内容数量,获得(并保持)人们的注意力变得越来越难,这意味着制作内容将会有一个负 ROI 的时刻。

当然,我们还没有到那一步,但这仍是值得考虑的事情。

外向营销

外向营销是指接触潜在客户,他们可能意识到自己有问题,但并不积极寻找解决方案。

发传单、购买报纸、杂志和电视广告以及在广告牌上做广告等方法经常被批评为昂贵、撒网太广以及缺乏确定投资回报率的方法。

此外,陌生电话和陌生电子邮件也会招致恶名,因为它们被视为“无聊”和侵扰性的。谁想解决这个问题?

然而,尽管有这些缺陷,但如果做得好,外向营销可以非常有效,它还可以让你立即看到你努力的结果,而不是等待几周,几个月甚至几年。

你提出了你的提议。人们要么买,要么不买。

不管怎样,你会得到市场的即时反应,然后可以做出相应的调整(这在你还没有验证产品的时候尤其有价值)。

然而,外向营销比内向营销更昂贵,因为你不是有机地获得流量,而是购买流量。

这也更具破坏性。没有人喜欢主动推销。陌生电话、陌生邮件和广告真的很烦人,尤其是当你对产品不感兴趣的时候。

这就是为什么确保你的提议与你要联系的人相关是如此重要。

对外营销(词汇表):

当一家公司试图通过一般媒体广告(如电视广告、广告牌、报纸)或通过直接和亲自接触(如会议、电话推销和电子邮件推销)来接触消费者时,就会出现外向营销。

最有效的对外营销策略是:

  1. 冰冷的电子邮件和冰冷的电话
  2. 搜索广告
  3. 贸易展览

Support

外向营销 vs 内向营销:哪个更受欢迎?

根据 HubspotState of Inbound 2018报告,世界各地的公司都更喜欢集客营销。

Outbound Marketing vs Inbound Marketing adoption worldwide

Inbound Marketing adoption worldwide

有道理。

如果做得好,集客营销会非常强大。像 Buffer 这样的公司取得了巨大的成功。难怪其他人也想分一杯羹呢?

我是集客营销的超级粉丝。然而,关于集客营销和外呼营销的对话往往对后者有偏见。

似乎有相当多的人将集客营销视为终极目标,而将出站营销视为属于历史垃圾箱的遗迹。但这是为什么呢?

外向营销:为什么名声这么差?

问题是,关于集客营销和外呼营销的讨论似乎变得有些意识形态化了。

这里有一个图表,很好地概括了人们对这个问题的普遍态度:

Outbound Marketing vs Inbound Marketing

Outbound Marketing vs Inbound Marketing

集客营销以新颖时尚的方式出现,强调“赢得人们的兴趣”

另一方面,对外营销显得陈旧过时,强调“向顾客推销产品或服务”

这似乎暗示着主动向潜在客户提供报价是错误的。这里不仅仅是关于有效性,也是关于道德的。

所以我们直说吧。只要产品做了你承诺它会做的事,用外向营销推广产品绝对没有错。

还有,我们不要忘了这里重要的一点:营销策略应该根据它们产生的结果来判断,出站营销方法可以很好地发挥作用。

所以,不要因为它们不时尚就不重视它们。你应该做对你的生意最有利的事情。

利用外向营销发展业务的 5 种方法

好了,现在你已经了解了外向营销的优势和劣势,你可能想知道如何利用它来发展你的业务。

排名第一的冰冷邮件

冷邮件是指未经请求发送给一个你以前没有交往过的人的邮件。

SaaS 初创企业的早期,通过电子邮件联系潜在客户可能是一种有效的客户获取策略。

例如,LeadFuze 的创始人 Justin McGill,在 12 个月内使用冰冷的电子邮件获得了 3 万美元的 MRR(每月经常性收入)。

具体流程如下:

  1. 找到并接触你的目标客户。
  2. 制定个性化的推广计划(不是典型的营销信息)。
  3. 后续行动

他使用自己的产品来查找潜在客户的电子邮件地址,这使它变得更容易,但没有它也可以做到,所需要的只是研究。

贾斯汀是如何制作第一封电子邮件的?他应用了 QVC 公式:

  • 问题。“试着用一个与他们的业务相关的问题作为开场白。”

  • 价值主张。“不要喋喋不休地说你的服务有多好,你能提供什么,试着传达核心信息,突出你的独特之处。”

  • 结束行动号召(CTA)。直接问他们是否能在接下来的几天内发言,或者给他们一些寻求答案的收尾问题,以便得到一些回应。

下面是一封遵循 QVC 公式的电子邮件的例子:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

Outbound Marketing: The QVC email formula

The “QVC” email formula

他还为收件人提供了一个选项,通过在底部添加这一行来选择退出任何后续活动:

附注:如果你不是谈论此事的合适人选,请告诉我。此外,如果你不希望我跟踪你,你也可以让我知道这一点!”

保持邮件简短非常重要。“一般来说,我推荐三到四句话(最多五句)”贾斯汀说。

在最初的电子邮件之后,他继续提供价值。他建议发送一份关于你的一个客户及其结果的案例研究。

Justin 说他们看到了这一系列电子邮件的巨大成功:

  1. QVC 电子邮件
  2. 个案研究
  3. 增值(最近的博客文章链接、相关新闻文章、另一个案例研究等)
  4. 分手邮件(让他们知道你不会再跟进)

他指出,你可以通过使用像reply fyOutreachQuickmail 这样的工具来自动化很多事情。或者,如果你是 Gmail 的铁杆粉丝,你可以尝试一下 Streak ,这将帮助你自动跟踪你的所有对话(顺便说一句,这是我首选的外联工具)。

如果你得到了积极的回应,该怎么办?麦克吉尔继续说道:

然而,这里的关键是不要草率行事,在你的后续邮件中努力将它们转化为销售。理想情况下,一旦他们表示有兴趣增加您达成交易的机会,您就需要与他们通电话。当他们有兴趣与你交谈时,强化价值主张,并给他们一个明确的行动号召,以预约时间。”贾斯汀解释道。他推荐使用日历进行日程安排。

冰冷的电子邮件可能是获得初始客户最直接的方式,因为你直接接触你的目标受众,并向他们展示你的产品。

不要因为没有回应而气馁。Justin 说只有 1%-10%的人会对你感兴趣。这是一个数字游戏,所以你需要发送大量冷冰冰的电子邮件才能得到结果。

#2 陌生电话

陌生来电是指主动打给一个你以前没有接触过的人。

由于害怕被拒绝,人们倾向于避免陌生来电。当你向某人提出一个提议,而他们说“不”时,你会感到刺痛。此外,任何销售人员都会告诉你,礼貌的“不”远不是你能得到的最糟糕的答案,没有人想被电话另一端的陌生人斥责。所以根本不打电话是很诱人的。

但这可能是一个错误。如果方法得当,电话推销可能是一种有效的销售方法。但是你怎么才能做对呢?

Chris Orlob 和 the Gong.io 使用人工智能分析了超过 90,000 个陌生来电。他们发现了什么?

  • 使用这五个技巧来创造一个好的开头:说出潜在客户的名字:“嗨,约翰!”)、说出你的全名(“我叫克里斯·奥尔洛布”)、说出你的公司名称(“我为 Gong.io 工作”)、使用模式中断法加上一句“你最近怎么样?”问题,并陈述您打电话的原因(“John,我打电话的原因是……”)。

  • 尽量减少发现问题。不要试图在销售电话中收集潜在客户的信息。请记住,这次通话的目的是安排一次会面,仅此而已。

  • 尽量把你的推销时间保持在 37 秒左右。显然,在一次普通的电话推销中,推销的时间只有 25 秒,但在成功的电话推销中,时间达到了 37 秒。

Chris 还提供了一些建议,告诉你如何确保潜在客户在约定的时间出现,如果你设法与他们会面的话。

他建议把会议安排在下午,并保持在一个小时以内。

厌倦了体验你的 WordPress 网站的问题?通过 Kinsta 获得最好、最快的主机支持!查看我们的计划

克里斯指出,最好的销售人员更像象棋大师,而不是即兴喜剧演员。他们提前想好事情,以便为每个电话做好准备。他们遵循一种他们知道对自己有效的特定结构。他们很难出其不意,因为他们预料到可能会出什么差错。

如果您想获得关于他们调查结果的更深入的报告,请观看 Chris 在电话推销中的演讲:

#3 传单

每个不幸在街上散发传单的人都知道,一般来说,人们对它们不感兴趣。

我们都曾站在这种互动的另一边。你正忙着自己的事情,突然一个陌生人塞给你一张纸。

现在,你是一个有礼貌的人,不想冒犯他们,所以你等到你转过街角,才把传单放进垃圾桶。

这可能会让你对传单产生怀疑。这是真的,在街上把它们随便分发给一些人并不是对你的资源的最好利用。

然而,他们可能会在你的目标受众经常出没的地方工作,例如,如果你是一家科技初创公司,你可以尝试在科技会议上分发传单。

请记住,传单必须提供价值。例如,您可以提供访问独家内容、免费一个月、25%的折扣等。给他们一个理由把它扔进垃圾桶。

#4 印刷广告

你可能已经听说印刷媒体正在慢慢死去,但却是必然的死亡。是真的。人们不再像以前那样买那么多报纸和杂志了。

事实上,据《卫报》报道,自 2000 年以来,前 100 名杂志的销量已经下降了一半以上。

Sales of newspaper in UK and Ireland

Sales of newspaper in the UK and Ireland

然而,根据同一篇文章,“小众出版物抓住了读者群,因为普通出版物屈服于数字媒体的冲击”。这对你意味着什么?

这意味着,如果你在目标受众喜欢的利基出版物上购买版面,平面广告仍然是接触潜在客户的有效方式。

所以,举个例子,如果你卖渔具,不要在一般杂志上做广告。即使是男性杂志也可能过于普通。找一份专门迎合钓鱼爱好者的出版物。这样你会得到最大的回报。

当然,你不能只是扔在一起一个无聊的广告,并期待伟大的结果,你需要有创意,如果你想抓住读者的注意力。

你甚至可以让你的印刷广告更具互动性。

例如,我们都在杂志上看到过数不清的汽车广告,现在我们大多数人只是简单地浏览一下,甚至没有登记汽车的品牌,更不用说其他细节了。

但是看看这个标致的广告:

是的,他们在平面广告里放了一个安全气囊,真的。这是一个你会记得的广告,对吗?

现在,你不必像标致那样疯狂,但你需要确保你的广告在读者之前看过的无数广告中脱颖而出。需要灵感?

查看 Hubspot 的 【可以补充数字活动的 15 个聪明的互动平面广告例子】

有一种方法来跟踪广告的投资回报率也是一个好主意。你看,当有人点击,比如说,一个脸书的广告,分析会告诉你他们来自哪里。但是你不能从平面广告中得到这些,所以很难知道他们的效果如何。那么你能做什么呢?

简单。提供一个特别的优惠,让你可以追踪广告带来的销售额。例如,你可以有读者需要剪下的实体优惠券,或者他们需要在结账时输入的优惠券代码,甚至是给那些在柜台展示广告照片的人的折扣。看看什么最适合你的目标受众。不要瞎飞!

#5 广告牌广告

广告牌上的广告似乎太过时了。谁还会这么做呢?实际上,很多公司。

然而,有效地做到这一点比平面广告需要更多的创造力,因为人们要么在散步、做白日梦,要么开车飞驰而过,这意味着你需要抓住他们的注意力,并保持足够长的时间来传达你的信息。

Canva 发表了一篇名为【50 个会让你停下脚步的精彩广告牌广告(以及你能从它们身上学到什么)】的文章,其中他们展示了一些精彩的广告牌广告。

例如,人们不得不承认,奥美&马瑟·雅加达的牙齿护理配方广告是很难错过的。对于这样一个平凡的产品来说,这是一个很酷的广告,对吗?

Bite by Ogilvy & Mather Jakarta

“Bite” by Ogilvy & Mather Jakarta

或者,看看 Fame Adlabs 如何在水下广告牌上为灾难电影《后天》做广告。它有那种启示的感觉,不是吗?

Day After Tomorrow campaign by Fame Adlabs

“Day After Tomorrow” campaign by Fame Adlabs

这是 Ubi Bene 为宜家设计的广告牌广告。你看着它…然后你说“等等,什么?”

Ubi Bene for Ikea

Ubi Bene for Ikea

所有这些广告有什么共同点?

它们作为一种模式中断,立即抓住你的注意力。你必须是一个相当心不在焉的人,走过或开车经过这些广告牌而没有注意到它们。一旦你看到这些广告,你不会马上忘记它们。也许你甚至会告诉你的朋友。

这就是你应该瞄准广告牌广告。让人们注意到,让人们记住,让人们谈论。

Outbound marketing is a whole different ball game than inbound marketing. ⚾️ Here's why you shouldn't ignore it.Click to Tweet

摘要

不要被“外向营销已经过时”的说法所迷惑。那只是胡说八道。营销应该以它得到的结果来衡量,而不是以你的偏见来衡量。毫无疑问,如果做得恰当,并针对正确的客户类型,外向营销方法可以非常有效,并带来巨大的成果。

当然,所有属于外向营销方法的策略并不适用于所有类型的业务。最重要的是,公平地说,并不是所有的企业都想在对外宣传或任何营销活动中投入大量预算。

集客营销被证明是一种更具成本效益的营销和发展业务的方法,然而需要时间才能看到切实的成果。另一方面,外向营销需要更大的预算,但它能让你几乎立即获得反馈,并在更短的时间内抓住客户的注意力。

这可能足以完成交易。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

2022 年要尝试的 11 大前景选择

原文:https://kinsta.com/blog/outlook-alternative/

如今,我们对电子邮件客户的期望很高。仅仅撰写、发送和接收电子邮件是不够的。最好的电子邮件客户端帮助我们组织收件箱,管理日程安排,跟踪联系人等等。它们还与我们的其他工具集成,如视频会议应用程序。

微软 Outlook 有丰富的这些额外功能,所以它拥有 2 亿月用户也就不足为奇了。

但它是最好的电子邮件客户端吗?

本文研究了 11 种 Outlook 替代产品,它们的特性,它们的价格,以及你是否应该选择它们而不是 Microsoft Outlook。

Microsoft Outlook 概述

Microsoft Outlook 是一个电子邮件客户端或应用程序,让您可以访问和管理您的电子邮件。

但也不止于此。

Outlook 提供日历、约会设置、任务管理、网页浏览等功能。它有桌面版、网络版和手机版。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

Microsoft Outlook 的历史

我们今天所知的微软 Outlook 是从几个来源演变而来的。

当 Outlook 首次与 Microsoft Office 97 一起发布时,它取代了微软以前的电子邮件客户端 Microsoft Exchange Client 及其时间管理软件 Microsoft Schedule+。

Office 365 和 Exchange Online 订阅者可以使用的基于 web 的 Outlook 版本称为 Web 上的 Outlook。它于 1997 年作为 Exchange Client 5.0 的一部分首次推出,当时名为 Outlook Web Access(现在仍常缩写为 OWA)。

此外,1997 年,微软收购了 Hotmail,这是首批免费的基于网络的电子邮件服务之一。Hotmail 变成了 MSN Hotmail,然后是 Windows Live Hotmail,最后是 Outlook.com。Outlook.com 不是一个桌面邮件客户端,而是一个免费的电子邮件服务。

How Hotmail became Outlook graph

How Hotmail became Outlook (Source: IndianWeb2)

展望市场份额

有很多电子邮件客户端(我们稍后会向您介绍其中的几个),但大多数人使用的是苹果、谷歌或微软的电子邮件产品。

那么,与谷歌和苹果的电子邮件客户端相比,微软 Outlook 的市场份额如何呢?这取决于你用的是哪种设备。

Outlook 在桌面上表现最好,电子邮件打开份额为 37.2% 。这仅次于苹果邮箱,其打开率为 61.8%,其他客户端仅占 1%。

在移动领域,情况有所不同。苹果 iPhone 和 iPad 合计占有 90.8%的市场份额。谷歌安卓(Google Android)以 7.4%的份额远远落后于第二名,其他移动客户端都没有占据很大份额。

Outlook.com 拥有 3.2%的网络邮件市场份额,而 Gmail 以 89.1%的份额统治着网络邮件服务。

关键特征

在将 Microsoft Outlook 与其主要竞争对手进行比较之前,让我们看看它提供了什么。Outlook 有太多的功能需要在这里介绍,但这些是您应该了解的一些主要内容。

电子邮件

电子邮件是 Outlook 的核心功能。它具有典型的电子邮件客户端功能,如接收、撰写和发送电子邮件。您可以将邮件组织到文件夹中,并设置自动将邮件发送到正确文件夹的规则。

日历

Outlook 日历允许您一次查看多个日历,并安排会议和约会。虽然你可以单独使用它,但它对团队最有用。您可以邀请成员参加会议、查看冲突、回复或建议其他时间。

任务/待办事项

Outlook 的经典任务功能正被逐步淘汰,以与微软的待办事项集成。

“待办事项”允许您创建任务列表、设置截止日期、获取提醒以及与他人共享您的待办事项列表。

笔记

您可以为自己创建数字笔记,并在 Outlook 或桌面上显示它们。您还可以对笔记进行颜色编码,或者将其整理成列表。

集成

Outlook 与流行的应用程序集成,包括:

  • 微软团队
  • 松弛
  • 阿萨纳
  • 一款云视频会议软件
  • 微软 OneDrive

定价

您可以免费使用 Microsoft Outlook mobile 应用程序和 Outlook.com。

大多数 Windows 电脑都附带了 Outlook 应用程序,但如果你的电脑没有,你就必须购买桌面客户端。你可以一次性付款,花 159.99 美元购买独立版 Outlook,或者花 249.99 美元购买办公家庭和商业版。你也可以选择微软 365 订阅计划。

微软 365 个人版为每年 69.99 美元或每月 6.99 美元。微软 365 商业计划从每个用户每月 5 美元开始。

订阅 Microsoft 365 还可以让您访问 Outlook for Web。

为什么选择 Outlook 替代品?

尽管有很多好处,微软 Outlook 也有一些缺点。

价格

Outlook 没有免费的桌面电子邮件客户端。仅此一点就导致许多人寻求替代方案。

系统需求

微软的应用程序是为 Windows 开发的,它们在 Windows 中工作得最好。Outlook 确实有 Mac 版本,但如果你运行的是 Linux,你需要找到一个不同的电子邮件客户端。

易用性

这是一个见仁见智的问题,但有些人认为 Outlook 很难设置和使用。例如,在软件评测网站 G2 上,Outlook 的易用性评分为 8.7 ,设置评分为 8.0。

谷歌工作空间在这两个类别中都得到了 9.2 分,而斯派克得到了 9.5 分和 9.7 分的 T2。

临时演员

Outlook 比大多数电子邮件客户端有更多的功能,但是它不能做所有的事情。

也许您正在寻找 Outlook 所没有的独特功能,例如向队友发送电子邮件的功能。

请继续阅读,找出 11 种优秀的 Microsoft Outlook 替代方案。

2022 年 11 大前景选择

1.雷鸟

雷鸟是 Mozilla 的一个开源电子邮件客户端。它可以免费使用,有 Windows、Mac 和 Linux 版本。人们普遍认为它比 Outlook 更容易安装。

它没有像 Outlook 那样附带日历,但你可以下载 Mozilla 的闪电日历,它与雷鸟完全集成。

Thunderbird 的界面从 Mozilla Firefox 和其他流行的浏览器中得到启示,让你在不同的标签中打开多封电子邮件。有很多选项可以定制收件箱的外观和感觉,还有一些附加组件可以增加功能。

然而,与 Outlook 相比,雷鸟的外观有点过时和杂乱。另一个缺点是它没有移动版本。

Thunderbird email inbox

Thunderbird inbox

主要特征

  • 桌面电子邮件客户端
  • 支持 IMAP、POP3 和 SMTP 协议
  • 多标签电子邮件界面
  • 住址名册
  • 搜索栏和电子邮件过滤器
  • 邮件存档
  • 不要跟踪和远程阻止内容
  • 网络钓鱼防护
  • 垃圾邮件过滤器
  • 定制选项和附加组件

它最擅长做什么

雷鸟有许多与 Outlook 相同的功能,但它是免费的。

定价

我们提到过它是免费的吗?

2.Gmail/谷歌工作区

我们先来澄清一下 Gmail 和 Google Workspace 的区别。

Gmail 是谷歌的一项免费电子邮件服务,在免费电子邮件客户端中一直排名很高。Google Workspace 是 G Suite 商务版。使用 Google Workspace,管理员可以在他们的组织内创建、编辑和删除帐户。

Google Workspace 用户可以创建带有自定义域名的电子邮件地址,如【电子邮件保护】,而 Gmail 用户只能创建 Gmail 地址。Google Workspace 提供共享驱动器和更多存储空间。

根据你的需要,Gmail 和 Google Workspace 都可以作为 Outlook 的替代产品。

An image of a Gmail inbox

Gmail inbox

虽然 Gmail 通常用作电子邮件服务,但您也可以将其用作多个电子邮件帐户的电子邮件客户端,包括非 Google 地址。

Google Workspace 商业计划的定价与 Outlook 相当,但你得到的是不同的。Google Workspace 没有桌面版。

另一方面,免费网页版(Gmail)可以作为邮件客户端接收来自多家供应商的电子邮件,而 Outlook.com 只能与微软的电子邮件地址配合使用。

Google Workspace 也有自己的日历——Google Calendar。像电子邮件一样,这只能通过浏览器访问,而 Outlook 有桌面版。

关键特征

  • 基于网络的电子邮件
  • 日历
  • 视频会议
  • 自动电子邮件过滤器和类别
  • 智能写作建议
  • 用于创建日历事件的电子邮件中的事件详细信息
  • 垃圾邮件过滤器
  • 更高层计划的增强安全性

它最擅长做什么

Gmail 和 Google Workspace 是 Google 生态系统的一部分,如果你的公司已经使用了 Google Drive、Google Docs 或 Google Calendar 等解决方案,这将非常方便。

定价

  • Gmail:免费
  • 创业:6 美元/月/用户
  • 商业标准:12 美元/月/用户
  • 商务加:18 美元/月/用户
  • 企业:自定义

3.eM 客户端

eM Client 是一款适用于 Windows 和 Mac 的电子邮件客户端,提供了许多与 Microsoft Outlook 相同的功能,包括日历、任务和笔记。

它有一个干净、现代的界面,使用起来很直观。

eM Client inbox

eM Client inbox

eM Client 承诺提供“超快的”搜索,甚至可以在 pdf 等文档中使用。它集成了 Dropbox、Gmail、谷歌日历和谷歌驱动。

总的来说,eM Client 和 Microsoft Outlook 类似,关于哪个更好,评论不一。

eM Client 的优势之一是它的免费版本。然而,它的功能非常有限。例如,您只能使用两个电子邮件地址,唯一的客户支持选项是用户论坛。

主要特征

  • 桌面电子邮件客户端
  • 日历
  • 任务
  • 笔记
  • 电子邮件的即时翻译
  • 暂停电子邮件
  • 可定制界面
  • 聊天即时消息
  • PGP 加密

它最擅长做什么

eM Client 是一个电子邮件客户端,很像 Outlook,但安全性稍好,界面不受干扰。

定价

  • 自由的
  • 个人版:49.95 美元
  • 面向公司的专业版:188.95 美元

4.邮鸟

Mailbird 是一款用于 Windows 的电子邮件客户端。它有一个免费版本,你可以使用一个单一的电子邮件帐户和个人和商业用途的付费计划。

还有一个高度可定制的整洁界面。

虽然 Mailbird 可以让你将电子邮件组织到文件夹中,但它没有 Outlook 的自动排序选项。

Mailbird inbox

Mailbird inbox

Mailbird 与多种应用程序集成,包括但不限于:

  • 谷歌服务
  • 脸谱网
  • 松弛的
  • 推特
  • Dropbox
  • 阿萨纳
  • Whatsapp
  • 微博
  • 商务化人际关系网
  • 电子邮件营销软件如 ZeroBounce

Mailbird 的 macOS 版本正在开发中。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

主要特征

  • Windows 电子邮件客户端
  • 支持 IMAP 和 POP3 帐户
  • 暂停电子邮件
  • 与许多应用程序集成
  • 可定制的主题
  • 多语言支持

它最擅长做什么

Mailbird 提供了大量有用的集成。

定价

  • 自由的
  • 个人:每月 3.25 美元
  • 商务:每月 99.75 美元或 4.92 美元

5.火花

Spark 是一款适用于 Mac、iOS 和 Android 的电子邮件客户端。

Spark inbox

Spark inbox

Spark 一边学习,一边自动对收件箱中的电子邮件进行分类和优先排序。

团队协作是它最大的优势——你可以和其他人一起写一份共享的电子邮件草稿,或者在只有你的团队成员才能看到的电子邮件上留下评论。您还可以将电子邮件委托给特定的人,设置截止日期,并在完成时收到通知。

并非每个用户都对 Spark 的隐私做法感到兴奋。例如,一旦你在一台设备上设置了电子邮件帐户,你就再也不用输入所有的密码或其他详细信息了。当你在另一台设备上安装 Spark 时,你输入其中一个账户的详细信息,你所有的收件箱就会自动同步。

这非常方便,但也意味着你的电子邮件密码存储在服务器上。这意味着如果黑客进入了你的一个电子邮件账户,他们就可以进入所有的账户。

Spark 个人使用是免费的,但是团队协作功能需要付费。

主要特征

  • 用于 Mac、iOS 和 Android 的电子邮件客户端
  • IMAP 和 POP3 支持
  • 跨设备帐户同步
  • 自动分类
  • 电子邮件 pin
  • 电子邮件暂停

它最擅长做什么

高级版提供了一组强大的协作功能。

定价

  • 自由的
  • 高级:6.39 美元/用户/月
  • 企业:自定义

6.邮件春天

Mailspring 是一款适用于 Windows、Mac 和 Linux 的电子邮件客户端。它有一个相对简单的设计,易于理解,而且往往比 Outlook 运行得更快。

它有多种布局和主题可供选择。

Mailspring inbox

Mailspring inbox

Mailspring 提供了活动跟踪,这意味着当联系人阅读你的电子邮件时你会得到通知,还提供了链接跟踪,所以你可以看到谁在跟踪你的链接。

Mailspring 的免费版本可以让你连接多达四个电子邮件帐户。它缺少一些更花哨的功能,比如阅读回执和电子邮件打盹。

主要特征

  • 用于 Windows、Mac 和 Linux 的桌面电子邮件客户端
  • 连接 IMAP 和 Office 365 帐户
  • 活动跟踪
  • 链接跟踪
  • 电子邮件暂停
  • 可定制的布局和主题
  • 本地化为九种语言

它最擅长做什么

Mailspring 有一个直观的设计,没有 Outlook 的臃肿。

定价

  • 自由的
  • 保费:8 美元/月

7.变化

Shift 旨在帮助你在多个 Gmail 账户之间切换。它后来发展了,可以连接到微软的电子邮件和其他应用程序,如 Slack 和 Facebook Messenger。

需要一流的,快速的,安全的主机为您的新电子商务网站?Kinsta 提供超快的服务器和来自 WooCommerce 专家的 24/7 世界级支持。查看我们的计划

你可以一次搜索你所有的账户或者快速浏览它们。

Shift inbox

Shift inbox

虽然大多数评论者喜欢 Shift 及其集成的概念,但许多人发现它有很多缺陷,而且运行缓慢。

Shift 有一个免费版本,允许两个电子邮件帐户、一个应用程序和共享工作区。高级版本还允许你添加 Chrome 扩展和谷歌服务等功能。

如果您使用多个帐户通过电子邮件进行销售和营销,请查看我们在电子邮件营销最佳实践上的帖子。

主要特征

  • 电子邮件和其他服务的桌面应用程序
  • 多标签显示
  • 搜索所有客户
  • 创建共享工作区

它最擅长做什么

Shift 是一款用户友好的桌面应用,用于统一 Gmail、微软电子邮件以及其他应用和服务。

定价

  • 自由的
  • 高级:99.99 美元/年
  • 团队:99.99 美元/年/用户

8.长钉

到目前为止,我们提到的许多电子邮件客户端都有类似的外观。

秒杀不一样。

用户界面的设计看起来和感觉上都像聊天。您收到的电子邮件被转换成聊天气泡,并显示为一个单独的对话。

你回复的邮件对收件人来说就像普通邮件一样(假设他们没有使用 Spike)。

Spike inbox

Spike inbox

Spike 还提供笔记、任务和视频聊天。

Spike 适用于 Windows、Mac、iOS 和 Android。有多种定价方案,包括一个免费的。这项免费计划让你可以连接无限的个人账户,并使用其他客户认为是高级的一些功能,包括电子邮件打盹和共享笔记。

主要特征

  • 适用于 Windows、Mac、iOS 和 Android 的聊天式电子邮件客户端
  • @提及次数
  • 电子邮件暂停
  • 电子邮件 pin
  • 自定义模板
  • 任务
  • 笔记
  • 音频和视频通话

它最擅长做什么

斯派克把你的电子邮件变成一个单独的聊天对话。

定价

  • 个人:免费
  • 单人:12 美元/用户/月
  • 团队:8 美元/用户/月
  • 企业:7 美元/用户/月
  • 企业:自定义

9.飞马星座

早在微软 Outlook 出现的几年前,就有了 Pegasus 。在其网站上,Pegasus 吹嘘它是“互联网上服务时间最长的个人电子邮件系统”

Pegasus 创建于 1990 年,用于现已不存在的 NetWare 服务器操作系统,现在是一个 Windows 专用的客户端,仍然由其最初的创建者维护。

Pegasus Mail inbox

Pegasus Mail inbox

老实说,没有太多理由让你在 2022 年使用 Pegasus(也称为 Pmail)而不是 Microsoft Outlook。但它可以免费试用,而且它确实具有基于规则的过滤和搜索等现代功能。

主要特征

  • 桌面 Windows 电子邮件客户端
  • 管理多个帐户
  • 支持 POP3 和 IMAP
  • 过滤

它最擅长做什么

Pegasus Mail 是一个桌面 Windows 客户端,适合喜欢复古 Windows XP 体验的人。

定价

完全免费。

10.质子机

ProtonMail 是一个电子邮件提供商,而不是客户端,但是如果你对 Outlook 的安全功能不满意,它是一个很好的选择。

ProtonMail 位于瑞士,开源,为你的电子邮件提供端到端的加密。

ProtonMail 提供的众多安全功能之一是自毁电子邮件。您为您的电子邮件指定一个到期日期,该日期将从收件人的收件箱中删除。

ProtonMail inbox

ProtonMail inbox

使用 ProtonMail,您的电子邮件甚至可以免受 ProtonMail 的攻击。您的数据使用零访问加密存储,因此 ProtonMail 本身不知道您的密码,也无法解密您的电子邮件。

ProtonMail 是一款基于网络的电子邮件,为 Android 和 iOS 提供移动应用。

主要特征

  • 基于网络、Android 和 iOS 的电子邮件
  • 端到端加密
  • 零访问加密
  • 自毁邮件
  • 付费计划的自定义域名

它最擅长做什么

ProtonMail 是现存最安全的电子邮件客户端之一。

定价

  • 自由的
  • 另外:每月 5 美元或每年 48 美元
  • 专业:8 美元/月或 75 美元/年
  • 愿景:每月 30 美元或每年 288 美元

11.前面

Front 是一款电子邮件应用,旨在改善与您的团队和客户的沟通。

它提供协作功能,如共享收件箱和向队友发送电子邮件的能力,所以你知道谁会回复什么。

您可以在电子邮件线程上评论和@提及其他用户,以便与您的团队进行讨论。

Front inbox

Front inbox

Front 不仅汇集了电子邮件帐户,还汇集了社交媒体和其他应用程序。

分析可以让经理实时洞察团队的表现。

正如你可能知道的,Front 是针对商业用途的,所以没有免费或个人的计划。非常适合 B2B 电子邮件营销。

关键特征

  • 适用于 Windows、Mac、iOS 和 Android 的电子邮件客户端
  • 共享电子邮件草稿
  • 评论和@提及
  • 向团队成员分配电子邮件
  • 消息模板
  • 定制自动化
  • 分析学

它最擅长做什么

Front 是一个功能丰富的团队协作平台。

定价

  • 入门:19 美元/用户/月
  • prime:49 美元/用户/月
  • 企业:自定义

Is Microsoft Outlook the right email client for you? 🤔 Explore more options in this guide 📧Click to Tweet ## 摘要

微软 Outlook 是全球顶级电子邮件客户端之一,但它并不适合所有人。

首先,如果你需要一个桌面客户端,它会变得很贵。根据你的需要,你可能会更关注团队协作或安全性。

幸运的是,有很多可供选择的方法可以尝试。

选定了电子邮件客户端,并准备好开始让电子邮件为您的企业服务了吗?请在评论中告诉我们你打算尝试哪一种。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何设置正确的 Outlook SMTP 设置来发送电子邮件

原文:https://kinsta.com/blog/outlook-smtp-settings/

正在寻找正确的 Outlook SMTP 设置?

使用 Outlook SMTP 服务器,您可以配置您的首选电子邮件客户端来使用您的 Outlook 帐户发送电子邮件。或者,如果你有一个 WordPress 站点,你也可以配置 WordPress 使用你的 Outlook 账户发送电子邮件,以提高你的站点电子邮件的可靠性。

在这篇文章中,我们将涵盖你需要知道的关于 Outlook SMTP 设置的一切。我们将首先分享实际的 SMTP 设置本身,以及 POP3 和 IMAP 设置(除了发送之外,还接收电子邮件)。

对于 WordPress 用户,我们也将解释如何配置 WordPress 来使用 Microsoft Outlook 发送电子邮件。

查看我们的视频指南来设置 Outlook SMTP 设置以发送电子邮件

如何配置我的 Outlook SMTP 设置?

  • SMTP 服务器:smtp.office365.com
  • 端口 : 587
  • 需要 SSL :是
  • 需要 TLS :是(如果有)
  • 认证:是(如果有多个选项,选择登录
  • 用户名:您完整的 Outlook 电子邮件地址(例如【电子邮件保护】)
  • 密码:您的 Outlook 密码(与您登录 Outlook 网站时使用的密码相同)
  • 发送限制:一天 300 封邮件或一天 100 个收件人。

这些是您需要配置您的电子邮件客户端或 WordPress 网站以使用 Outlook SMTP 服务器的详细信息。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

专业提示:在我们的博客文章中了解更多关于 SMTP 端口的信息。

在本指南的帮助下,确保您的 Outlook SMTP 设置配置正确⬇️ 点击发布推文

Outlook POP3 设置

Outlook SMTP 服务器允许你使用 Outlook 账户发送电子邮件,而 POP3 和 IMAP 允许你导入其他人发送给你的电子邮件。我们将在下一节讨论 IMAP。

如果您想使用电子邮件客户端,添加 POP3 或 IMAP 凭据以在您的电子邮件客户端中接收来自 Outlook 的电子邮件也很重要。一般来说,如果你想从多种设备(如台式机和手机)访问电子邮件,IMAP 比 POP3 更好,因为它允许双向同步。然而,如果你只使用一种设备,POP3 可能是更好的选择。

您应该注意到 Outlook 默认禁用 POP3。要启用它,请单击 Outlook 界面右上角的齿轮图标,然后搜索“pop”然后,点击 POP 和 IMAP 的结果(或者您可以点击此链接直接进入)。

How to access the POP settings

Accessing the POP settings

POP 选项区域下,选择下的让设备和应用使用 POP 选项。然后,您可以选择是让应用程序和设备从 Outlook 中删除电子邮件,还是永久保留它们。

How to enable POP access for Outlook

Enabling POP access for Outlook

保存启用 POP3 访问的更改后,您可以使用这些设置:

  • 服务器:outlook.office365.com
  • 端口 : 995
  • 加密方式 : TLS

Outlook IMAP 设置

正如我们上面提到的,如果你想从多个设备上访问电子邮件,IMAP 通常是一个更好的选择。Outlook 默认启用 IMAP 访问,因此您只需使用这些设置:

  • 服务器:outlook.office365.com
  • 端口 : 993
  • 加密方式 : TLS

如何为 WordPress 站点配置 Outlook SMTP

假设你想提高你的 WordPress 站点发送的电子邮件的可靠性。在这种情况下,你也可以配置你的 WordPress 站点来使用 Outlook SMTP 服务器发送邮件,以利用大量的发送限制(每天 300 封邮件给最多 100 个收件人)。

设置过程主要包括将 Outlook SMTP 服务器设置插入到 WordPress SMTP 插件中(下面的)。然而,如果你遇到任何问题,也有许多其他免费的 SMTP 服务器可供选择,包括的免费 Gmail SMTP 服务器

1.安装 Post SMTP 插件并设置“发件人”详细信息

要配置 WordPress 使用 SMTP 服务,你需要一个 WordPress SMTP 插件。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

有几个受欢迎的选项,但我们推荐 Post SMTP 插件,因为它是 100%免费的,并且包括调试您网站的电子邮件可能存在的任何潜在问题的功能。

首先,安装并激活 WordPress.org 的免费插件。然后,转到你的 WordPress 仪表盘中新的 Post SMTP 区域,点击选项显示所有设置:

How to access the full Post SMTP settings

Accessing the full Post SMTP settings

然后,转到消息选项卡,输入您的“发件人”电子邮件地址和姓名。电子邮件地址应该是您的 Outlook 帐户电子邮件,而名称可以是您希望收件人看到的任何名称:

How to set your "From" email and name

Setting the “From” email and name

完成后,请确保保存您的更改。

2.将 Outlook SMTP 服务器添加到插件设置中

接下来,点击显示所有设置链接,再次打开全部设置。

账户选项卡中,从类型下拉列表中选择 SMTP ,并确保邮件程序类型下拉列表显示postssmtp。

现在,您应该会在 Outlook SMTP 服务器详细信息字段下看到一组扩展的选项。按如下方式输入它们:

  • 发送邮件服务器主机名:smtp.office365.com
  • 发送邮件服务器端口: 587
  • 信封发件人电子邮件地址:添加您的 Outlook 电子邮件地址。如果您使用不同的电子邮件地址,您可能会遇到错误。
  • 安全性: STARTTLS
  • 认证:登录
  • 用户名:您完整的 Outlook 电子邮件地址。
  • 密码:您的 Outlook 密码,也就是您登录 Outlook 网站时使用的密码。

How to configure the Outlook SMTP server in Post SMTP

Configuring the Outlook SMTP server in Post SMTP

添加完所有细节后,请务必保存设置。

厌倦了低于 1 级的 WordPress 托管支持而没有答案?试试我们世界一流的支持团队!查看我们的计划

3.发送测试电子邮件

现在,您已经完成了使用 Outlook SMTP 服务器发送电子邮件的配置。

为了确保一切正常运行,该插件包含了发送测试电子邮件的功能。

为此,进入 Post SMTP 区域,点击发送测试邮件选项:

How to access Post SMTP's test email feature

Accessing Post SMTP’s test email feature

输入您想要发送测试邮件的电子邮件地址,然后点击下一步:

Enter your own email in the Recipient Email Address box

Enter your email in the Recipient Email Address box

如果您输入的详细信息正确,您应该会看到一条成功消息:

You should see a success message if the Outlook SMTP settings are correct

The success message when the Outlook SMTP settings are correct

此外,您应该会在接收测试邮件的电子邮件帐户中看到一封新邮件:

An example of the test email that Post SMTP sends

An example of the test email that Post SMTP sends

如果一切正常,您就完成了设置!

如果您有问题,您可以通过进入 Post SMTP >电子邮件日志并查看失败电子邮件的特定错误消息来调试它。插件还会建议一个解决方案。例如,如果您输入了错误的密码,它会告诉您仔细检查这些细节:

How to debug email sending problems using Post SMTP's email log

Debugging email sending problems using Post SMTP’s email log

如果你想不出哪里出了问题,可以考虑使用另一个免费的 SMTP 服务器,比如的免费 Gmail SMTP 服务器

如果您是 Outlook 用户,您可以配置您的首选电子邮件客户端,使用您的 Outlook 帐户及其 SMTP 服务器发送电子邮件📧

摘要

Outlook SMTP 服务器允许您配置您喜爱的电子邮件客户端或您的网站,以使用您的 Outlook 帐户发送电子邮件。

对于 WordPress 用户来说,这里的好处是它提高了你网站的电子邮件的可靠性,因为你可以使用 Outlook 优化的 SMTP 服务器。此外,对于大多数 WordPress 网站来说,每天发送 300 封邮件的限制应该绰绰有余。

对于电子邮件客户端,SMTP 服务器允许您使用客户端界面发送电子邮件。如果你将它与 POP3 或 IMAP 结合使用,你还可以在你选择的电子邮件应用或客户端接收 Outlook 邮件。

请务必查看 DevKinsta ,这是我们免费的本地开发测试工具,在为您的站点配置 SMTP 设置时非常方便。

关于 Outlook SMTP 设置或如何在 WordPress 网站上使用它们,您还有任何问题吗?请在评论中告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

2022 年使用的 9 个最佳密码管理器

原文:https://kinsta.com/blog/password-managers/

有时候你可能会觉得自己疯了。

你会在你的登录屏幕前坐几分钟,绞尽脑汁寻找一个你已经使用了一百万次的密码。

更糟糕的是,如果你想不起来,你将不得不通过重置你的密码的练习,并试图记住你的安全问题的答案到底是什么。

这种经历对很多人来说都很常见。超过 78% 的人在过去 90 天内重置了他们的一个密码。

为了抵消这一繁琐的过程,许多人转向密码管理器来保存和存储他们的敏感信息。

在本帖中,我们将概述你需要知道的关于密码管理器的一切,并强调你应该考虑的最佳密码管理器。

You changed your password to something you swore you'd never forget... so why are you drawing a blank now? 😭 Make life much easier with these 9 great password managers 🔒Click to Tweet

密码管理器是如何工作的?

密码管理器是一种基于网络的安全软件或可在您的设备上下载的软件,使您能够存储密码,从而更容易登录到您最喜爱的帐户。一些密码管理器存储其他敏感信息,包括信用卡信息、地址、安全笔记等等。

许多人使用密码管理器来消除记住所有个人密码的需要。

想象一下,你再也不用经历所有的步骤来重新设置你的密码。相反,你只需点击几下鼠标就可以登录你的账户。

当您登录网站时,只要您登录到密码管理器,您的密码就会自动填充。

此外,您可以利用浏览器插件来简化这一过程。

LastPass Chrome extensions

LastPass Chrome extensions

密码管理器帮助全球数百万用户实现了这一点,并消除了他们登录过程中的摩擦。大约 22%的美国人使用密码应用程序来管理他们的安全信息。

你所需要做的就是记住你的密码管理器使用的主密码,你应该已经准备好了。

密码管理器还有助于用户有一个更安全,更安全的在线足迹。可以生成密码,并向帐户可能受损的用户发送警报。

用户也将能够创建独特的密码,因为他们不必记住它们。

例如,一项研究发现,4400 万微软用户不止一个账户使用同一个密码。

专家会建议你多样化你的密码以防一个账户被泄露。

有了密码管理器,你可以。

密码管理器有多安全?

可以想象,许多消费者关心的是密码管理器的安全性。

简短的回答是:非常安全。

大多数密码管理器使用高级加密标准(AES)和 256 位随机生成的密钥。

这是密码管理员可以用来加密和保护安全信息的最高形式的安全协议之一。随机生成的密钥对存储在软件中的信息进行加密。

此外,大多数密码管理器在本地加密,这意味着它们不会存储或查看您的信息。在你的密码被保存在密码管理器之前,它们是被加密的,所以公司甚至不知道敏感信息。

最重要的是,记住密码管理器是比笔记本、Google Sheets 或 word 文档更好的选择。

它们更安全,甚至有助于消费者安全措施。他们用密码生成器帮助你制作更复杂的密码,最终使你的登录程序更加安全

不管你喜不喜欢,其他人可能正试图进入你的账户。事实上,超过 27% 的人曾试图猜测别人的密码,而 17%的人猜对了。

一旦有人进入你的一个帐户,如果你使用相同的密码,他们就可以进入所有的帐户。

password reuse

Password reuse statistics (Image source: google.com)

这就是为什么使用复杂密码的组合来增加您的在线帐户和云安全至关重要。

如果没有多重密码,你的所有账户都有遭受毁灭性攻击的风险。

密码管理器迫使您加强您的数字安全,同时安全地存储您的敏感信息并保护它免受不良行为者的侵害。

如何使用密码管理器

密码管理器是如此容易使用后,快速安装过程。

您需要做的就是:

  1. 注册你选择的密码管理器。
  2. 下载桌面版和浏览器插件。
  3. 选择主密码并登录。
  4. 开始链接您的帐户。

从那里,当你访问一个你有帐户的网站时,你只需点击几下就可以登录。

无论您使用密码应用程序还是在线浏览器,都可以让您轻松添加、编辑和存储密码。

只需登录,您就可以开始了:

Password manager

Password manager example

当你所有的密码都被存储后,你只需点击几下鼠标就可以登录你的账户了。

9 个最佳密码管理器可供选择(免费和付费工具)

也许你是密码管理器的新手,只是想知道什么是满足你密码需求的一体化解决方案。

下面我们重点介绍了市场上最佳密码管理器的主要竞争者。这考虑了安全性、可用性、价格和功能。

如果您想要所有领先的密码管理器的安全性,但不想为它们付出代价,请考虑这些免费选项。

虽然大多数都提供某种形式的免费增值模式,但这些竞争者免费提供了最广泛的功能。

1.比特监狱长

Bitwarden

Bitwarden

Bitwarden 是一款密码管理解决方案,可以在信息离开您的设备之前对其进行加密。通过利用开源软件,来自世界各地的开发者可以改进其基础设施。

作为一款免费软件,Bitwarden 提供了确保密码安全存储所需的基础知识。只需每年支付几美元,你就可以选择加入报告,如果某些密码不够复杂,它会向你发出警告,并包括关于你账户的额外安全数据。

定价: Bitwarden 是免费的,除非你想升级到每年 10 美元的精选高级功能,包括双因素认证,安全报告等等。

2.诺德帕斯

NordPass

NordPass

由著名的 VPN 解决方案nord VPN的创造者带来的nord VPN是一个相对较新的密码管理器,允许用户即使在离线时也能访问他们的密码——不管是什么设备。这是一个简单的密码管理应用程序,没有其竞争对手的所有花哨功能。

如果您只是在寻找一种存储密码的方式,并且不需要太多其他东西,NordPass 可能是您的正确选择。它提供独特的功能,包括通过指纹扫描或 FaceID 功能的生物识别保护。

定价:免费版本应该更适合大多数使用案例,但你可以每月花 2.49 美元升级,以评估密码健康,跨多个设备同步等等。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

3.KeePass

KeePass

KeePass

KeePass 带你回到基础。你不会发现这一个花哨的用户界面,但开源软件让你“在一个数据库中存储你所有的密码”,你可以用你的密钥访问。

该平台声称受到 NASA 的信任,新版本似乎在不断发布。这对于只想安全存储密码的用户来说是完美的。

使用 KeePass,您可以绕过其他一些可能会分散注意力的功能,只需安全地存储您的密码,因此您不必担心它们。

定价: KeePass 是一款免费的开源软件。

4.机器人形态

RoboForm

RoboForm

RoboForm 是一个存储密码的直接解决方案。密码管理器提供了广泛的功能,包括主密码生成器、密码表单自动填充、多平台支持等等。

RoboForm 还使您能够安全地发送登录信息,这通常是竞争对手密码管理器解决方案中的一项付费功能。该应用程序与所有浏览器集成,你可以导入或导出你的密码,以击中地面运行。

定价: RoboForm 的高级版本每人每年 16.70 美元,解锁双因素身份验证、安全共享文件夹、优先支持等其他功能。

5.粘性密码

Sticky Password

Sticky Password

粘性密码已经上市,可以帮助你安全登录,并且“现在就不要忘记你的密码”这个密码管理器有一个加密的保险箱,可以安全地保存您的登录信息。通过使用单点登录,您将能够在几秒钟内通过几次点击来访问您的所有密码。

由于有一个基本的界面和必要的功能,粘性密码提供了多种设备共享,所以你可以在你的在线帐户或离线应用程序上访问你的密码。该平台具有无云 WiFi 同步和生物认证功能,安全可靠。

Sticky Password 还提供了一个智能安全仪表板,突出显示哪些已保存的登录帐户具有弱密码,需要更改为更复杂的密码。这对于那些希望增强安全措施的用户来说是一个额外的奖励。

定价:粘性密码免费。如果你想选择高级密码管理器选项来解锁无限制的密码共享、同步和备份,你需要每年支付 29.99 美元,或者选择 159.99 美元的终身服务。

6.最后一遍

LastPass

LastPass

LastPass 是市场上首批密码管理器之一,与 1Password 一起被广泛认为是行业领导者。

LastPass 的工作原理是让用户注册一个安全的主密码,他们可以使用该密码登录并开始添加他们的密码。“保险库”可以用来存储密码、安全笔记,甚至地址。

为了方便保存和访问你的密码,LastPass 为几乎所有的浏览器都提供了扩展功能。但是,为了登录,用户可以设置多因素身份验证作为附加的安全功能。这是对仅在您的设备上发生的 AES-256 位加密的补充。

虽然 LastPass 起初并不是最直观的密码管理器,但它独特的工具集,捆绑在免费版本中,使它成为用户中使用最多的密码管理器之一。然而,该公司在 2021 年引入的巨大变化可能会对 LastPass 未来的市场份额产生负面影响。

与宕机和 WordPress 问题做斗争?Kinsta 是一款考虑到性能和安全性的托管解决方案!查看我们的计划

截至 2021 年 3 月 16 日,LastPass 正在将对其服务的访问限制为一种活动设备类型。这意味着,如果你在他们的免费计划中,你将被要求选择电脑移动设备作为你访问密码、金库和笔记的首选方式。具体来说,您的首次登录将设置您的活动设备类型,您只有三次机会来决定哪种活动设备类型适合您。

定价:提供了一个免费版本,允许您存储自己的密码,但不能共享,并且仅限于一种活动设备类型。高级版起价为每人每月 3 美元。它开启了包括共享、安全仪表板、黑暗网络监控等高级功能。

7.仪表板

Dashlane

Dashlane

Dashlane 的存在是为了“给你一个更安全、更简单的在线生活”除了密码管理,Dashlane 还会检查您的整个数字足迹,寻找保护您的在线信息安全的方法。

与其他密码管理器应用程序非常相似,Dashlane 会在您浏览时存储您的密码信息,并具有密码自动填充功能,使您能够在第一次登录账户时输入密码。

Dashlane 还提供了一个密码生成器,这是一个为每个帐户创建唯一密码并将其存储在密码管理器中的工具。这些密码是字符、符号和数字的随机组合,这使得黑客更难猜出它们。

Dashlane 的黑暗网络监控功能是真正让它们与众不同的地方。这种高级功能只扫描网络,并交叉引用您帐户的最新漏洞和黑客攻击。如果你的账户有任何问题或者你需要修改密码,它会提醒你。

定价:有一个免费的计划以及个人每月 4.99 美元(如果按年付费)起的高级选项。

8.1 密码

1Password

1Password

1Password 是一个密码管理器,它强调只需要“一个密码”就够了。该平台提供基于网络、移动和桌面的应用程序,使您可以在任何设备上轻松找回密码。

1Password 的核心功能包括自动填表功能,使您只需点击、查看或触摸即可登录您的帐户。此外,它还提供了了望塔,可以扫描网页,如果你的密码不够复杂,还会提醒你。它会检查您的密码,并在您需要为任何网站设置双因素身份验证时向您发送警报。

1Password 还会为用户生成一个“密钥”。此密钥通过 1 密码服务器进行身份验证,但它由用户存储在本地,以增加加密级别。

定价: 1Password 不提供免费选项。它的价格选项从每人每月 2.99 美元(按年计费)开始。

9.饲养员

Keeper

Keeper

Keeper 存储您的密码数据,同时保护您免受密码相关数据泄露和威胁。使用 Keeper,您可以添加不同的角色,为每个帐户分配不同的权限和特权。

Keeper 的用户体验是它区别于竞争对手的地方。布局易于掌握,应用程序的蓝白对比使其成为一种简单、有吸引力的视觉体验。

定价: Keeper 提供 5 种不同的计划(企业、商业、个人、家庭、学生),每人每月 2.91 美元起。

Mac 和 Windows 预装密码管理器怎么办?

大多数计算机设备都装有软件,可以存储密码。

macOS 钥匙串访问

当您使用 Safari 并首次登录网站、电子邮件帐户或任何受密码保护的项目时,系统会询问您是否要存储密码:

Storing password on macOS

Storing password on macOS

这已经成为互联网浏览体验的一个标准部分,也将成为几乎所有网络消费者的第二天性。

通过点按“存储密码”,您将在“钥匙串访问”中储存您的登录凭据。

Keychain Access

Keychain Access

“钥匙串访问”使用与大多数密码管理器相同的 AES-256-GCM 密钥,甚至允许用户创建加密的便笺来访问他们的帐户。

当将“钥匙串访问”与其他密码管理器进行比较时,差异几乎不明显,因为除了存储和检索加密信息之外,没有太多其他功能。

对于 Windows 凭据管理器来说也是如此。

Windows 凭据管理器

如果您使用的是 PC,Windows 凭据管理器相当于 macOS 的钥匙串软件。它将登录信息存储在设备和安全服务器上。

Windows Credential Manager

Windows Credential Manager

然而,这些年来,用户对这款应用的安全级别有一些安全担忧。

因此,为了确保你的数据安全,我建议绕过这两个选项,直接选择一个密码管理器应用程序。

为什么?有各种各样的原因,最重要的是,这些基于操作系统的应用程序的加密级别可能会有所不同,这使得它们不如主要为该用例开发的密码管理器安全。

你仍然可以使用这些作为你的一些密码的基本存储“单元”,因为它可以快速轻松地检索它们,但是如果你想要更安全,更强大,更方便的功能,你将需要一个密码管理器。

More than 78% of people have reset one of their passwords in the past 90 days. 🤯 Stop the cycle with one of these password managers 💪Click to Tweet

摘要

密码管理器是一项受欢迎的技术,用户开始采用它。它们是存储敏感数据和登录凭据的更安全的方式。

只需点击几下就可以下载一个并且只需要记住一个主密码,密码管理器是一个方便有用的软件,应该成为你的工具集的一部分。

与其他类型的应用程序一样,根据您的具体需求、预算和使用情况选择合适的应用程序。这篇博文中概述的那些都是有效的解决方案,可以适应大多数用例以及个人偏好。

现在轮到你了:你使用任何密码管理器吗?你有什么经验?请在评论中告诉我们!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何用密码保护你的 WordPress 网站:每一种方法

原文:https://kinsta.com/blog/password-protect-wordpress-site/

寻找一种密码保护 WordPress 的方法?有很多不同的方法可以给你的站点添加密码保护,从保护你的整个 WordPress 站点,只是一个特定的内容,甚至只是一个公开内容的一部分。

其中一些解决方案需要使用插件,而另一些则使用核心 WordPress 功能或你可以在服务器级别进行的配置。

在这篇文章中,我们将尽可能多地尝试不同的方法。总之,你将学到:

You can click any one of the links above to jump straight to a specific method, or you can read through to learn all the methods how to password protect your WordPress site.

如何用密码保护你整个 WordPress 网站

如果你想用密码保护你的整个 WordPress 网站,你有两个主要的选择:

  • A plugin
  • 服务器级别的 HTTP 身份验证

在这两种方法中,插件方法无疑更加用户友好,并且更适合面向用户的站点,而 HTTP 认证是一种有效的方法来保护一个 WordPress staging 站点或者其他类型的非面向用户的站点。

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

如何用插件对 WordPress 站点进行密码保护

为了用密码保护你的整个 WordPress 网站,我们推荐 Ben Huson 的免费密码保护插件,该插件评价很高,可以在 WordPress 买到。

重要的

如果你在 Kinsta 托管你的站点,并且想要使用这个插件,你需要排除一个通配符 cookie。为此,请联系 Kinsta 支持部门,并为您设置特定的排除。

安装并激活插件后,您可以进入设置→密码保护来配置插件的设置。

勾选密码保护状态框,启用密码保护,并在新密码框中输入您想要的密码。

该插件的另一个好处是,它还让您可以选择将某些类型的用户/请求以及 IP 地址列入白名单。如果需要,您可以配置这些选项:

How to password protect your entire WordPress site

How to password protect your entire WordPress site

一旦你激活它,任何试图访问你的网站的人都需要在一个精简版的 WordPress 登录页面中输入密码:

The sitewide password form

The sitewide password form

如果你想把登录页面的标志从通用的 WordPress 标志上去掉,你可以使用免费登录标志插件

如何用 HTTP 认证密码保护 WordPress 站点

有了基本的 HTTP 认证(又名 htpasswd 保护),你可以在人们加载你的网站之前增加一层额外的密码保护,这就是为什么它是一个很好的选择。

如果你在 Kinsta 托管你的 WordPress 站点,你可以在 MyKinsta 仪表板中使用我们简单的密码保护(htpasswd)工具。您可以在网站的“工具”部分找到它。只需点击“启用”,选择用户名和密码,你就可以开始了!

Enable .htpasswd protection

Enable .htpasswd protection

启用后,你的 WordPress 站点将需要认证才能访问。您可以随时更改凭据,或者在不再需要时将其禁用。

.htpasswd authentication prompt

.htpasswd authentication prompt

如何用密码保护目录

需要密码保护你网站上的目录吗?也许你有一个文件夹在你的 WordPress 安装之外,你不想让公众访问它。

如果你的 WordPress 站点在 Kinsta,我们的支持团队可以帮助你。否则,您也可以使用 htpasswd 保护来实现这一点,您只需要相应地更新目录。

街头流氓

要手动设置它,首先需要创建一个.htpasswd文件。你可以使用这个方便的生成器工具。然后将文件上传到你想要保护的目录。

www/user/public/protecteddirectory

然后用下面的代码创建一个 .htaccess 文件,上传到你想要保护的目录的路径下。确保您更新了目录路径和用户名。

AuthType Basic  
AuthName "restricted area"  
AuthUserFile /www/user/public/protecteddirectory.htpasswd  
require valid-user 

Nginx

如果运行的是 Nginx ,也可以用 HTTP 基本认证限制访问。查看这篇教程

如果你的主机有 cPanel 的提供者,你可以用“目录隐私”工具设置一个密码保护的目录,这个工具位于文件部分。

cPanel directory privacy

cPanel directory privacy

如何用密码保护帖子、页面和电子商务产品

如果你想用密码保护一篇文章、一个页面或者一个网上商务产品,WordPress 实际上有一个内置的功能,通过它的可见性设置来帮助你设置。

你会在 WordPress 编辑器中找到可见性设置,所以你可以将它用于我们上面提到的每一种内容,以及你可能在你的网站上使用的任何其他自定义帖子类型

要开始使用:

  • 打开想要添加密码保护的内容的 WordPress 编辑器。
  • 在右侧边栏中找到可见性选项。
  • 点击它。
  • 选择密码保护并输入您想要用来解锁帖子的密码。

这是它在新的 WordPress 块编辑器中的样子:

Where to find Visibility options in block editor

Where to find Visibility options in the block editor

这是它在老式 WordPress 编辑器中的样子:

Where to find WordPress' Visibility settings

Where to find WordPress’ Visibility settings

发布或更新内容后,访问者将被提示输入密码,然后才能查看帖子。此外,WordPress 将在文章标题前加上“受保护”字样:

How the built-in WordPress password protection works

How the built-in WordPress password protection works

这种方法的一个很酷的地方是,你可以让人们通过输入一次密码来解锁多个帖子。要设置这个,你需要做的就是在多个帖子中重复使用同一个密码。很简单,对吧?

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

一旦访问者输入一次密码,就会自动解锁所有使用相同密码的内容。但是,如果另一个内容使用不同的密码,那么访问者仍然需要输入唯一的密码。

最后,为了让您了解这种类型的密码保护如何适用于不同的内容,下面是它如何适用于 WooCommerce 产品。您可以看到可见性控件正好出现在同一个位置:

How to password protect WooCommerce product

How to password protect WooCommerce product

如何用密码保护一类 WordPress 文章

除了用密码保护个别内容,你还可以用密码保护整个类别。

这种方法的好处是,它使您更容易为多个内容添加密码保护,而且对您的访问者来说也更简单,因为他们只需要输入一次密码就可以解锁该类别中的所有内容。

要设置这个功能,你需要插件的帮助。我们建议两种选择:

  1. 密码保护类别,Barn2 Media 的高级插件
  2. 访问类别密码,WordPress.org 的一个免费插件

如何使用受密码保护的类别

密码保护类别的工作原理基本上是将你在上一节看到的相同的“密码保护”功能添加到你的类别中。

安装并激活插件后,你可以进入文章→类别并编辑你想添加密码的类别。在底部,你现在会看到同样的可见性框,你曾经用密码保护个别内容。

选择密码保护并输入您想要的密码。

一个很好的事情是,插件允许你添加多个密码,每个密码将解锁类别。这使您可以为每个人/组提供一个唯一的密码,以便将来需要时更容易删除访问权限:

How to add a password to a category

How to add a password to a category

保存更改后,当访问者试图访问受密码保护类别中的帖子时,系统会提示他们输入密码:

The password form to unlock the category

The password form to unlock the category

通过进入设置→受保护类别,您还可以访问一些额外的设置,让您控制插件的功能。您可以:

厌倦了体验你的 WordPress 网站的问题?通过 Kinsta 获得最好、最快的主机支持!查看我们的计划

  • 设置密码的到期时间(例如,在访问者需要再次输入密码之前内容被解锁多长时间)。
  • 选择是否仍然在站点的公共区域显示受保护类别中的内容,或者是否完全隐藏这些内容,直到有人输入密码。
  • 定制您在上面看到的登录表单。

Password Protected Categories settings

Password Protected Categories settings

如果你正在运行一个 WooCommerce 商店,这个开发者也有一个类似的插件,叫做 T2 woo commerce 保护类别。

如何使用访问类别密码

访问类别密码在 WordPress.org 免费提供。一旦你安装并激活它,你可以进入设置→访问类别密码

在那里,您可以:

  • 选择要使用的密码。
  • 选择需要密码保护的类别。
  • 将某些用户角色列入白名单,这样他们无需输入密码就可以看到隐藏的类别。
  • 选择是公开摘录还是隐藏所有内容。
  • 自定义登录页面/密码保护通知。

Access Category Password settings

Access Category Password settings

保存更改后,访问者在尝试访问受限类别中的任何内容时,将需要输入密码。

虽然这个插件是免费的,但有一个缺点是你只能输入一个密码,你不得不对所有你想用密码保护的类别使用同一个密码。

如果你想为每个类别使用不同的密码,你最好使用上面的密码保护类别插件。

这里的另一个区别是,即使在用户输入密码之前,访问保护类别仍然显示文章标题,而上面的密码保护类别插件隐藏了标题:

Access Category Password form

Access Category Password form

如何用密码保护 WordPress 文章的一部分

最后,让我们看看如何用密码保护一篇公开的 WordPress 文章的一部分的最具体的方法。

要设置这个功能,你可以使用 WordPress.org 的免费 Passster 插件。

一旦你安装并激活了插件,进入设置→密码生成你将用来限制你的内容的短码。

输入您想要的密码,并选择生成密码:

Passster shortcode generator

Passster shortcode generator

然后,保存您的更改并复制 Passster 给您的短代码:

Generate the Passster shortcode

Copy the Passster shortcode

然后,将这个短代码添加到您想要使用密码保护的内容中。此外,编辑“您的内容在此处”占位符,并将其替换为您想要密码保护的内容:

Example of the Passster shortcode

Example of the Passster shortcode

发布帖子后,下面是默认密码保护表单的一个示例:

The Passster login form

The Passster login form

要定制这个表单的外观,您可以使用 WordPress 定制器(外观→定制)。

在 WordPress 定制器中查找 Passster 部分。在那里,您可以自定义表单的文本和颜色:

The Passster style options in the WordPress Customizer

The Passster style options in the WordPress Customizer

Need to password protect an entire blog post or just a section of it? Maybe a single category with all content in it? Check our latest guide on how to do it... it's super easy! 🔐💪Click to Tweet

摘要

无论你想限制访问你的整个网站,部分内容,还是介于两者之间,你都有很多选择来用密码保护 WordPress。

选择最适合你的方法,遵循我们教程中的步骤,享受你新的 WordPress 密码保护功能。

关于如何用密码保护一个 WordPress 站点,还有什么问题吗?请留下您的评论,我们会尽力帮助您。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

PayPal 替代品:2022 年你应该考虑的 22 种支付处理器

原文:https://kinsta.com/blog/paypal-alternative/

对于一些企业来说,PayPal 没有提供他们需要的支付处理器。这款支付应用收取高额退款费用,而且没有提供许多企业所寻求的卖家保护水平。

更糟糕的是,它没有提供最顺畅的支付体验,这可能会分散试图在你的网站上购物的消费者的注意力。

令人欣慰的是,市场上有大量的 PayPal 替代品,企业可以使用它们高效、安全地发送和接收付款。

但是哪一个适合你的业务呢?

在这篇文章中,我们将概述 PayPal 的几个主要选择,你应该看一看,并开始使用它们来接受渴望在你的网站上下单的购物者的付款。

哪种支付处理器适合我的企业?

在当今社会,消费者正在寻求无摩擦的、立竿见影的支付方式。

支付处理商为传统的在线交易引入了一种新的现代方法,使购买更加容易和方便。

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

支付处理器的基本特征

在我们深入了解每个网关的细节之前,了解大多数支付处理器提供的基本功能是很重要的。

大多数支付处理商都提供:

  • 在线支付门户或链接
  • 直接存款银行转账
  • 移动支付兼容性
  • 货币兑换
  • 商户账户仪表板

当你评估支付平台选项时,考虑一下什么对你的网站最重要。市场上有这么多,其中许多都提供重叠的功能。

通过了解它们的不同之处,您将能够评估和选择适合您业务的支付提供商。

PayPal 最大的竞争对手是什么?

据该公司称,实物现金是贝宝最大的竞争对手。PayPal 试图让消费者进行更多的无现金在线交易。

其他拥有巨大市场份额的公司,如 Square、Shopify Payments 和 Apple Pay,也可以被视为直接竞争对手。

然而,与现金不同的是,PayPal 和其他支付网关使得在流行的电子商务网站和在线市场如易贝上进行交易变得容易。

不使用 Paypal,你能在易贝上销售吗?

许多消费者认为 PayPal 必须在易贝开设店面,但事实并非如此。易贝也接受信用卡和借记卡。

Paypal 是 20 世纪 90 年代末易贝流行的支付方式,但自那以后,该网站允许消费者使用更多选择。

易贝

“当你在易贝上列出一件商品时,你就选择了买家付款的方式。在大多数类别中,你必须接受 PayPal 或信用卡和借记卡。”

现在,回到正题:贝宝有什么好的替代品吗?

PayPal is popular... but that doesn't necessarily mean it's the right choice for your business. 💳 Find options with tighter security and lower fees in this roundup ⬇️Click to Tweet

2022 年 22 个最佳 PayPal 替代品

繁重的工作和研究已经为你完成了。我们已经编制了一份清单,列出了 PayPal 的主要功能,最重要的是,它们的费用。浏览所有内容,或单击下面的链接跳转到您想要查看的特定内容:

1.不要动

PayPal Alternative FastSpring

FastSpring

FastSpring 是一个电子商务支付解决方案,通过专注于本地化的支付处理来宣传其提高转化率的能力。

FastSpring 目前通过 15 种不同语言的流行支付方式接受 20 多种不同的货币。结账语言会根据购物者的位置自动更新。

此外,FastSpring 是一家PCI 1 级服务提供商,这是目前最高的安全等级。

FastSpring 最重要的特性之一是它能够更高效地处理支付。与一些支付处理器不同,FastSpring 会自动将交易重新路由到其他参与银行,并在第一家银行失败时再次尝试交易。

FastSpring 提供固定费用模式和可变费用模式,前者每笔交易收取 8.9%的固定费用,后者根据总交易的 5.9%+0.95 美元收取费用。

2.亚马逊支付

Amazon Pay

Amazon Pay

Amazon Pay 通过支持亚马逊账户持有人在您的网站上无缝结账,简化了支付流程。通过 Amazon Pay 处理的付款被授予“全程担保”,确保您购买的商品的最佳交付和条件。

由于 Amazon Pay 要求消费者拥有一个 Amazon 账户,因此顾客在购买前需要经过验证。这个过程,连同它的欺诈检测服务,有助于减少你在结账时遇到的问题。

Amazon Pay 以其一键订购界面而闻名,这使其易用性成为竞争优势。

亚马逊支付对每笔美国国内交易收取 2.9%+0.30 美元的费用。

3.种类

PayPal Alternative - Stripe

Stripe

Stripe 认为自己是“互联网的支付基础设施”各种规模的公司都使用 Stripe 来轻松管理交易和支付。 Stripe 的爆炸性收入和不断增长的市场份额使其位居第二,仅次于 Paypal。

Stripe 为企业主提供了很大的灵活性。他们可以将 Stripe 集成到他们的店面中,并通过仅向他们的站点添加一个集成来接受全球交易。一些竞争对手要求在您希望开展业务的每个国家进行多项整合。所有处理都在本地进行,为了安全起见,卡号和密钥被加密并分开存储。

Stripe 是支付流程各个方面的综合平台。企业主可以定制客户支付体验,评估优化机会,审查欺诈警报,协调供应商,并执行报告。

Stripe 提供多种集成,包括与 QuickBooks 和 NetSuite 的集成,将您的支付方式直接连接到您的会计分类账。

Stripe 每笔交易收取 2.9% + $0.30 的费用。请务必阅读我们的 Stripe 与 PayPal 的深度对比

4.Google Pay

Google Pay

Google Pay

Google Pay 是一种非接触式支付方式,被全球数百万家商店使用。处理器为顾客使用一个加密的号码来代替他们的信用卡号码。这增加了的安全性,并开辟了一些新的交易方式。

消费者可以通过电子邮件地址或电话号码来收发钱款。企业可以使用 Google Pay 作为顾客在网上商店结账的另一种方式。

此外,企业可以利用 Google Pay 与 Passes 应用程序的集成。这使他们能够直接在套票应用程序中推广忠诚度计划、优惠和礼品卡。他们还可以通过基于位置的通知来锁定消费者。

Google Pay 不收取任何商户费用,但收取标准的信用卡费用。

5. WePay

WePay

WePay

WePay 为企业处理支付,并与他们已经在使用的许多软件程序集成。大通银行在 2017 年收购了 WePay。

WePay 为企业提供当日存款,并能够将支付信息与您当前正在运行的其他报告相集成。

WePay 可以很容易地添加到你的网站上,只需要几行代码。此外,企业可以使用其物理终端和移动读卡器进行当面支付。

WePay 为您的员工工资单提供业务保障,包括损失保护和承包商管理功能。

WePay 收取每笔交易 2.9% + $0.30 的费用。

6.Apple Pay

Apple Pay

Apple Pay

Apple Pay 使企业能够从拥有苹果设备的顾客那里收取非现金付款。除了使用 Apple Pay 购买商品,用户还可以发送和接收资金,这使其成为一种几乎无处不在的交易方式。

Apple Pay 对用户来说很直观。他们只需点击一下就可以在线支付,或者在你的商店用他们的 iPhone 或 Apple watch 支付。它与 Mac 上的触控 ID 兼容,增加了他们购买的便利性和效率。

企业可以只通过 Apple Pay 进行交易,也可以与其他支付方式结合使用。此外,商家可以通过 Apple Pay 直接使用和填充他们的奖励计划。

Apple Pay 兼容大多数发卡机构和支付提供商。没有费用转嫁给企业。

7.2 结账

PayPal Alternative 2Checkout

2Checkout

2Checkout 是一个“货币化平台”,可以更轻松地发送和接收来自全球客户、供应商和销售商的付款。

2Checkout 提供订阅计费、购物车模板、自定义结账字段,以及与主要电子商务平台Shopify 和替代平台如 BigCommerce 的集成。

该处理器还提供财务和税务支持,包括管理美国销售税的能力。它甚至可以为你计算和支付税款。

凭借其国际处理能力,2Checkout 可提供指导,确保您遵守各个国家的金融法规和法律。

2 每笔交易的结账费用为 3.5% + $0.35。

8.Authorize.Net

PayPal Alternative Authorize Net

Authorize.Net

Authorize.Net处理在线、移动和店内支付,确保每位顾客都能顺利购物。Visa 在 2010 年收购了 Authorize.Net。

Authorize.Net 关注消费者交易的便利性。它提供了一个简单、可定制的“立即购买”按钮,用于一次性付款。

Authorize.Net 接受多种支付方式,包括借记卡、信用卡和数字支付。

它提供了欺诈过滤器,允许企业设置某些规则(例如,限制交易数量、送货地址与账单地址不一致等。)这将标记一个订单以供审查。

此外,它还提供可定制的发票模板,带有自动提醒功能,可在特定时间或特定事件后触发。

Authorize.Net 每月收费 25 美元+ 2.9% +每笔交易 0.30 美元。

9.转移方式

PayPal Alternative TransferWise

TransferWise

TransferWise 是一项支付服务,它以提供跨国货币的真实汇率而自豪。

TransferWise 的核心竞争优势是它能够计算真实的当前汇率。在大多数情况下,这比 PayPal 提供的服务便宜 19 倍。

TransferWise 还提供了一些功能,包括商户自动支付/发送发票以及收取免费款项的能力。

该处理器集成了 Xero 会计软件,便于记账,以及其他一些软件。

TransferWise for Business 收取 31 美元的设置费+1.40 美元的交易费+货币兑换费

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

10.支付线

PayPal Alternative Payline

Payline

Payline 为面对面、在线和移动支付提供灵活的支付解决方案。

Payline 最受欢迎的一些功能包括定制发票、重复计费功能、ACH 支付和定制支付页面。

它集成了一些销售点(POS)系统、购物车、QuickBooks 和读卡器。Payline 不收取任何取消费用,其交易费用低于 PayPal。

Payline 对其虚拟终端收取 10 美元/月+ 2.25%的交易费。

11.平方

PayPal Alternative Square

Square

Square 是一个支付处理器,使企业能够通过其安全网关接受多种形式的支付。

Square 使企业能够自动向客户收费,并可以轻松提取现有客户的存储信息以加速购买。

Square 有硬件选项可用于无缝的面对面交易。消费者通过网上交易、刷卡或点击方形阅读器,或者使用键入的支付设备来结账。

Square 对每笔卡交易收取 2.65%的费用,对每笔在线交易收取 2.9% + $0.30 的费用。请务必查看我们的条纹对比方形对比

12.Intuit 的 QuickBooks 支付

Quickbooks

Quickbooks

QuickBooks 支付促进您和您的供应商或客户之间的交易,以确保您得到应得的报酬。如果你已经在用 QuickBooks 记账,并且主要是开发票,这是一个不错的选择。

QuickBooks Payments 接受信用卡、借记卡和 ACH 银行转账。

支付可以通过手机和读卡器在线处理。一旦钱打到你的银行账户,你几乎可以立即花掉它或者从自动取款机里取出来。

QuickBooks 支付收取每笔交易 2.4%+0.25 美元的费用。

13.德沃拉

Dwolla

Dwolla

Dwolla 是一款完全可定制的支付处理器,可以轻松集成到您当前的店面和业务中。

Dwolla 认为自己是“银行不可知论者”,这意味着它能够与您使用的任何银行合作。

Dwolla 使用令牌化(一种加密)来消除数据问题,并为多个来源提供批量支付选项。

注册 Dwolla 的客户可以控制他们提供多少信息,这将他们分为不同的客户类型,以确保安全性。

Dwolla 每笔交易收取 0.5%的费用(最低。最多 5 个。5 美元)或 2,000 美元/月的固定月定价。

14.购物支付

Shopify Payments - PayPal alternative

Shopify Payments

Shopify Payments 是全球领先电子商务平台之一的支付处理网关。

Shopify 支付注重简单。该公司的定位说明了一切,“从设置到销售,一键完成。”

Shopify Payments 支持所有常用的支付方式和当地货币。该平台受到数十万企业的信任,并提供 3D 安全结账。

如果你已经使用 Shopify 作为你的电子商务平台,你可以在一个屋檐下跟踪订单和处理支付。

Shopify 支付收取每月 29 美元+ 2.9% +每笔交易 0.30 美元的费用。

与宕机和 WordPress 问题做斗争?Kinsta 是一款考虑到性能和安全性的托管解决方案!查看我们的计划

15.阿德延

Adyen

Adyen

Adyen 是一个支付平台,重视增长、收入和与商家的真正合作关系。Adyen 为世界各地的客户提供语言和货币识别,让他们可以轻松地从您的商店购物。

此外,Adyen 提供独特的客户体验,能够在结账时识别常客。

通过购买数据,Adyen 创建了购物者档案,以揭示关于您的客户的丰富见解。

Adyen 每笔交易收费 3.95% + $0.12。

16. BlueSnap

PayPal Alternative BlueSnap

BlueSnap

BlueSnap 为领先企业提供全球加工服务,如 Monday.com 的,即蓝战士、OutBrain、Wheels Up 等。

BlueSnap 使用“智能支付路由”来提高交易的成功率。这是通过与 30 多家接受本地交易的全球银行合作实现的。

BlueSnap 接受 100 多种购物者货币,并以 17 多种货币结算。此外,该公司被评为最高安全级别。

该处理器集成了 QuickBooks、Xero 和 Salesforce,因此您可以自动处理应收账款和其他业务交易。

BlueSnap 每笔交易收取 2.9% + $0.30 的费用。

17.无卡

GoCardless

GoCardless

想象一下没有有形信用卡的生活,它的支付处理器是为经常性和一次性支付而设计的。GoCardless 非常适合直接从你的账户中扣款的循环交易

该处理器支持订阅和发票支付,是其与 Zuora 和 Xero 集成的最佳选择。

通过 GoCardless 自己的集成,您可以在 30 多个国家收款。

他们也很可靠。他们的成功+支付重试功能计算出交易最有可能成功的日期和时间。这平均降低了 15%的支付失败率。

gocradless 每笔交易收取 1-2%+0.25 美元的费用。

18.Thryv

PayPal Alternative Thryv

Thryv

Thryv 通过无缝的交易体验和快速的支付处理,帮助小型企业更快获得支付。超过 350,000 家小企业使用它。

使用 Thryv,您可以发送交互式评估、发票和提醒。你甚至可以在智能手机上扫描信用卡。

Thryv 提供安全的支付处理。一个缺点是它没有很多集成。相反,Thryv 依靠 Zapier 来连接其他软件。它有一些其他产品可以与其支付处理器一起工作,包括营销和客户审查平台。

Thryv 每笔交易收费 2.6% + $0.30。

19.简单支付

PaySimple - PayPal Alternative

PaySimple

PaySimple 不像其他一些支付处理商那样有那么多花哨的功能,但它仍然能以相对较低的交易费用完成工作。

使用 PaySimple,您可以通过在线支付表格收集注册信息,设置重复计费,并发送发票。

PaySimple 有现金流管理报告来跟踪收到的付款。对于那些你还没有收到的,你可以设置自动通知,自动触发,这样你就不用去追发票了。

PaySimple 收取每笔交易 2.49%的费用+月费。

20.奥帕约(旧称萨基佩)

Opayo

Opayo

Opayo 原名 Sage Pay,是一家在线支付处理公司,由其母公司 Elavon 运营。Opayo 为企业提供发票、面对面、在线和电话支付。

该处理器与 Elavon Financial Services DAC 会计软件相集成,并配备了欺诈甄别工具来确保交易安全

Opayo 让您的客户只需点击一次结账即可轻松购买发票和在线支付。

Opayo 每月收费 35 美元/月。

21.行贿者

PayPal Alternative Payoneer

Payoneer

Payoneer 关注发送和接收全球支付的便利性。他们的口号是“全球增长的通行证”

Payoneer 允许您通过即时网络内支付免费向供应商付款。一次点击和两个小时后,你的钱就会被转移。

Payoneer 接受多种货币以提供国际支付选项。此外,它还有一个亚马逊商店管理器功能,可以汇编你在多个店面的所有亚马逊交易数据,让你很容易看到你有多少收入

付款人对信用卡收取 3%的费用,或对美元 ACH 银行借记收取 1%的费用。

22.拴住

Bolt

Bolt

借助与领先平台和信用卡的无数集成,Bolt 可与您的业务无缝协作。它通过微授权和人工审查欺诈保护来增强您的安全性。

此外,您还可以获得对欺诈退款的 100%保障,使贵公司的交易更加安全。

Bolt 领先于潮流,接受各种支付方式——从数字钱包到分期付款。

Bolt 收取的月费起价为 16 美元/月。

选择合适的 PayPal 替代品

正如你所看到的,有大量的贝宝替代品可供选择。虽然每个平台都有优点和缺点,但有几个是突出的。

国际支付的最佳 PayPal 选择

如果你希望进行国际交易,不妨再考虑一下 Stripe、2Checkout 和 BlueSnap。

安全性的最佳 PayPal 替代方案

大多数平台都通过了基本的安全测试。根据我们的研究,FastSpring、Shopify Payments 和 Bolt 因其安全措施而脱颖而出。

低费用的最佳 PayPal 替代方案

Payline 宣称其收费结构为 2.25%,低于 2.9%的平均水平。根据你的订单量,这可能会在假期发生巨大变化,你也可以看看像 FastSpring 这样提供固定价格的支付平台。

Want better protection and lower fees from your payment processor? 💳 This list of #PayPal alternatives has you covered 💰Click to Tweet

摘要

贝宝是最著名的支付网关吗?我们会说是的。是最好的吗?可能不会,因为商业世界中有如此多的用例及需求,一个单一的工具很难解决所有的问题。幸运的是,有可靠的 PayPal 替代品可供选择。

如果你对它不满意,现在是时候开始考虑从 PayPal 转换到一个不同的支付应用程序,它可能会更好地为你的在线业务工作。这样做,你可能会有更好的费用,更多的功能,更安全的交易与您的客户。

一旦你完成了转变,一定要回到这里,在评论区分享你的经历!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

如何为你的 WordPress 站点创建一个 PayPal 捐赠按钮

原文:https://kinsta.com/blog/paypal-donate-button-wordpress/

从非营利组织到教堂,从政治运动到需要早期支持的博客,几种情况下都有理由要求捐款。有几个 WordPress 插件可以用来收集捐款,但通常你需要的只是一个简单的 PayPal 捐赠按钮。

你可以把这个按钮贴在你网站的任何地方,无论是边栏、页脚、主页还是你的博客。它显示了一个按钮,网站访问者可以点击它通过 PayPal 系统进行捐款。用户会在一段时间内离开你的网站。一旦进入 PayPal 页面,用户可以选择用 PayPal 账户或信用卡捐款。至于定价:

  • 贝宝捐赠按钮的实现是完全免费的。
  • 有 2.9% + $0.30 的交易费。
  • 没有月费,贡献者不收取任何费用。
  • 亲自收集捐款(用 iPad 和 swiper)需要支付 2.7%的交易费。

两种 PayPal 捐赠按钮方法

有两种创建 PayPal 按钮的方法。第一种选择是浏览 PayPal 官方网站,并从网站上选择一个预制的捐赠按钮。然后,你可以连接你的贝宝账户,并在你的网站上任何你想要的地方嵌入按钮。

创建按钮的第二种方法是使用 WordPress 插件。这两种方法都可以,所以我们在下面列出了每种方法的流程。以及一些电子商务解决方案的附加插件。

选项 1:通过 PayPal 网站为 WordPress 提供 PayPal 捐赠按钮

第一步

导航至 PayPal 筹款页面。此网页列出了您在网站上添加 PayPal 捐赠按钮时的所有费率和功能。

没有 PayPal 帐户

如果您还没有 PayPal 帐户,请点击“立即开始”按钮(否则,跳过下面的)。

PayPal Get Started Today

PayPal Get Started Today

选择个人帐户或企业帐户。单击下一步。

Choose PayPal account

Choose PayPal account

键入您的个人信息,如名字、姓氏和电子邮件地址。创建密码,然后选择“下一步”按钮继续。

PayPal sign up form

PayPal sign up form

填写您的地址和电话号码,接受条款和条件,然后选择同意并创建帐户按钮。

PayPal create account

PayPal create account

已经拥有 PayPal 帐户

如果你已经有一个贝宝账户,点击链接“了解如何创建一个捐款按钮。”

Learn About Creating a Donation Button

Learn About Creating a Donation Button

选择创建按钮链接。

PayPal create button

PayPal create button

第二步

在“创建 PayPal 支付按钮”页面,选择名为“捐赠”的按钮类型

Choose Donations button type

Choose Donations button type

第三步

必须填写“组织名称”字段。在下面,你可以自定义你的 PayPal 捐赠按钮对网站访问者的外观。这个区域有选择使用小或大按钮,显示信用卡标志,甚至上传你自己的按钮图像。

PayPal donate button details

PayPal donate button details

选择您愿意接受的货币类型。然后,选择您接受捐款的方式。一种方法是让用户输入他们想捐多少钱。另一种方法是显示一个固定的数额,这可能会导致更多的捐赠,因为你给了人们一个建议的数字。

在这一步,你还应该检查你是否愿意使用你的安全商家帐户 ID 或你的主要电子邮件地址来接受付款。如果您想隐藏您的电子邮件地址,我们建议您使用您的商家帐户 ID。

PayPal donate button merchant account ID

PayPal donate button merchant account ID

第四步

在 PayPal 的“第 2 步”模块中,确保您勾选了 PayPal 框中的“保存”按钮。这可以保护您的按钮免受欺诈性收费,并保存自定义按钮以备后用。

Save button at PayPal

Save button at PayPal

步骤 5(可选)

PayPal 捐赠按钮正常工作不需要这一步。但是,您可能需要针对特定原因调整一些设置。

以下是选项:

  1. 允许贡献者向您发送消息—如果捐款可以用于您组织中的某些任务或项目,这将非常方便。
  2. 询问捐款人的邮寄地址——如果你打算寄送礼物或感谢捐款的便条,邮寄地址会很有用。
  3. 当投稿人取消或完成捐赠时,将他们发送到外部 URL-这意味着他们将被发送到您网站上的某个地方,而不是默认的 PayPal 完成页面。如果你的网站上有一个特别的感谢页面或者一个可下载的礼物,这个功能会很好。

在你设置好你的高级功能(或者跳过它们)后,点击底部的创建按钮。

PayPal create button

PayPal create button

第六步

下一页揭示了你需要复制并粘贴到你的 WordPress 站点的网站代码。单击 Select Code 按钮突出显示整个代码块。然后,用鼠标右键单击并选择 copy 来复制代码。另一种方法是使用键盘快捷键(Windows 为 CTRL + C,Mac 为 Command + C)。

Copy PayPal donate button embed code

Copy PayPal donate button embed code

第七步

打开你的 WordPress 仪表盘。PayPal 捐赠按钮的伟大之处在于,你可以将代码粘贴到页面、帖子或小部件中。对于本例,我们将带您完成将其添加到页面的过程。

因此,请转到页面→添加新页面。如果你已经有了一个捐赠页面,只需进入所有页面,找到合适的页面。

Pages option from WordPress Dashboard with Add New selected

创建一个标题,并填写您希望在页面上显示的任何描述。最重要的部分是在复制按钮代码时打开“文本编辑器”。可视化编辑器无法添加代码。

WordPress text editor

WordPress text editor

将代码粘贴到文本编辑器中。

Paste code into text editor

Paste code into the text editor

如果您发布或预览该页面,现在您会在网站前端看到 PayPal 捐赠按钮。

Preview PayPal donate button on WordPress site

Preview PayPal donate button on WordPress site

步骤 8(可选)

你也可以在一个小部件中添加你的 PayPal 按钮。小工具是较小的模块,放在你网站的页脚、侧边栏或页眉中。当你想在多个页面上显示 PayPal 捐赠按钮时,它们也很有用(不需要反复复制和粘贴代码)。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

转到外观→小组件。

WordPress widgets

WordPress widgets

在小部件列表中找到自定义 HTML 小部件。将该模块拖到边栏、页脚或页眉区域。你对小部件位置的选择取决于你的 WordPress 主题,但是大多数时候你至少会得到侧边栏和页脚。

Custom HTML widget

Custom HTML widget

一旦小部件位于正确的位置(在本例中是普通页面侧边栏),单击小部件上的向下箭头图标。

Customize widget

Customize widget

填写标题,谈论小工具的全部内容。然后,转到内容区域,粘贴您之前复制的 PayPal 按钮的代码。确保您点击了保存按钮以完成该过程,并在您的网站上查看。

Paste PayPal embed code into widget

Paste PayPal embed code into widget

现在,当你进入你网站的任何一页,侧边栏都会出现。如果您要将小部件放在页脚或页眉中,这是一样的。

PayPal Donate button on a widget

PayPal Donate button on a widget

如果你在某些页面上没有看到 PayPal 按钮小工具,很可能是因为你在那个页面或帖子上没有侧边栏。因此,你必须在你的 WordPress 仪表盘中找到页面,向下滚动到侧边栏的位置区域。

选择右或左并点击发布按钮。这可能因 WordPress 主题而异。

Position of WordPress sidebar

The position of the WordPress sidebar

选项 2:带有 WordPress 插件的 PayPal 捐赠按钮

创建 PayPal 捐赠按钮的最佳方式是使用上面的方法。这样做的原因是,你不必担心更新额外的插件或它可能会影响性能。话虽如此,我们理解有些人喜欢使用插件,或者他们甚至觉得代码令人生畏。如果是这样的话,一个轻量级的 PayPal 按钮插件就可以做到。

第一步

有几个 PayPal 捐赠插件,但其中一个更有名、更容易管理的插件叫做 PayPal 捐赠。在撰写本文时,它已经有超过 50,000 个活跃安装,并获得了令人印象深刻的 5 星评级。

PayPal Donations WordPress plugin

PayPal Donations WordPress plugin

要么从 WordPress 知识库下载插件,要么在你的 WordPress 仪表盘的“添加新插件”下搜索插件。输入“PayPal 捐赠”进行搜索选择立即安装按钮。确保它是正确的插件(下面有徽标)。其他一些插件看起来也差不多。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

Install PayPal Donations plugin

Install PayPal Donations plugin

点击激活按钮。

Activate PayPal Donations plugin

Activate PayPal Donations plugin

第二步

现在是时候定制了。在你的 WordPress 仪表盘上进入设置→ PayPal 捐赠。

PayPal Donations plugin settings

PayPal Donations plugin settings

在常规选项卡下,填写您的 PayPal 帐户电子邮件。这是为使按钮工作而必须完成的唯一字段。除此之外,您还可以选择货币、页面样式和返回页面。

PayPal donations plugin PayPal account

PayPal donations plugin PayPal account

Defaults 部分也是可选的,但是许多组织喜欢填充它以获得更好的用户体验。例如,你可能想知道人们可以捐赠的具体数额。正如前面提到的方法,这给用户一个概念,多少是合适的捐款。你也可以解释捐赠的目的,并附上参考资料。

这个页面的最后一个区域询问你希望你的按钮是什么样子的。三个按钮有不同的尺寸。一个选项包括信用卡图标。您也可以输入以前设计的按钮的 URL(如果有的话)。请确保在离开此页面之前单击“保存”按钮。

Choose a Donate button

Choose a Donate button

第三步

贝宝捐赠按钮可以通过这个插件添加为一个小部件或短代码。首先,我们将解释如何在你的网站上将按钮作为一个小部件插入。转到 WordPress 仪表盘左侧的设置→小部件。

WordPress widgets

WordPress widgets

在主题小部件列表中找到 PayPal 捐赠小部件。您可能需要向下滚动,这取决于您有多少个小部件选项。左键单击并按住鼠标,将 PayPal 捐赠窗口小部件拖动到侧边栏、页脚或页眉模块。

PayPal Donations plugin widget

PayPal Donations plugin widget

第四步

现在是定制小部件的时候了。在这个例子中,小部件被放在博客侧边栏区域。你显然可以选择哪个区域最适合你的网站。小部件进入侧边栏后,会出现几个字段供您填写。

随意输入标题和文字,解释人们应该用这个按钮做什么,或者简单地感谢他们。还有一些其他领域,如你的事业的目的和参考领域。填写完所有内容后,单击保存按钮。

Customize PayPal Donations widget

Customize PayPal Donations widget

由于本教程将小部件放在了博客文章的侧边栏中,因此您可以转到已发布的博客文章来查看侧边栏的运行情况。在这种情况下,我们现在可以看到右边栏有 PayPal 捐赠按钮、信用卡图标和我们输入的文本。这个小部件现在出现在网站上发布的每一篇博客文章中。

PayPal donate button in widget on sidebar

PayPal donate button in widget on sidebar

第五步

用这个 WordPress 插件创建 PayPal 捐赠按钮的另一种方法是利用一个短代码。短代码是一小段代码,可以放在你网站的任何地方。首先,复制以下短代码:

[paypal-donation]

找到一个有捐赠按钮的页面或帖子。有了短代码,就不需要打开文本编辑器了。可视化编辑器非常好。将短代码粘贴到编辑器中。

PayPal Donations shortcode

PayPal Donations shortcode

当你点击预览或发布按钮后,你就可以进入网站的前端,看看这个按钮是什么样子的。

Preview PayPal donate button

Preview PayPal donate button

通过 PayPal 捐赠电子商务解决方案

如果你使用的是 WooCommerce 或 Easy Digital Downloads 等电子商务解决方案,你可能也想看看下面这些插件,因为它们可以帮助你将捐款整合到结账流程中。

虽然这不在结帐过程中,但我们总是建议看一看 GiveWP 插件。它有一个贝宝专业插件。

如果你更喜欢 Stripe 而不是 PayPal,你可以看看我们的另一个指南:如何在 WordPress 中添加一个 Stripe 捐赠按钮

摘要

你很可能会定制页面和帖子,让它们包含更多内容,并解释捐款的目的。然而,这些方法是创建 PayPal 捐赠按钮的最佳选择,没有任何问题。你还会注意到 PayPal 捐赠按钮有几个定制工具。因此,您可能希望在用户捐款后重定向用户,或者您可能需要从捐款人那里获取额外的信息。

这就是如何在 WordPress 中创建一个 PayPal 捐赠按钮!


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

性能 API 简介

原文:https://kinsta.com/blog/performance-api/

Performance API 测量真实用户设备和网络连接上的实时 web 应用程序的响应性。它可以帮助您识别客户端和服务器端代码中的瓶颈:

  • 用户计时:自定义测量客户端 JavaScript 函数性能
  • 绘制时间:浏览器渲染指标
  • 资源计时:加载性能资产和 Ajax 调用
  • 导航时间:页面加载指标,包括重定向、DNS 查找、DOM 就绪等

API 解决了与典型性能评估相关的几个问题:

  1. 开发人员经常在连接到高速网络的高端电脑上测试应用程序。DevTools 可以模拟较慢的设备,但当大多数客户端运行的是连接到机场 WiFi 的两年前的手机时,它不会总是突出现实世界的问题。
  2. 第三方选项如谷歌分析经常被屏蔽,导致结果和假设失真。在某些国家,您可能还会遇到隐私问题。
  3. 性能 API 可以比 Date() 等方法更准确地度量各种度量。

想了解有关使用性能 API 的更多信息吗?👀从这里开始...🚀 点击发布推文
以下章节描述了您可以使用性能 API 的方式。建议了解一些 JavaScript 和页面加载指标的知识。

性能 API 可用性

大多数现代浏览器都支持性能 API——包括 IE10 和 IE11(甚至 IE9 也有有限的支持)。您可以使用以下方法检测 API 的存在:

Kinsta 把我宠坏了,所以我现在要求每个供应商都提供这样的服务。我们还试图通过我们的 SaaS 工具支持达到这一水平。

Suganthan Mohanadasan from @Suganthanmn

View plans

if ('performance' in window) {
  // use Performance API
}

完全填充 API 是不可能的,所以要小心遗漏的浏览器。如果 90%的用户都在愉快地使用 Internet Explorer 8 进行浏览,那么您只能测量 10%的客户端拥有更强大的应用程序。

该 API 可以在 Web Workers 中使用,它提供了一种在后台线程中执行复杂计算而不中断浏览器操作的方法。

大多数 API 方法可以在服务器端 Node.js 中使用标准的 perf_hooks 模块:

// Node.js performance
import { performance } from 'node:perf_hooks';
// or in Common JS: const { performance } = require('node:perf_hooks');

console.log( performance.now() );

Deno 提供了标准的性能 API :

// Deno performance
console.log( performance.now() );

您将需要使用--allow-hrtime权限运行脚本来启用高分辨率时间测量:

deno run --allow-hrtime index.js

服务器端性能通常更容易评估和管理,因为它取决于负载、CPU、RAM、硬盘和云服务限制。硬件升级或过程管理选项,如 PM2集群Kubernetes 可能比重构代码更有效。

出于这个原因,下面几节集中讨论客户端性能。

自定义性能测量

Performance API 可以用来计时应用程序函数的执行速度。您可能使用过或遇到过使用 Date() 的计时功能:

const timeStart = new Date();
runMyCode();
const timeTaken = new Date() - timeStart;

console.log(`runMyCode() executed in ${ timeTaken }ms`);

性能 API 提供了两个主要好处:

  1. 更好的准确性: Date()测量到最接近的毫秒,但是性能 API 可以测量毫秒的分数(取决于浏览器)。
  2. 更好的可靠性:用户或操作系统可以更改系统时间,因此基于Date()的指标不会总是准确的。这意味着当时钟向前移动时,你的功能会显得特别慢!

Date()等价于 performance.now() ,它返回一个高分辨率的时间戳,当负责创建文档的进程开始时(页面已经加载),该时间戳被设置为零:

const timeStart = performance.now();
runMyCode();
const timeTaken = performance.now() - timeStart;

console.log(`runMyCode() executed in ${ timeTaken }ms`);

非标准的 performance.timeOrigin 属性也可以返回从 1970 年 1 月 1 日开始的时间戳,尽管这在 IE 和 Deno 中不可用。

进行多次测量时变得不切实际。性能 API 提供了一个缓冲区,您可以通过将标签名称传递给 performance.mark() 来记录事件,以供以后分析:

performance.mark('start:app');
performance.mark('start:init');

init(); // run initialization functions

performance.mark('end:init');
performance.mark('start:funcX');

funcX(); // run another function

performance.mark('end:funcX');
performance.mark('end:app');

性能缓冲区中所有标记对象的数组可以通过以下方式提取:

const mark = performance.getEntriesByType('mark');

示例结果:

[

  {
    detail: null
    duration: 0
    entryType: "mark"
    name: "start:app"
    startTime: 1000
  },
  {
    detail: null
    duration: 0
    entryType: "mark"
    name: "start:init"
    startTime: 1001
  },
  {
    detail: null
    duration: 0
    entryType: "mark"
    name: "end:init"
    startTime: 1100
  },
...
]

performance.measure() 方法计算两个标记之间的时间,并将其存储在性能缓冲区中。传递一个新的度量名、起始标记名(或 null 表示从页面加载开始度量)和结束标记名(或 null 表示度量到当前时间):

performance.measure('init', 'start:init', 'end:init');

一个 PerformanceMeasure 对象被附加到具有计算出的持续时间的缓冲区中。要获得这个值,您可以请求一个包含所有度量值的数组:

const measure = performance.getEntriesByType('measure');

或按名称请求测量:

performance.getEntriesByName('init');

示例结果:

[
  {
    detail: null
    duration: 99
    entryType: "measure"
    name: "init"
    startTime: 1001
  }
]

使用性能缓冲区

除了标记和度量,性能缓冲区还用于自动记录导航时间、资源时间和绘制时间(我们将在后面讨论)。您可以获得缓冲区中所有条目的数组:

performance.getEntries();

默认情况下,大多数浏览器都提供了一个最多可以存储 150 个资源指标的缓冲区。对于大多数评估,这应该足够了,但是如果需要,您可以增加或减少缓冲区限制:

// record 500 metrics
performance.setResourceTimingBufferSize(500);

可以按名称清除标记,也可以指定一个空值来清除所有标记:

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

performance.clearMarks('start:init');

类似地,可以通过名称或空值来清除所有度量:

performance.clearMeasures();

监控性能缓冲区更新

一个 性能观察者 可以监控性能缓冲区的变化,并在特定事件发生时运行一个函数。如果您使用过 变异观察器 来响应 DOM 更新,或者使用过 交叉观察器 来检测元素何时被滚动到视口中,那么这个语法应该很熟悉。

您必须用两个参数定义一个观察者函数:

  1. 已检测到的观察者条目的数组,以及
  2. 观察者对象。如有必要,可以调用其 disconnect() 方法来停止观察器。
function performanceCallback(list, observer) {

  list.getEntries().forEach(entry => {
    console.log(`name    : ${ entry.name }`);
    console.log(`type    : ${ entry.type }`);
    console.log(`start   : ${ entry.startTime }`);
    console.log(`duration: ${ entry.duration }`);
  });

}

该函数被传递给一个新的 PerformanceObserver 对象。它的 observe() 方法是通过一个性能缓冲区 entryTypes 数组来观察的:

let observer = new PerformanceObserver( performanceCallback );
observer.observe({ entryTypes: ['mark', 'measure'] });

在本例中,添加新的标记或测量会运行performanceCallback()功能。虽然它只在这里记录消息,但它可以用来触发数据上传或进行进一步的计算。

测量油漆性能

Paint Timing API 仅在客户端 JavaScript 中可用,并自动记录对核心 Web 生命周期很重要的两个指标:

  1. first-paint: 浏览器已经开始绘制页面。
  2. first-contentful-paint: 浏览器已经绘制了 DOM 内容的第一个重要项目,比如标题或图像。

这些可以从性能缓冲区提取到一个数组中:

const paintTimes = performance.getEntriesByType('paint');

在页面完全加载之前运行它要小心;这些值将不会准备好。要么等待 window.load 事件,要么使用 PerformanceObserver 来监控paint条目类型。

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

示例结果:

[
  {
    "name": "first-paint",
    "entryType": "paint",
    "startTime": 812,
    "duration": 0
  },
  {
    "name": "first-contentful-paint",
    "entryType": "paint",
    "startTime": 856,
    "duration": 0
  }
]

第一次绘制缓慢通常是由于 CSS 或 JavaScript 的渲染阻塞造成的。如果浏览器不得不下载一个大的图像或者渲染复杂的元素,那么与第一次绘制的差距可能会很大。

资源性能测量

图像、样式表和 JavaScript 文件等资源的网络计时会自动记录到性能缓冲区中。虽然您很难解决网络速度问题(除了减小文件大小),但它可以帮助突出较大资产、缓慢的 Ajax 响应或表现不佳的第三方脚本的问题。

可以使用以下方式从缓冲区中提取一组performance resource timing指标:

const resources = performance.getEntriesByType('resource');

或者,您可以通过传递资产的完整 URL 来获取资产的指标:

const resource = performance.getEntriesByName('https://test.com/script.js');

示例结果:

[
  {
    connectEnd: 195,
    connectStart: 195,
    decodedBodySize: 0,
    domainLookupEnd: 195,
    domainLookupStart: 195,
    duration: 2,
    encodedBodySize: 0,
    entryType: "resource",
    fetchStart: 195,
    initiatorType: "script",
    name: "https://test.com/script.js",
    nextHopProtocol: "h3",
    redirectEnd: 0,
    redirectStart: 0,
    requestStart: 195,
    responseEnd: 197,
    responseStart: 197,
    secureConnectionStart: 195,
    serverTiming: [],
    startTime: 195,
    transferSize: 0,
    workerStart: 195
  }
]

可以检查以下属性:

  • 名称:资源 URL
  • 条目类型:“资源”
  • initiatorType :资源是如何被初始化的,如“脚本”或“链接”
  • serverTiming :服务器在 HTTP Server-Timing header 中传递的一组 PerformanceServerTiming 对象(您的服务器端应用程序可以将指标发送给客户端进行进一步分析)
  • startTime :获取开始时的时间戳
  • nextHopProtocol :使用的网络协议
  • workerStart :启动渐进式 Web App 服务工作器之前的时间戳(如果请求未被服务工作器拦截,则为 0)
  • redirectStart :重定向开始时的时间戳
  • redirectEnd :最后一个重定向响应的最后一个字节之后的时间戳
  • fetchStart :获取资源之前的时间戳
  • domain lookupstart:DNS 查找前的时间戳
  • domain lookupend:DNS 查找后的时间戳
  • connectStart :建立服务器连接前的时间戳
  • connectEnd :建立服务器连接后的时间戳
  • secureConnectionStart:SSL 握手之前的时间戳
  • requestStart :浏览器请求资源之前的时间戳
  • responseStart :浏览器收到第一个字节数据时的时间戳
  • responseEnd :接收到最后一个字节或关闭连接后的时间戳
  • 持续时间:start time 和 responseEnd 之差
  • transferSize :以字节为单位的资源大小,包括头和压缩体
  • encodedBodySize :解压缩前的资源体,以字节为单位
  • decodedBodySize :解压缩后的资源体,以字节为单位

这个示例脚本检索由 Fetch API 发起的所有 Ajax 请求,并返回总传输大小和持续时间:

const fetchAll = performance.getEntriesByType('resource')
  .filter( r => r.initiatorType === 'fetch')
  .reduce( (sum, current) => {
    return {
      transferSize: sum.transferSize += current.transferSize,
      duration: sum.duration += current.duration
    }
  },
  { transferSize: 0, duration: 0 }
);

导航性能测量

卸载前一页和加载当前页的网络时间会作为单个 PerformanceNavigationTiming 对象自动记录到性能缓冲区。

使用以下命令将其提取到一个数组中:

const pageTime = performance.getEntriesByType('navigation');

…或者通过将页面 URL 传递给.getEntriesByName():

const pageTiming = performance.getEntriesByName(window.location);

这些指标与资源的指标相同,但也包括特定于页面的值:

  • 条目类型:如“导航”
  • 类型:可以是“导航”、“重新加载”、“后退 _ 前进”或“预呈现”
  • 重定向计数:重定向次数
  • unloadEventStart :前一个文档的卸载事件之前的时间戳
  • unloadEventEnd :前一个文档卸载事件后的时间戳
  • domInteractive :浏览器解析 HTML 并构建 DOM 时的时间戳
  • domContentLoadedEventStart:文档的 DOMContentLoaded 事件触发之前的时间戳
  • domContentLoadedEventEnd :文档的 DOMContentLoaded 事件完成后的时间戳
  • DOM complete:DOM 构造和 DOMContentLoaded 事件完成后的时间戳
  • loadEventStart :页面加载事件触发前的时间戳
  • loadEventEnd :页面加载事件后的时间戳,所有资产可用

典型问题包括:

  • 卸载事件结束主互动之间有很长的延迟。这可能表示服务器响应缓慢。
  • domContentLoadedEventStartdomComplete 之间有很长的延迟。这可能表明页面启动脚本太慢。
  • domCompleteloadEventEnd 之间有很长的延迟。这可能表明该页面有太多资产,或者有几个资产加载时间太长。

性能记录和分析

Performance API 允许您整理真实世界的使用数据,并将其上传到服务器以供进一步分析。你可以使用的第三方服务,如谷歌分析来存储数据,但第三方脚本有可能被阻止或引入新的性能问题。您可以根据自己的需求定制自己的解决方案,以确保监控不会影响其他功能。

警惕无法确定统计数据的情况——可能是因为用户使用的是旧浏览器,屏蔽了 JavaScript,或者在公司代理后面。了解缺少哪些数据比根据不完整的信息做出假设更有成效。

理想情况下,您的分析脚本不会因为运行复杂的计算或上传大量数据而对性能产生负面影响。考虑利用 web workers 并尽量减少同步 localStorage 调用的使用。以后总是可以批量处理原始数据的。

最后,要警惕异常值,例如会对统计数据产生负面影响的非常快或非常慢的设备和连接。例如,如果九个用户在两秒钟内加载一个页面,但是第十个用户经历了 60 秒的下载,那么平均延迟接近 8 秒。更现实的指标是中间值(2 秒)或第 90 个百分位数(每 10 个用户中有 9 个用户的加载时间不超过 2 秒)。

摘要

对于开发者来说,网页性能仍然是一个关键的 T2 因素。用户希望网站和应用程序能够在大多数设备上响应。搜索引擎优化也会受到影响,因为速度较慢的网站在谷歌中被降级。
开始使用性能 API 所需的一切都在这里💪 点击推文
现在有很多性能监控工具,但是大多数评估服务器端执行速度或者使用有限数量的有能力的客户端来判断浏览器渲染。Performance API 提供了一种整理真实用户指标的方法,这种方法不可能通过其他方法来计算。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

2022 年将使用的 27 大性能测试工具

原文:https://kinsta.com/blog/performance-testing-tools/

性能测试工具对于优化包括网站在内的软件至关重要。为什么?因为性能直接影响用户体验、转化率,并最终影响你的底线。这是市场所熟知的。

2019 年,软件测试的全球市场规模(性能测试工具是其中的一部分)超过了 400 亿美元(T1),并且还在快速增长。因此,您可以找到大量的性能测试工具来满足不同的需求、用例以及预算。

在本文中,我们将看看一些最好的性能测试工具,它们的特性和优点,并帮助您选择最适合您需求的工具。

我们开始吧!

什么是软件性能测试?

性能测试是一种软件测试,它可以帮助你确定软件在给定工作负载下的速度、响应时间、可伸缩性、资源使用和稳定性等方面的性能

Kinsta APM

Kinsta APM is a built-in performance testing tool for Kinsta clients

性能测试的目标是识别应用程序中所有的性能瓶颈。
网站表现直接影响 UX、转化率,并最终影响你的底线📈用这些测试工具⬇️ 点击推文

需要在这里大声喊出来。Kinsta 太神奇了,我用它做我的个人网站。支持是迅速和杰出的,他们的服务器是 WordPress 最快的。

A picture of Phillip Stemann looking into the camera wearing a blue button down shirt

Phillip Stemann

View plans

6 种常见的性能测试

有六种主要类型的性能测试:

1.负载测试

负载测试决定了在给定时间内,随着工作负载的增加,软件的性能如何。这种工作负载可以是并发用户、事务数量、软件行为等。

它旨在观察响应时间、吞吐率、资源利用率等等。通过识别这些属性中的任何性能瓶颈,您可以在启动应用程序之前对其进行故障排除,以确保更好的最终用户体验。

由于负载测试,开发人员可以了解一个软件应用程序在给定时间可以处理多少并发用户。

2.耐久性测试

也称为浸泡测试,耐久性测试评估软件在一段较长的时间内,在固定的常规工作负载下的性能。换句话说,它决定了软件可以承受多长时间的恒定工作负载,以提供长期的可持续性。

在这个测试过程中,测试团队监控 KPI,比如内存泄漏、内存使用、内存短缺等等。耐久性测试还分析长时间使用后的响应时间和吞吐量,以显示这些指标是否一致。

3.压力测试

压力测试测量超出正常工作参数的软件性能。这意味着软件被置于更高的流量负载(更多用户、交易等)下。)来帮助开发人员了解软件在超出其容量限制时的预期表现。

该测试的目标是确定软件的稳定性。它帮助您了解软件的故障点以及如何从故障中恢复。它会占用 CPU、内存、磁盘空间等硬件资源。,根据资源利用率测量应用程序的断点。

例子:公司在一些重大事件前进行压力测试,如黑色星期五,以检查他们的电子商务应用程序的性能。

4.尖峰测试

尖峰测试是一种压力测试,它测量软件在显著和突然的“尖峰”或增加的工作负载下的性能,如模拟用户。它告诉你软件是否能反复快速地处理突然增加的工作量。

5.容量测试

在开发阶段,只有少量数据用于测试代码。容量测试(也称为“洪水测试”)测试软件在处理大量数据时的效率。它检查数据丢失、系统响应时间、数据存储可靠性等等。

6.可扩展性测试

可伸缩性测试测量软件在处理不断增加的工作量时的效率。当你增加或减少软件的性能属性时,测试会告诉你它的行为。

您可以通过逐渐增加数据量或用户来执行可扩展性测试,同时监控软件的性能。
T3】

性能测试的好处

根据 2019 年 3 月发布的报告,脸书遭遇灾难性停电,损失约 9000 万美元收入。同样,App Store 的宕机导致了 2500 万美元的损失,另一份来自 2015 年 3 月的报告称。

尽管有强大的 IT 基础设施和安全保障,这些科技巨头还是遭受了巨大的损失。它证明了性能测试对于您的应用程序是多么重要。它确保所有特性、功能和系统以最佳方式运行,以提供更好的用户体验。

现在,让我们讨论一下性能测试的一些好处。

1.衡量软件的速度、稳定性和准确性

速度、稳定性和准确性是软件性能的一些重要属性。因此,测试你的应用程序的这些方面可以让你监控软件在压力下的表现,并为你提供关于它如何处理可伸缩性的关键细节。

查看测试结果,开发人员可以了解他们必须将哪些更改合并到软件中,以克服缺点并使其更加高效。

2.验证软件的基本功能

你的应用程序的成功取决于它的基础有多强。衡量软件基本特性和功能的性能有助于您做出明智的决策,并在软件设置上规划您的业务战略。

您可以在您的研究和开发部门中使用您的性能测试结果,并相应地集中您的资源来增强您的软件性能和产品供应。

3.发现问题并解决它们

性能测试将告诉你在启动你的网站或应用程序之前可以纠正的关键问题。这意味着你可以快速解决所有发现的问题,并专注于改进其技术,而不是在发布后解决问题。

4.增强软件的加载和优化能力

通过性能测试,您可以更好地处理容量和负载能力,并以帮助软件承受大量并发用户的方式优化您的软件。它还将检测您可以尽快解决的可伸缩性问题,并允许测试人员定制容量来处理高需求

5.提高代码质量和软件功能

当您可以检测到软件中的问题时,您可以快速消除它们。因此,您的开发人员可以维护质量代码并改进应用程序的功能,提供预期的速度、可靠性、可伸缩性和稳定性。

6.满足用户期望

你的客户不会喜欢缓慢、落后的软件,这些软件会浪费他们的时间,让他们烦恼。他们希望它能在 2 到 3 秒内快速加载,并流畅运行,不会出现任何混乱。你的软件的第一印象对于决定用户是想继续使用它还是点击卸载按钮是至关重要的。

性能测试有助于您满足期望的软件属性,并让您的用户高兴地继续使用您的软件,从而增加您的收入。

额外提示:性能测试最好在代码发布后进行。这将有助于开发人员获得实时反馈,以便尽早解决问题。

性能测试流程

每个软件的性能测试的目标都是一样的,尽管方法会有一些不同。因此,下面是一个典型的性能测试流程:

  • 选择测试环境:首先,选择您的测试环境、性能测试工具和生产环境。选择合适的软件、硬件、网络配置等。,用于您的测试。
  • 确定性能指标:接下来,确定软件性能指标,如响应时间、吞吐量、事务、加载时间和资源分配,如 CPU、内存和磁盘空间。
  • 计划测试:识别覆盖用户可变性、目标度量和测试数据的测试场景。它将帮助您计划和设计一些性能测试的模型。
  • 配置选择的测试环境:除了不同测试用例所需的性能测试工具之外,还要组织测试环境的元素。例如,为了测试你的网站的性能,像 Kinsta APM 这样的性能测试工具会有所帮助。
  • 实现测试设计:根据你的测试设计创建你的性能测试,这将帮助你的团队在整个测试过程中保持在正确的轨道上,而不是混乱。
  • 执行性能测试:现在,您可以开始测试了。当它运行时,监控试验并收集结果数据,以便您的开发人员可以使用它来提高软件性能。
  • 分析、报告和重新测试:拿到测试结果后,分析数据并计划需要克服的突出问题。最后,排除问题并再次执行性能测试来跟踪改进。继续重新测试,直到排除所有检测到的问题。

现在,让我们看看市场上一些最好的性能测试工具。

27 大性能测试工具

我们收集了市场上可用的最佳性能测试工具,以帮助您决定哪些工具可以满足您独特的测试需求。

1.金斯塔 APM

Kinsta APM

Kinsta APM

你的 WordPress 网站需要一个简单的性能监控解决方案吗?试试 Kinsta APM 。它旨在让您发现并解决您的 Kinsta 托管的网站上的性能问题。凭借简单易用的用户界面,Kinsta APM 适合所有人,无论他们是初学者还是专家。另外,它在 MyKinsta 下有 10 种语言版本。

Kinsta APM 提供了关于慢速 PHP 事务、外部请求、 MySQL 查询等的见解。您可以调试数据库查询、非优化主题或插件、较长的 API 调用和外部 URL 请求,以及识别最慢、中等和平均事务。

这对每个人都有帮助,从代理和电子商务网站所有者到开发者,帮助他们快速发现和解决性能问题,同时减少他们在昂贵的 APM 工具上的支出。

特点和优势:

  • 客户支持团队:凭借十多年的经验,Kinsta 经验丰富的客户支持团队将全天候为您解决所有网站问题,解决率达 100%。你可以直接通过 MyKinsta 和他们聊天,得到即时回复。
  • 定价:该工具对 Kinsta 托管的所有网站都是免费的,不管你选择了什么方案。您也可以预订一个现场演示来亲自测试性能。

2.WebLOAD

WebLOAD

WebLOAD

RadView 于 1997 年发布的 WebLOAD 是一款针对您的软件的性能和负载测试工具,可帮助您扩展业务。它提供了性能、完整性和可伸缩性测试等功能。

这款企业级工具能够同时模拟数千个用户,因此您可以测试繁重的流量负载,并报告应用程序中的弱点、限制和性能瓶颈。

使用 WebLOAD 进行网站负载测试、持续测试、云负载测试等等。该工具可以从云或本地机器生成负载,并提供一个集成开发环境(IDE)来可视化地记录、编辑和调试测试脚本。

它的基于代理的记录器还记录你的 HTTP 活动,并以 JavaScript 生成测试。您还可以使用 IDE 中的多种工具来编辑或增强它。WebLOAD 提供性能数据的分析报告,帮助用户识别瓶颈。

特点和优势

  • 关联:像会话 id 一样自动关联动态值,并使脚本能够与不同的虚拟客户机一起执行。
  • 协议支持:支持 HTTPS、HTTP 和 XML。
  • 集成:与 Selenium、Jenkins 等工具集成。
  • 客户支持团队:你可以通过电话、传真或联系方式联系他们。
  • 定价:最多 50 个用户可以选择免费试用。联系他们的团队获取报价。

3.阿帕奇 JMeter

Apache JMeter

Apache JMeter

接下来是一个著名的负载测试工具: Apache JMeter 。Apache JMeter 帮助您测量和分析软件性能。这是一个基于 Java 的开源工具,人们主要用来测试 web 应用程序的性能,但它也可以在其他服务上使用。

它可以测试动态和静态资源以及动态 web 应用程序的性能。此外,您可以使用它来模拟服务器、网络/对象或一组不同服务器上的重负载,以测试其强度并分析不同负载类型下的总体性能。

该工具易于使用,不需要非常复杂的基础设施来进行测试,并且与许多负载注入器兼容,可以用一个控制器进行管理。此外,与其他负载测试工具相比,它有一个用户友好的 GUI,需要较少的脚本。其简单的图形和图表足以分析与负载相关的主要数据和资源利用率统计。

它的全功能 IDE 允许更快的测试创建、记录和调试。JMeter 支持 CLI 从兼容 Java 的操作系统加载性能测试,包括 Linux、Mac OSX、Windows 等。

特点和优势

  • 协议支持 : HTTPS、HTTP、SAOP、XML、FTP 等。
  • 支持的技术 : PHP ,NodeJS,ASP.NET,数据库,MOM,LDAP,Java objects,TCP 等。
  • 关联:提供轻松的关联,让您从顶级响应格式如 HTML、XML、JSON 等中提取数据。
  • 可扩展性:它是高度可扩展的,可以与可插入的采样器、可脚本化的样本如 Groovy、可插入的定时器、数据可视化和分析插件等一起工作。
  • 集成:与 Jenkins、Gradle、Maven 等开源库集成。
  • 客户支持:他们有一个庞大的开发者和贡献者社区,你可以和他们互动。他们还维护了教程,所以你可以更好地理解这个工具。
  • 定价 : JMeter 是免费开源的。

4.LoadNinja

LoadNinja

LoadNinja

使用 SmartBear 的 LoadNinja 创建您的负载测试并快速运行它们。它通过高度准确且可操作的数据帮助您诊断应用性能问题。它提供了易于阅读的结果,并且不需要大量的编程。

这个工具帮助产品团队、测试人员和工程师专注于构建他们的可伸缩软件,同时花费更少的时间创建测试脚本。

LoadNinja 允许您记录客户端交互,快速识别性能问题,并通过消除脚本清理、翻译和动态关联工作,在不牺牲测试质量的情况下进行实时调试。凭借其 TrueLoad 技术,它还可以让您在多种浏览器上测试实际的最终用户体验,从而节省 60%以上的精力。它在记录负载测试方面非常高效和精确,并且无需编码就可以立即重放它们。

分析软件性能数据,如 strep 时间、异步调用、处理的资源、web 界面上的导航计时,并使用机器学习助手诊断问题。

执行连续的软件性能测试,提高质量和测试覆盖率,并自动化测试。它不需要设置或维护,因为该服务是基于云的。

注意: SmartBear 提供了一个类似的产品,以前叫做 LoadComplete 。虽然它仍然可以使用,但自 2019 年以来就没有更新过。我们建议您避免使用它。

特点和优势

  • 集成:使用他们定制的 CI/CD 插件或者 REST API 进行自动化测试。
  • 客户支持:你可以联系 LoadNinja 用户社区寻找答案,或者浏览他们全面的文档和常见问题。
  • 定价:该工具的入门价格为 1439 美元/年,100 个虚拟用户,100 个负载小时。

5.洛德罗

Loadero

Loadero

Loadero 是一个基于云的性能和负载测试工具,允许您创建更快的性能测试并有效地发现系统问题。

可以使用 Selenium,用 Java ,JavaScript,或者 Python 编写测试脚本进行大规模的负载测试或者性能测试,记录 web 会话进行调试。通过添加测试用户、摸索、浏览器、位置、假冒数据馈送、网络条件等来配置测试。

Loadero 允许您设置多个网络设置,并在不同的网络条件下测试您的软件。Loadero 的云基础设施提供了更好的可扩展性,让您不必担心维护问题。

这个性能测试工具还可以通过全面的性能测试报告、机器统计数据、加载时间、截图和记录来帮助您检测系统限制。此外,Loadero 具有内置的验证功能,可以在测试运行完成后自动执行断言。

特点和优势

  • 浏览器支持:Loadero 支持五个最新的 Google Chrome 版本以及 Mozilla Firefox。
  • 可重用的测试代码:它允许您利用现有的测试设置来运行负载测试。
  • 假媒体:您可以加入人工媒体,模拟麦克风和网络摄像头输入。
  • 全球覆盖:在全球 12 个地点中的任何一个进行测试。
  • 定价:现收现付模式下每月 250 美元。

6.SmartMeter.io

SmartMeter.io

SmartMeter.io

如果你正在寻找一个企业级的性能测试工具,那么 SmartMeter 是一个不错的选择。它具有同类最佳的功能和特性,而且价格合理。该工具帮助您使用嵌入式浏览器轻松创建测试用例。

通过分析验收参数,如最大响应时间、错误和吞吐量,您可以很容易地将测试添加到持续集成过程中,以自动确定测试是否成功。

SmartMeter 为您提供高级、深入的报告、带有图表比较的实时测试结果、趋势分析等。,对软件性能进行微调。

特点和优势

  • 与 JMeter 的兼容性 : SmartMeter 与 JMeter 兼容,为您提供该工具中您喜欢的所有特性,并完善您的测试。
  • 分布式负载测试:使用负载生成器在不同的全球位置创建无数的虚拟用户。
  • 定价:39 美元/月起。

7.暴风城

StormForge

StormForge

StormForge 允许您以可承受的成本对您的应用执行负载测试,以自动将性能和可扩展性纳入 CI/CD 工作流。它可以帮助您增加应用程序正常运行时间、吞吐量、减少延迟和应用程序错误,并扩展到更多用户。

该工具以更少的资源提供所有这些功能,不涉及手动流程,提供环境可持续性,并帮助您减少每月的云账单。您可以捕获实际的生产流量,并确保测试提供真实的流量模式。

它在开放的工作负载模型中工作,准确地模拟真实世界的场景,并提供更好的错误检测问题。

StormForge 还通过确保应用在负载下的性能并满足 SLA 要求,让您最大限度地减少问题并改善最终用户体验。它提供广泛的分析和报告来帮助轻松地解释、基准测试和比较结果。

特点和优势

  • 可重复:使用性能测试作为 CI/CD 管道上的代码。
  • 云原生的:在 Kubernetes 上运行良好。
  • 支持的编程语言:包括 Java、 Nginx 、Go、Python。
  • 集成:它与您的生态系统完美集成,如云提供商(AWS、DigitalOcean、GCP、IBM、Azure)、监控工具(Prometheus、Dynatrace、Datadog、New Relic 和 Circonus)、 DevOps 工具 (Jenkins、Puppet、Chef 和 Rancher Labs)。
  • 定价:每个月有三次免费测试,而每个应用的付费计划起价为每月 150 美元。

8. LoadView

LoadView

LoadView

支持您的 IT 团队使用企业级平台 LoadView 在实际浏览器中对您的网站、API 和具有数千个连接的 web 应用同时进行压力测试。

LoadView 利用 AWS 和 Azure 来管理其云网络,因此您可以设计多个测试,甚至是在复杂的应用上。您可以使用各种场景定义用户、持续时间和行为,并使用来自美国、南美、加拿大、APAC 和欧洲的 30 个全球位置的负载注入器虚拟地模拟用户。

该工具提供了三种负载曲线,负载阶跃曲线、动态可调曲线和基于目标的曲线,用于检查流量峰值、可扩展性和基础设施限制。

特点和优势

  • 高级防火墙:在防火墙后运行测试,因为 LoadView 提供了您可以允许和配置的专用 IP。
  • 视频录制:用视频录制捕捉网站或 app 渲染,以便更好地分析和查看。
  • 其他特性:参考服务器、详细的瀑布图、动态变量和负载注入器控件。
  • 定价:1000 个并发用户每月 199 美元起。

9.新负载

NeoLoad

NeoLoad

NeoLoad 是一个持续的性能测试工具,用于自动化您的应用程序和 API 负载测试。它提供了测试的直观设计和维护,并提供了真实的用户行为模拟。

它通过条件、循环和拖放控制简化了测试创建,并具有健壮的无代码设计。对于高级情况,可以使用 JavaScript。它使用一种基于 YAML 的格式,这种格式是人类可读的,并且是特定于领域的。

NeoLoad 还在测试完成后为您提供详细的报告,允许您执行基础架构监控,您还可以集成 APM 以获得更好的分析,并通过自动 SLA 验证构建。

特点和优势

  • 支持的技术:支持 HTML 、Angular、 HTTP/2 、WebSocket 等 web 框架和协议。;像 Salesforce、SAP、Oracle、IBM 等打包应用。
  • 高级关联:将动态参数与自动处理相关联,并检测特定于应用程序的参数以及预定义的规则,如。Net、西贝、JSF 等。
  • 集成:集成 DevOps 工具,如 Jenkins、Bamboo、TeamCity、Git 等。;SOAP/REST 支持,Selenium,Tricentis Tosca,Dynatrace,Azure,Jenkins,Git 等。
  • 定价:联系他们定制方案。

10. LoadUI Pro

LoadUI Pro is part of SmartBear's ReadyAPI

LoadUI Pro

您可以使用 LoadUI Pro 对您的 SOAP 和 REST APIs、微服务和数据库进行负载测试,这是 SmartBear 的 ReadyAPI 产品的一部分。有了它,您可以检查 API 的可伸缩性和速度,并预览它们的性能。它于 2011 年发布,用 Java、Groovy 和 JavaFX 编写。

它的标准版是开源的,但是 Pro 版是 SmartBear 带给你的。忘记维护或投资太多,因为 LoadUI Pro 是一个完全基于云的性能测试工具。

除了这些功能,LoadUI Pro 还提供并行负载测试、端点负载测试、独立负载测试、服务器监控等等。此外,您可以使用第三方插件在运行时添加更多功能。

特点和优势

  • 兼容性:与 Mac OS、Windows 和 Linux 兼容。
  • 测试重用:您可以重用已经存在于您的管道中的功能测试来节省时间。
  • 集成:与功能测试工具 SoapUI 集成。
  • 定价:4999 美元/年起。

11.丝绸表演者

Silk Performer

Silk Performer

使用 Silk Performer 对您的移动、网络和企业应用进行强大而真实的压力和负载测试。它可以查明问题的原因和位置,并确保服务器和应用程序在流量高峰期正常运行。

通过设计脚本提供更好的用户体验,帮助发现问题,并使用端到端诊断来检测、监控、解决和隔离问题。它具有可定制的报告,因此您可以生成图表和报告,并根据您的喜好进行定制。

借助云可伸缩性,您可以毫不费力地模拟任何规模的峰值负载,通过重用现有的性能测试并在不同的场景中运行它们来加快测试速度,而无需更改脚本。

Silk Performer 有三个组件,即 Performance Explorer、True Log Explorer 和 Workbench。它提供内置的虚拟专用网络,允许你在高负载下测试和解决基于互联网的应用。

Silk Performer 的其他基本功能包括用户友好的参数化和关联、代理健康控制、资源管理、集成服务器监控、版本控制等等。

Micro Focus 还提供了另一个基于项目的负载和性能测试工具,名为 LoadRunner 。它测试应用程序并测量系统在负载下的性能和行为。模拟成千上万的并发用户,您可以记录和分析应用程序性能。

特点和优势

  • 支持的协议 : HTTPS,HTTP,HTML, SMTP ,POP,TCP,IP,FTP,。NET、SOAP、XML、LDAP 等等。
  • 全球位置:在 50 多个国际位置执行测试。
  • 支持的技术:谷歌云平台、 Azure 和 AWS。
  • 定价:联系他们报价。也可以免费试用。

12.应用程序加载器

AppLoader

AppLoader

Automai 的 AppLoader 是一款自动化性能工具,无需编码或安装在您的应用服务器/VDI 上。这个前端工具可以让你使用机器人来查看实际的应用程序性能,这些机器人使用它们的桌面 GUI 来访问你的应用程序。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

AppLoader 让你摆脱协议限制,让你测试你想要的东西。使用预设脚本和登录时间轻松创建自定义工作流,并定义适合您工作负载的工作流。

您可以通过在一分钟内构建自动化测试用例来执行测试,使用该工具生成的无代码脚本,回放并查看机器人导航过程,然后随时向您的用例添加或编辑逻辑。测试过程通过接入点涉及多个应用,你不需要插件或API

当测试未能检测到原因并解决问题时,快速查看屏幕截图。此外,您还可以在单个控制面板中看到总体性能指标和加速时间。

AppLoader 提供了简单的维护,您可以重用它现有的组件、部分和场景;重新拍摄图像,根据需要编辑台词动作,并更改脚本部分以满足应用程序的更改和升级。

特点和优势

  • 机器人自动化:通过机器人自动化测试,您无需在应用服务器或 VDI 上安装任何东西。
  • 用户友好的测试场景:一目了然地查看场景组件,随时查找操作、定义事务等。
  • 定价:告诉他们你的要求以获得报价。有免费试用版和演示版。

13.格林机关枪

Gatling

Gatling

2012 年发布,用 Scala 编写, Gatling 是一个开源的性能和负载测试工具,用于 web 服务,主要是应用程序。它让您通过预测崩溃和缓慢的响应时间来避免崩溃,及早发现问题以缩短上市时间,增强用户体验,并促进您的业务

Gatling 的代码链接脚本让您可以轻松地维护测试场景并实现自动化。它是为持续负载测试而构建的,可以很容易地与您的开发管道集成。它还包括一个网络记录器。

特点和优势

  • 可读的 DSL:他们的领域特定语言(DSL)使得每个人都能轻松阅读测试场景。
  • 分析:轻松模拟每秒数以千计的用户请求,并获得高度准确的指标,您可以在丰富多彩的动态报告中查看这些指标。
  • 定价:免费。

除了开源工具之外,Gatling 还提供了一个商业工具 Gatling Frontline,它具有测试自动化和集成的高级特性和指标。其内部计划每月花费 485 美元,而云计划每小时 3 美元起

14.火焰测量器

BlazeMeter

BlazeMeter

BlazeMeter 是一款企业级负载测试工具,成立于 2011 年,允许你进行轮班测试。它被授予 Gartner peer insights 软件测试自动化客户选择 2020。

其直观的 UI 允许您创建负载测试或重用现有的脚本来在您的连续测试管道中运行它们。通过利用开源工具链,您可以模拟全球 56 个地点的数千名虚拟用户。此外,您还可以实时控制到达率、每秒点击数和线程数。

BlazeMeter 为您提供详细的报告,以查看历史趋势并提高您的软件性能。您可以获得模拟服务来可视化您的整个系统,模拟缓慢的网络延迟和缓慢的响应,以确保软件性能和质量。

特点和优势

  • 360 度 API 测试:快速监控API,清晰了解代码健康状况,确保 API 调用内容和结构按预期返回数据。
  • 集成:集成 Apache JMeter、Taurus、Gatling、Selenium 等等。
  • 定价:50 个并发用户和 10 次测试的免费计划,而 1000 个并发用户和 200 次测试/年的付费计划起价为 99 英镑/月。

15.理性性能测试器

Rational Performance Tester

Rational Performance Tester

顾名思义,IBM 的 Rational Performance Tester 是一个自动化的性能测试工具,用于基于服务器和基于 web 的应用程序。它验证应用程序,检测性能瓶颈,并帮助减少负载测试。

Rational Performance Tester 允许您使用 IBM Tivoli 的产品,通过查明 J2EE 界面和应用程序速度变慢的原因,来执行完整的环境分析。这个高级的测试工具让您无需编码就可以创建测试脚本,从而降低复杂性并节省时间。另外,您可以通过访问文本编辑器来查看测试细节。

您可以使用 Rational Performance Tester 来执行根本原因分析,以识别应用层和源代码中的瓶颈,并从序列图中跟踪活动,以及查看资源统计。

特点和优势

  • 支持的技术 : HTTP ,SIP,SAP,Citrix,Siebel,TCP Socket 等等。该工具具有一个图形化的测试调度程序,并提供自动化的数据关系管理。
  • 实时报告:获取实时吞吐量和性能报告,设置配置和过滤选项,并通过对响应时间和其他方面的详细了解来查看性能趋势。
  • 定价:联系他们报价。

16.k6

k6 load testing tool

k6 load testing tool

以前被称为负载影响, k6 是一个开源的 SaaS 和负载测试工具,用于开发团队测试他们的网站和 API。它提供失败/通过行为,轻松集成和自动化到 CI 管道中。

他们的社区还开发了转换器和浏览器记录器来促进测试的创建。k6 是一个灵活、易用、功能丰富的 CI 工具。k6 允许您使用它的测试构建器、转换器(Postman、Swagger 和 JMeter)和记录器创建更快的测试和 QA。另外,它提供了大量的文档和最好的支持。

k6 对云和本地测试使用相同的脚本,测试可以模拟真实世界的情况。它还使用 ES6 JS 中强大的脚本,没有 DSL 或 XML。性能测试工具自动化测试,以确保应用程序和基础设施的性能。此外,您可以在 k6 脚本中配置 SLO 来检查软件的健康状况。

特点和优势

  • 支持的协议 : HTTP/1.1、HTTP/2、WebSocket 等等。
  • 兼容性:与 Mac OS、Linux 和 Windows 兼容。
  • 集成:集成 20+服务,包括 Kafka,Azure,GraphQL,Grafana,Datadog, GitLab ,CircleCI, GitHub 等等。
  • 定价:他们提供 50 次免费试用,而付费计划则是 200 名用户每月 59 美元,每年 1200 次测试。

17.茄子

Eggplant

Eggplant

通过使用茄子为终端用户提供可扩展且响应迅速的应用负载测试,增加终端用户参与度。这个负载和性能测试工具很简单,并且提供实际的和以用户为中心的测试。

茄子展示了出色的模拟能力。它在网络协议和应用程序 UI 级别上模拟用户,以完全理解 UI 的影响。除此之外,它还是一个高度可扩展的、开放的、支持多协议的工具,可以帮助您解决测试挑战。

特点和优势

  • 测试控件:您可以在测试运行时轻松控制测试。
  • 有效分析:有效的实时测试分析和报告让我们能够快速发现问题并有效解决。
  • 定价:尝试他们的演示并联系他们报价。

18.装货工

Loadster

Loadster

使用 Loadster 对 web 应用进行负载测试可以处理繁重的负载,并帮助您优化应用性能,防止停机,以及控制成本。您可以测试任何类型的 HTTP APIs,比如 REST、JSON-RPC、GraphQL 和 XML-RPC。

它提供了先进的验证规则来发现错误并记录值以备后用。您还可以使用 Loadster Recorder(一个免费的浏览器扩展)记录脚本,并在浏览器中编辑它们。

您可以使用 Loadster 快速启动云测试。它可以通过少量设置在全球范围内运行分布式云测试,并跨云实例建立 1000 个 bot。

需要一流的,快速的,安全的主机为您的新电子商务网站?Kinsta 提供超快的服务器和来自 WooCommerce 专家的 24/7 世界级支持。查看我们的计划

特点和优势

  • 实时指标:在错误、吞吐量和响应时间的测试中获得实时结果,以及自动报告。
  • 定价:他们的现收现付模式是 1000 bot 小时 119 美元/月起,而月计划是 299 美元起。

19.阿卡迈云测试

Akamai CloudTest

Akamai CloudTest

Akamai 的 CloudTest 允许您对您的环境进行压力测试,并确保您的应用程序或网站为突然的流量高峰做好准备。这是一个高度可扩展和强大的工具,让您可以用精确的控制来模拟大型活动,并提供现场分析来帮助您检测瓶颈

超级好用。您可以轻松地开发、供应、执行测试并获得详细的见解。这种性能测试工具需要较少的资源分配,但可以产生高性能的结果。

特点和优势

  • 快速测试创建:无需编码,更快地创建测试。
  • 定价:100 并发用户免费,按需计划 2500 美元起。

20.Parasoft 负载测试

Parasoft Load Test

Parasoft Load Test

Parasoft 负载测试是一个简单易用的负载和性能测试工具,具有智能用户界面,使配置变得轻松。它可以通过脚本扩展来添加自定义功能。

该工具提供多种性能测试类型,包括压力测试、耐久性测试、组件测试、峰值测试、基础设施测试和可扩展性测试。

通过在负载测试中导入 JUnit 测试,您可以实现早期负载测试,隔离代码库的特定部分。此外,您可以使用 QoS 指标自动化测试结果分析,并将其与主要 APM 系统集成以进行关联。

特点和优势

  • 经济高效:使用 AWS 等云服务按需运行测试,降低性能测试的硬件要求。
  • 定价:联系他们报价。

21.蝗虫

Locust

Locust

Locust 是一个开源的负载测试工具,它可以让你使用 Python 代码定义用户行为,并让数百万用户同时涌入你的系统。这是一个高度分布式和可伸缩的性能测试工具,支持跨多台机器运行测试,并让您轻松模拟大量用户

此外,该工具经过实战检验,具有弹性,即使在交通高峰期也能轻松承受沉重的负荷。它的特点是简单明了的编码,不涉及笨拙的用户界面或丰富的 XML。相反,您可以编写简单的 Python 代码。

特点和优势

  • 安装:使用 PyPI 的 pip 轻松安装。
  • 定价:免费。

22.nGrinder

nGrinder

nGrinder

n rinder是一款企业级性能测试工具,可以轻松执行测试脚本创建,顺利执行测试,监控您的网站和应用程序,并生成测试结果。它使用 Jython 脚本来创建利用多个代理的测试场景。

它是一个开源压力测试工具,提供了集成的测试环境,同时消除了整个过程中的不便。它起源于 Grinder,包括架构中的特定变化和更易访问的测试执行。

您可以分配预安装代理,将它们部署在不同的网络区域,并在多个网络位置执行测试。此外,通过嵌入 subversion 和监控代理状态来管理脚本,以测量机器上的压力。

特点和优势

  • 可扩展的(Extensible):它可以使用自定义库无限扩展测试,并适应并发测试,而不会表现出任何低效。
  • 兼容性:保持向后兼容性,可以在 Docker 上运行。
  • 定价:免费。

23. Loader.io

Loader.io

Loader.io

使用 Loader.io 执行简单的基于云的性能和负载测试,这是一款针对您的 web 应用和 API 的免费工具,能够处理数千个同时连接。

只需注册您的应用程序,使用 API 或 web 界面开始测试,并让它们在特定的持续时间内模拟连接。

您可以使用 Loader.io 实时监控您的压力或负载测试,并与您的同事分享报告。它的特点是以图形和统计数据的交互式数据表示,您可以随时随地访问这些数据。

特点和优势

  • 集成:将 Loader.io 与您的部署管道集成,以扩展功能。
  • 定价:免费计划支持 10,000 个客户端/测试,而付费计划为 100,000 个客户端/测试每月 99.95 美元起。

24.负载风暴

LoadStorm

LoadStorm

LoadStorm 是一款功能强大的负载测试工具,适用于您的移动和 web 应用程序。这个云测试工具可以让你发现应用的可扩展性,创建浏览器记录,上传它们,并对它们进行参数化,从而在几分钟内开始测试。

它也是执行负载测试的最具成本效益和最易管理的性能工具之一。他们提供带有的直观报告来测试应用性能,如响应时间、错误率、用户等。

特点和优势

  • 无编码:你不需要任何脚本技能来使用这个测试工具。
  • 兼容性 : Windows OS
  • 定价:联系他们报价。

25.网络安全管理软件产品

SolarWinds

SolarWinds

借助网络安全管理软件产品,更好地了解您的应用和网络服务性能。它可以让您发现问题的根本原因,以便快速解决问题。

利用从该性能测试工具中获得的可操作的见解,您可以减少网络停机时间。此外,该软件提供广泛的网络性能测试,持续监控设备性能和网络可用性。

当关键性能指标超过预定义的阈值时,该工具会通过智能网络警报功能向您发出警报。

特点和优势

  • 数据分析:利用数据分析监控您的网络,以便您可以更快地解决问题。
  • 定价【1,638 美元起。

26.测试工作室

Test Studio

Test Studio

由 Telerik 提供的 Test Studio 是一个完整的自动化工具,用于测试您的 web、移动和基于桌面的应用程序的 GUI、负载和性能。它提供了基于代码和无代码的自动化,具有直观的测试用户界面。

Test Studio 通过更快的测试记录器使测试更加可靠和稳定,同时只需要最少的测试维护。此外,它最大化了性能测试覆盖率,以确保最佳性能。

使用它内置的调度程序或者在您的 CI/CD 设置中集成测试套件,您可以执行稳定而快速的测试运行。您还可以记录您的性能测试,并利用自动回放来更快更容易地创建测试,然后运行它来测试不同的浏览器

特点和优势

  • 仪表板:通过基于网络的报告、结果和仪表板监控应用质量。
  • 定价:每位开发者每月 39 美元起。

27.金牛星座

Taurus

Taurus

Taurus 是一个用于持续测试的自动化工具,让你消除那些烦人的、重复的测试。它还改善了使用 Selenium、JMeter 等的体验。

Taurus 是一个简单的性能测试工具,它使得构建、运行和查看测试毫不费力,无需编写大量代码。此外,您可以利用统一的、控制友好的 DSL 从头开始创建新的测试。

特点和优势

  • 集成:与 JMeter、Selenium 等无缝集成。
  • 定价:该工具是免费的,并附带有用的文档。

其他性能测试工具 : OpenSTA、The Grinder、nGrinder、ApacheBench、Tsung、Experitest、ZebraTester、cannon、plateau、J-hawk、Paessler Security、Dynatrace、Zabbix。

不要随便挑东西。相反,根据您的网站和 web 应用程序的独特测试需求来选择性能测试工具。并从本质上比较它们的功能和定价。

但是如果你有一个由 Kinsta 提供支持的网站,那么你就不用去别的地方找了。只需通过 MyKinsta 免费使用 Kinsta APM 进行性能测试即可。

| 网络性能的性能测试工具 | 自动化性能测试的测试工具 | Web 应用性能测试工具 | 网站性能测试工具 |
|

  • [Network Security Management Software Product]
  • P
  • network monitoring
  • Dynatrace
  • 扎比克斯

|

  • 新负载
  • Taurus
  • aubergine
  • Rational performance tester

|

  • web 负载
  • 阿帕奇 JMeter
  • Silk artist
  • 风暴使者
  • locust

|

  • 【金塔 APM】
  • 【加载视图】
  • 【加载测试】
  • [Applause]
  • 【风暴锻造】

|

如何选择最适合您需求的性能测试工具

如你所见,有很多选择。为了帮助您选择最适合您需求的解决方案,我们编制了一份清单,列出了您在评估选项时可能需要考虑的一些重要方面。

1.易用性

您使用的性能测试工具必须足够简单,不会给测试人员带来比他们解决的问题更多的问题。如果您的 IT 团队熟悉特定的工具,您可以询问他们这些工具是什么以及它们的性能如何。这将减少学习新软件的时间。

或者你可以使用一个新的但是有效的工具,只要它有一个简单易用的 GUI,并且你已经找到了可扩展的分析插件。

2.可用的测试环境

您选择的性能测试工具必须访问足够的网络和硬件资源,以产生足够可用的性能测试环境。我们提到的大多数工具都为您配备了测试环境。

如果它不能生成一个测试环境来正确模拟预期的网络流量,那么这个工具可能不适合满足您公司的需求。

3.工具效率

性能测试工具的效率取决于当前在单个操作设备上执行测试所能容纳的虚拟用户数量。

如果它需要更少的设备并产生大规模的测试,效率会更高。为此,it 必须能够在当前硬件上生成预期数量的虚拟用户。

4.可量测性

性能测试工具的可伸缩性取决于所选择的协议以及您的测试环境的部署配置。为了检查工具的可伸缩性,您可以对您的性能测试工具进行概念验证测试。

最好进行概念验证测试,以验证产品或想法是否可行。你将在测试阶段获得有价值的信息,如客户反馈、商业分析、竞争对手研究、预期财务状况、营销策略等等。

5.协议支持

不同的厂商提供不同的 app 协议,如 HTTPS、HTTP、SSH、 FTP/STFP 等。根据您喜欢使用的应用程序协议的性质选择工具。

如果您有该工具的可用文档无法解答的问题,请询问您的供应商该工具是否支持该协议,尤其是对于像 Citrix 这样的复杂协议。

6.许可证及其成本

对于许多性能测试工具来说,许可可能是一个挑战。商业工具通常提供更好的协议支持,但有一定的限制。在使用该工具之前,请查看并了解其许可情况。如果它是一个付费工具,检查他们的价格,和其他人比较,选择那些在你的预算范围内,有基本功能的。

7.综合

当与其他监控、诊断、缺陷管理和需求管理集成时,性能测试工具工作得非常好。它将帮助您了解该工具可以为您带来的关于诊断和监控的指标的性质。此外,您将了解如何跟踪这些测试并容易地发现缺陷。

例如,StormForge 与 AWS、GCP、IBM 等云提供商无缝集成。;像 Prometheus、Datadog、Circonus 等监控工具。; DevOps 工具像 Jenkins,Puppet,Rancher Labs 等。

8.扩展性和适应性

一个性能测试工具并不具备您在测试中可能需要的所有功能。因此,了解该工具的灵活性和可扩展性,以便您可以将其与其他第三方工具集成并增加其功能。

例如,Apache JMeter 是高度可扩展的,可以与可插入的采样器、可脚本化的样本(例如 Groovy)、可插入的定时器、数据可视化插件、分析插件等等一起工作。

9.支持

找出你可以从工具供应商那里得到的用户支持的级别。通常,商业供应商通过各种沟通渠道、文档等为提供高质量的支持

如果你使用开源软件,检查他们的社区支持、论坛、活跃成员等等。

Which performance testing tool is right for you? 👀 Find out in this guide ⬇️Click to Tweet

摘要

没有人喜欢等待网站或应用程序加载。当它发生时,他们可能会考虑其他可行的选择,导致你失去业务。这就是为什么对更快的网站和应用程序有巨大的市场需求。

对你的网站或应用程序进行性能测试是至关重要的,以确保它们尽可能快地加载和运行,以便你的用户可以依赖它们。通过测试实现必要的变更,您可以实现更多的转换。

正如我们所展示的,市场上有大量的性能测试工具可供选择。选择你认为最适合测试你的网站或应用需求的。

我们是否遗漏了您在性能测试中使用的任何工具?请在评论区告诉我们。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

20 个精彩的摄影网站(以及如何在 2022 年建立自己的网站)

原文:https://kinsta.com/blog/photography-website/

如果你想知道如何创建一个能吸引潜在客户注意力的摄影网站,你来对地方了。

随着超过 93%的消费者使用互联网寻找当地企业和服务提供商,这是你可以为你的摄影业务做的最好的事情之一。

但是,当已经有数百万其他摄影师在宣传他们的作品时,想要脱颖而出并不容易。你需要正确的设计和方法。

在本文中,我们将涵盖 20 多个获奖的摄影网站示例,将它们提炼为几个核心课程,并向您展示如何一步一步地创建您的网站。

2022 年 20 个前沿摄影网站实例

让我们仔细看看 20 个摄影网站,它们举例说明了摄影师应该如何在网上定位自己。

1 .品牌工具

Brandi Toole photography website

布兰迪图雷摄影网站

Brandi Toole 是一名来自纽约的婚礼摄影师,她的网站是让作品自己说话的完美例子。

这些图片放在最前面和中间,有严格的基本导航和一个光滑的,只有名字的标题。图像的选择立刻突出了 Brandi 的专长,这在接触你的目标受众时是至关重要的。

2.亚历山大·罗曼诺

Alessandro Romagnoli photography website

亚历山德罗·罗马尼奥利摄影网站

Alessandro Romagnoli 是一位意大利时尚与生活摄影师。该网站突出了他的工作,为作品集提供了独特的用户体验。将鼠标悬停在一张照片上可以显示照片的负面效果,你可以对角地拖动照片,而不是向左或向右。

3.北欧人

Nordica photography website

诺德卡摄影网站

诺尔迪卡婚纱摄影二人组科尔和雅各布用一套电影胶片来吸引第一次来的游客和潜在顾客。

他们的故事页面也很鼓舞人心,告诉游客他们是如何成为的故事。

4.拉起驳船缆绳

Ruud Luijten photography website

路德·路易登摄影网站

Ruud Luijten 在安特卫普的家中专门从事自然和风景摄影。他的网站展示了动画在建立第一印象时的强大力量。

5.克莱门特·梅鲁阿尼

Clement Merouani photography website

Clement Merouani 摄影网站

克莱门特·梅鲁安尼是一位居住在巴黎的摄影师兼艺术总监。他将每个项目作为杂志封面展示,完美地突出了他所做的工作类型。

这个网站是动画如何有助于独特体验的另一个例子(但只有拥有足够快的主机,才不会让他们的网站永远加载不完)。

6.猎本摄影

Lieben Photography photography website

【猎本摄影】摄影网站

Lieben Photography 由一位挪威婚礼摄影师经营,他专门拍摄婚礼前的风景照。

该网站的简单设计表明,任何摄影师的网站最重要的部分是一个引人注目的图片集。

7. Mack Eveland

Mack Eveland photography website

麦克·埃维兰摄影网站

Mack Eveland 是德克萨斯州奥斯汀的一名编辑摄影师。她的网站首页有一个自动播放的全屏图库,里面有精心挑选的照片。

她还强调了她拍摄的照片类型(社论)和吸引潜在客户的地点。

8.大卫·威廉·鲍姆

David William Baum photography website

大卫威廉鲍姆摄影网站

大卫·威廉·鲍姆的网站是一个互动画廊,利用了大量的空白空间和一个可以覆盖不同照片的动画界面。

对于专攻多个专业领域的摄影师来说,这是一个鼓舞人心的例子。

9.多莉大街

Dolly Ave photography website

多利大街摄影网站

Dolly Ave 的网站是品牌力量的一个很好的例子。多么强大的第一印象。

所选的照片突出了她拍摄的独特风格。通过文字,她突出了过去项目中的大品牌。

10.罗伯特·克拉克

Robert Clark photography website

罗伯特·克拉克摄影网站

罗伯特·克拉克是纽约的一名编辑兼广告摄影师。有了合适的照片,即使是一个简单的网格画廊也能给人留下深刻的印象。

没有比在你的主页上展示你的摄影作品集更好的方式了。
T3】

11.伊格纳西奥·帕拉西奥斯

Ignacio Palacios photography website

Ignacio Palacios 摄影网站

对于旅游摄影师来说,Ignacio Palacios 是一个独特的例子,因为他通过自己的网站展示了不同的品牌和商业策略。

该网站不是迎合杂志和其他潜在客户,而是专注于吸引和教授初学者摄影师,并推广摄影之旅。

12.克拉拉·巴尔扎里

Clara Balzary photography website

克拉拉·巴尔扎里摄影网站

一张照片胜过千言万语,尤其是当它是一张肖像照或时尚照的时候。克拉拉 巴尔扎里的网站就是一个很好的例子。

它有一个客户名称的联系页面,但除此之外,整个网站是一系列的图片。

13.哈里斯·努克姆

Haris Nukem photography website

哈里斯·努肯摄影网站

Haris Nukem 是一位居住在英国伦敦的摄影师和视觉艺术家,他可以在一张照片中传达自己独特的风格。

虽然你应该在你的网站上展示你最好的一面,但你永远不应该试图隐藏你的风格或你是谁。试图融入是最容易失败的方法。

14.克里斯·伯克德

Chris Burkard photography website

克里斯·伯克摄影网站

克里斯·伯克德是一名探险家和旅行摄影师,他在非常偏远的地方拍摄和旅行。

对于探险摄影网站来说,展示你可以捕捉激动人心的时刻是至关重要的。克里斯用他选择的照片完美地做到了这一点。

15.安德烈亚斯·古尔斯基

Andreas Gursky photography website

安德烈亚斯·古尔斯基摄影网站

安德烈亚斯·古尔斯基是一名德国摄影师和艺术家。每次访问该网站时,你看到的不是一张精心挑选的照片,而是一张他以前作品的随机选择。

16. Levon Biss

Levon Biss photography website

Levon Biss 摄影网站

Levon Biss 是一名肖像摄影师,为人类和昆虫拍摄肖像,他的网站展示了他的独特技能和各种摄影作品。

17.莎拉·E

Sarah E photography website

莎拉 E 摄影网站

萨拉 E 是科罗拉多州的一名婚礼摄影师,她有着独特的纪录片风格。

虽然她不回避一个完美的舞台镜头,如上图,她的画廊突出了她的真实性。

18.克里斯汀·米特莱斯特

Kristen Mittlestedt photography website

克里斯汀·米特莱斯特摄影网站

克里斯汀·米特莱斯特不仅仅是另一位婚礼或肖像摄影师。她的电影风格在网站上随处可见,从简单的滚动画廊到突出的图片。

19.阿列克谢·泰坦琴科

Alexey Titarenko photography website

阿列克谢·季塔连科摄影网站

Alexey Titarenko 是现代艺术界最成功的摄影师之一。他的网站显示了空白的价值。

您的图库不需要使用 jQuery 将所有内容都强制放入混合网格中。有了正确的比例和选择的图片,你就可以创建一个有组织的、引人注目的布局,而不那么死板。

20.蒂姆·霍利

Tim Hawley photography website

蒂姆·霍利摄影网站

蒂姆·霍利是一名商业摄影师和视觉艺术家。他的网站展示了产品摄影的独特创意,以耐人寻味的方式突出了他的产品。

通过加入他合作过的公司的标志,他也为潜在客户增加了强有力的社会证明。

7 个基本的摄影网站设计原则

如果你关注了上面的网站,你可能已经注意到了下面的一些基本原则。

1.让你的作品自己说话

你的图片应该放在网站的最前面和中心

你的形象选择也应该反映出你提供的服务和你想要的顾客类型。

注册订阅时事通讯

想知道我们是怎么让流量增长超过 1000%的吗?

加入 20,000 多名获得我们每周时事通讯和内部消息的人的行列吧!

Subscribe Now

记住时尚摄影师克莱门特是如何用杂志封面突出他的作品的,或者婚礼摄影师是如何展示婚礼上不可错过的情感瞬间的。

2.吻:保持简单,傻瓜

不要试图创造一个复杂的设计来突出你的艺术实力。作为一名摄影师,你能做的最好的事情就是保持设计的时尚和简单。

坚持预制的模板或主题,以获得最佳效果。

3.使用您的“关于”页面来推销体验

你的“关于”页面不应该主要是关于你的狗(除非你是宠物摄影师)或者你不寻常的爱好。

用它来解释为什么有人应该选择你作为他们的摄影师。展示你的工作经验或哲学,并说明他们作为客户可以期待什么。

Photography site “About” page example

摄影网站【关于】页面示例

布兰迪·图尔在这里做得很好。她的“关于”页面涵盖了她的哲学和与她一起工作的经历。以此为目标。

4.清晰导航

保持你的导航菜单清晰简洁。如果用户找不到他们要找的页面,他们就会离开你的网站,再也不会回来。

Photography site navigation

摄影网站导航

Nordica 的这个例子强调了一些基本的东西:一个可扩展的菜单,带有指向“投资组合”、“联系人”和“关于”页面的链接。

5.从客户开始

当挑选图片和设计网站时,一定要从潜在客户开始考虑。

它不应该是关于你的自我或创造性的驱动力,而是与你的理想客户产生共鸣。

6.不要试图重新发明轮子

如果你不是网页设计师或开发者,你不应该尝试从零开始。相反,依靠现有的工具,如模板和插件来帮助你建立你需要的网站。

查看我们精心挑选的最好的 WordPress 插件列表开始吧。

7.让联系你变得容易

首先考虑一下你为什么要创建一个网站。建立知名度,接触潜在客户,对吗?

这意味着,让感兴趣的用户以一种简单明了的方式联系你是成功的关键。

你应该在你的网站上突出显示以下方法中的至少一种:

  • 访问者可以联系到您的联系方式
  • 电话号码(例如,VoIP 重定向号码,这样您就不会共享您的私人号码)
  • 预约或呼叫调度插件

Photography site "Contact" page

摄影网站【联系】页面

马克德龙的网站有一个很好的联系页面。它有一张联系表,以及所有当地办事处的电话号码。

当然,如果你是一个人的商店,你不需要多个电话号码。

如何创建一个摄影网站

创建一个摄影网站有很多方法。你可以用静态 HTML 和 CSS 来构建它,使用免费服务,或者使用 CMS(内容管理系统)来托管和构建网站。

建立一个摄影网站最好的方法是什么?

对于我们来说,自托管 WordPress 是摄影师建立网站的最佳方式。

厌倦了体验你的摄影网站的问题?通过 Kinsta 获得最好、最快的主机支持!查看我们的计划

为什么?

  • 完全的内容所有权和控制权:你对你所有的内容拥有完全的权利(不像网站建设者)。
  • 可用性和特性:拖放式内容创建,以及完全定制您的网站外观和体验。
  • 扩展性:数以千计的插件(包括数百个摄影相关的插件)帮助你传递你想要的体验。
  • 一分钱一分货的专业设置:从数百种廉价免费的专业模板和插件中选择。
  • 更好的站点管理:易于备份、迁移和移动。

当 WordPress 为 40%的互联网提供动力时,你知道他们在做正确的事情。

一键创建您的网站

Kinsta(以及 2021 年的大多数其他主机)使得创建一个新的 WordPress 站点变得非常容易。

在我们的例子中,只需要点击一下就可以开始了。

Kinsta's

金斯塔的【安装 WordPress】按钮

不需要复杂的手动设置过程。

从成千上万的摄影网站模板中选择(WordPress 主题)

官方的 WordPress 主题目录中有超过 370 个免费的摄影主题。

WordPress theme directory.

WordPress 主题目录

第三方网站和开发者也有数千种主题可供选择。

Fiji II WordPress photography theme.

斐济 II 摄影主题

例如,斐济 II 主题对于任何摄影师来说都是一个很好的起点。你可以用你选择的图片来改变 180 度的气氛。

想了解更多的想法,请查看我们的帖子,突出了最佳 WordPress 主题

从吸引眼球的主页开始

一旦你有了一个主题,是时候开始创建你网站的实际页面了。从访问者登陆你的网站时看到的第一样东西开始:主页

首页应该:

  • 引人注目
  • 突出你的主要摄影专业
  • 展示你最好的作品
  • 直接与潜在客户交谈

要创建你的第一个页面,点击菜单中的页面将其展开,然后点击添加新的链接。

Creating a new WordPress page.

创建新 WordPress 页面

然后,您必须在定制器中设置您的主页。在菜单中选择外观>定制,点击进入主页设置。

WP Customizer homepage settings.

WP 定制器主页设置

选择您刚刚创建的页面并发布以保存更改。

在 WordPress 中,有了摄影主题,你最有可能在定制器中编辑首页。

WP Customizer template options.

WP Customizer template options

在这个特殊的主题中,你可以编辑视差模板选项中的设置。

无论你拍摄的是哪种类型的照片,都要仔细选择照片,以抓住潜在客户的注意力。注意菜单或标题中的颜色不要与照片冲突。

Photography Site homepage example.

摄影网站首页示例

一些错误的举动会导致网站看起来不专业。

使用自然主题的照片,吸引任何游客的注意。将标题或徽标着色,以与您选择的照片(或多张图片中的任何一张)相融合。

New background photo example

新增背景照片示例

这就是为什么我们报道的几乎所有摄影网站都使用黑白文字的原因。在这种情况下,书面内容不是主角。

任何摄影网站的 3 个基本页面

接下来,你要重复这个过程。为至少三个以上的部分创建一个新页面(但跳过主页设置)。

  • 联系页面:访客(和潜在客户)可以在这里找到你。
  • 关于页面:这是你突出你的体验和客户可以期待的(不是你最喜欢的食物或颜色)。
  • 作品集或画廊页面:作品集或画廊是你展示过去作品的地方。您还可以基于不同的类别创建多个页面。如果你的主页本身就是作品集,你可以跳过这一步。

对于“关于我”的页面,你可以很容易地使用 WordPress 的拖放编辑器来创建你想要的布局。

WP editor for the "About me" page.

WP【关于我】页面编辑

要创建联系页面,你需要一个 WordPress 联系表单插件。安装后,您可以从编辑器中拖放一个联系人表单框。

创建一个好看的作品集页面有点复杂,但是使用合适的工具,你可以在几分钟内完成。

使用图库插件创建交互式图库或作品集

接下来,是时候用最重要的元素来完成你的摄影作品集网站了:作品集。

第一步是仔细选择并上传你最好的图片,放入图库或作品集页面。

WordPress'

WordPress【上传新媒体】栏目

然后你需要找到合适的 WordPress 图片库插件来满足你的特定需求。他们将允许你创建灵活的,自由流动的网格画廊,展示你的照片风格。

Modula 为例。它使用 JQuery 创建了一个网格样式的图库,让人感觉栩栩如生。

Modula WordPress gallery plugin.

Modula WordPress 图库插件

根据插件的不同,它会生成自己的页面,或者你需要将一个短代码复制并粘贴到你创建的作品集页面上。

不要让缓慢的加载速度破坏了你的第一印象

如果你让你的访问者在你能看到网站之前等待,他们更有可能立即离开。即使只需要五秒钟,他们就有 90%的可能离开。

Page load time and bounce rates from ThinkWithGoogle.

页面加载时间和跳出率(来源:thinkwithggoogle)

摄影网站不可避免地有很多大的、富媒体文件。低分辨率的图像无法给人以同样的专业印象。如果你能采取对策来确保快速的装载速度,那将是最好的。这些可以包括:

第一步是最重要的。有了一个不可靠的共享托管计划,你做的任何事情都不会让你的网站像你希望的那样快速加载。

在金斯塔,速度是第一位的。我们定制的环境运行在快如闪电的谷歌云虚拟机上。我们还使用最新的缓存和其他性能优化来确保快速运行。

如果你是一名摄影师,你应该已经知道漂亮布局的重要性📷...因此,请确保您的网站在这些获奖例子的帮助下反映出这一点。✅ 点击推文

摘要

创建一个摄影网站是你在你的行业和当地立足的关键一步。

通过从上面的例子中学习,保持简单,并从一个合适的主题开始,你可以在几个小时内完成一个伟大的网站并建立你的在线形象。

采取这些措施,让你从竞争对手中脱颖而出,开始快速获得更多客户。


让你所有的应用程序数据库WordPress 网站在线并在一个屋檐下。我们功能丰富的高性能云平台包括:

  • 在 MyKinsta 仪表盘中轻松设置和管理
  • 24/7 专家支持
  • 最好的谷歌云平台硬件和网络,由 Kubernetes 提供最大的可扩展性
  • 面向速度和安全性的企业级 Cloudflare 集成
  • 全球受众覆盖全球多达 35 个数据中心和 275 多个 pop

在第一个月使用托管的应用程序或托管数据库,您可以享受 20 美元的优惠,亲自测试一下。探索我们的计划与销售人员交谈以找到最适合您的方式。

posted @ 2024-11-01 16:30  绝不原创的飞龙  阅读(7)  评论(0编辑  收藏  举报