作者: tianbao

  • WordPress恢复模式(Recovery Mode)的终极指南

    WordPress恢复模式的终极指南

    如果您是WordPress的普通用户,您很可能会不时遇到错误。严重错误、技术困难或可怕的WordPress白屏死机可能会毁掉您的一天并使您的网站离线,让毫无戒心的访问者想知道发生了什么。这不仅会花费您宝贵的点击次数,而且可能会使访问者永远不会返回您的网站。由于WordPress恢复模式,这些问题是短暂的并且更容易修复。

    什么是WordPress恢复模式?

    WordPress 5.2发布之前,您通常会看到WordPress白屏死机。自2019年5月引入WordPress恢复模式以来,当发生不良情况时,用户通常会在其网站上看到错误消息。当检测到问题时,WordPress会向管理员发送一封电子邮件,其中包含登录链接和有关错误的详细信息。

    WordPress恢复模式通知邮件

    您可能想知道是什么导致了这些消息。大多数情况下,这是由于代码损坏或插件更新严重错误造成的。其他可能的原因是插件冲突、主题问题或您可能已实现的自定义代码。无论是什么原因,WordPress都能很好地识别何时出现问题并让您知道它。

    WordPress进入恢复模式时会发生什么?

    发生错误时,WordPress将尝试识别问题并将其隔离。如前所述,会生成一封电子邮件并将其发送给站点管理员。接下来,WordPress将禁用错误代码,以便您可以登录到您的站点来纠正问题。请注意,恢复模式不会为您修复您的网站。它只允许您访问该站点,以便您可以更正它。世界其他地方都会看到错误消息,因此尽快解决问题至关重要。

    您可以在恢复模式下做什么?

    恢复模式最好的一点是能够在不需要FTP的情况下解决错误。这在处理插件或主题问题以及修复一两行损坏的代码时非常有用。当您登录到恢复模式时,您可能会直接在WordPress仪表盘中了解您的问题。恢复模式由管理栏右上角的一个大红色按钮指示。

    您可以修复有问题的插件

    在此示例中,您将看到错误源于插件未正确加载。仪表盘显示描述问题的错误消息,并为您提供修复它的链接。

    恢复模式界面

    单击提供的链接后,您将被重定向到显示问题插件的新屏幕,以及详细说明遇到的特定问题的代码行。在此示例中,您有两个选择。停用插件,或继续使用它。显然,安全的选择是停用插件。然后,您将对发生的问题进行故障排除,并采取措施进行修复。

    WordPress恢复模式问题

    解决主题问题

    此示例为我们提供了一个严重错误,其中包含有关导致错误的更具体的详细信息。基本上,我们在主题的functions.php文件中删除了一个分号,以触发恢复模式。

    主题报错提示

    WordPress做了它的事情并生成了一封电子邮件,让我们知道存在问题。如屏幕截图所示,我们提供了一个链接来登录以纠正问题。此外,WordPress让我们确切地知道错误是什么。

    主题错误邮件提醒

    登录后,我们发现我们的主题存在问题。WordPress提示我们点击进入主题屏幕。

    主题错误链接

    在这一点上,我们知道问题是什么(因为是我们造成的),并纠正它。但是,如果您发现自己处于类似情况,您的下一步行动应该是禁用您的主题,检查您的functions.php文件是否有错误,并在查找导致问题的代码时启用默认主题。

    安全模式是否与恢复模式做同样的事情?

    简而言之,没有。Divi等主题通常使用安全模式来禁用插件、自定义脚本和子主题。此外,一些插件(例如WP Safe Mode)提供相同的功能。恢复模式和安全模式的区别很简单。在恢复模式下,导致问题的特定插件或主题被禁用,而不是所有主题和插件。

    为什么需要WordPress恢复模式?

    WordPress恢复模式会派上用场有几个原因。首先,它允许您通过在站点上显示不同类型的错误消息来识别站点错误。无论是严重的错误消息、技术难题,还是只是 PHP 错误,恢复模式都可以证明对解决它们很有用。另一个可能的原因是您当前版本的PHP不支持您的主题或其中一个插件。

    WordPress恢复模式中显示的常见错误

    大多数情况下,WordPress会通过向您提供错误消息来提醒您注意问题。您可能会看到各种类型的消息,因此我们将帮助您识别它们以及每种消息的可能原因。

    1. 严重错误信息

    WordPress严重错误信息

    WordPress恢复模式中的严重错误消息通常包含以下消息:

    There has been a critical error on your website. Please check you site admin email inbox for instruction.

    严重错误信息常见原因

    您收到此错误消息的原因可能有很多。大多数时候,它可以缩小到几个。让我们探讨最常见的原因。

    有问题的插件

    可在WordPress中使用的大量插件是其最佳功能之一。话虽如此,它可能是一把双刃剑。在为您的站点安装和使用新插件时,通常最好进行研究。有些已过时、不再受支持或与最新版本的WordPress不兼容,应避免使用。然而,即使是最好的计划有时也会被毁掉。在这种情况下,恢复模式是您的朋友。

    自定义代码出错

    即使是经验丰富的WordPress开发人员有时也会犯错误。WordPress很棒,因为您可以自定义它以满足您的需求。有很多机会可以编写自定义脚本、创建自定义插件或简单地使用一点javascript来增强主题的功能。有时,只需要一个缺少的分号就可以让整个事情崩溃。使用恢复模式,当您犯错时,您不必担心从头开始构建。问题通常会被识别出来,有时甚至可以精确到代码行,这样您就可以修复问题并迅速恢复运行。

    不完整的或过时的主题

    主题非常适合让您的WordPress从人群中脱颖而出。像Divi这样的主题允许您广泛地自定义您的网站,从而提供无穷无尽的设计选项。市场上有1000种主题。有时,当主题更新时,电线会交叉,您的主题可能会中断。此外,在某些情况下,您安装了主题并忘记更新它。如果 WordPress 发布了与您的主题不兼容的更新版本,您可能会收到技术困难错误消息。

    2. 技术问题错误信息

    技术问题错误信息

    您可能需要恢复模式的另一个原因是当您收到可怕的技术问题错误消息时。WordPress恢复模式中的技术困难错误消息通常包含以下简单但非常令人不安的消息:

    The site is experiencing technical difficulties.

    技术问题错误信息常见原因

    虽然您看到此问题的原因可能有很多,但最常见的问题是主题或插件冲突。其他可能的原因可能是您的网站被注入了恶意软件。

    与插件的主题冲突

    有时在插件更新期间,可能会与您的主题发生冲突。著名的主题创建者通常会很好地保持他们的框架是最新的。但是,在某些情况下,主题更新还不够。如前所述,明智的做法是选择具有良好声誉且定期更新的插件。选择未经您当前版本的WordPress测试的插件可能会导致您的网站出现错误。

    插件与另一个插件冲突

    与主题冲突类似,插件也可能与其他插件不兼容。在安装新插件之前做你的研究。检查支持渠道以及该特定插件的 WordPress.org 论坛页面,以在下载前了解潜在问题。在考虑新插件时,您应该考虑WordPress插件库的其他选项。如果您是闪电博用户,我们所开发的插件是寻找为您的网站添加新功能的好地方。此外,当您的网站需要新功能时,其他高级插件产品也是不错的选择。

    您的网站已被黑客入侵

    让您的网站被黑客入侵可能是网站所有者或开发人员可能遇到的最可怕的情况之一。您可能会被锁定在您的网站之外,您的网站可能会被重定向,或者它可能被不良行为者用于邪恶目的。当您的网站被黑客入侵时,可能会运行脚本并引发错误,从而提醒WordPress存在它们。那时恢复模式将启动。

    3. PHP代码错误

    有时您不会看到严重或技术困难的错误消息。您的屏幕上可能只有几行PHP。在这种情况下,这通常是由您的主题问题引起的。您的主题可能已过时、缺少代码或您实现的自定义代码导致冲突。

    4. 你的PHP版本有问题

    要评估的另一件事是在您的站点上运行的php版本。有时,通过切换到不同的版本可以轻松纠正问题。例如,如果您的主题已过时且没有可用的新版本,则将php回滚到旧版本可能会解决问题。但是,WordPress不建议回滚超过7.4。这样做会使您的站点容易受到安全问题和性能下降的影响。

    您还可以使用WordPress的内置站点健康功能检查您的WordPress站点健康状态。检查 WordPress 的站点运行状况,从仪表盘导航到工具 > 站点运行状况。这应该显示您是否使用过时的PHP版本,以及其他关键问题和建议。

    站点健康

    如何进入WordPress恢复模式

    基本上可以通过三种方式访问​​恢复模式:

    1. 访问WordPress恢复电子邮件。这需要单击WordPress恢复模式电子邮件中提供的链接。
    2. 通过wp-config.php手动访问WordPress恢复模式。这包括通过FTP将一行PHP代码添加到您的wp-config.php文件中,如果您无权访问您的管理员电子邮件。
    3. 手动添加恢复URL。这涉及手动重新创建恢复模式URL。

    让我们更详细地探讨这些方法。

    访问WordPress恢复电子邮件

    确保恢复电子邮件的第一步是确保您的管理员电子邮件地址在WordPress中正确。您需要在遇到问题之前执行此操作,因为您可能无法访问wp-admin仪表盘。拥有不正确的管理员电子邮件将阻止您以简单的方式使用恢复模式。

    要检查这一点,请登录您的WordPress站点并导航到设置。接下来,单击常规。查找WordPress管理电子邮件地址。如果您的电子邮件地址正确,您应该能够在出现问题时收到恢复电子邮件。

    WordPress管理员邮箱地址

    发生错误时,WordPress会向您发送一个电子邮件地址,提醒您网站上的问题。电子邮件中包含的链接会将您带到恢复登录屏幕。登录后,您将可以看到有关错误的详细信息 – 使您能够纠正问题。

    如何手动访问WordPress恢复模式

    WordPress恢复模式是一项很棒的功能,但是如果您无法访问管理员电子邮件并需要更改它怎么办?有时您无法访问网站后端来更改电子邮件,因此您需要尝试不同的方法来启用恢复模式。

    编辑您的Wp-config.php文件

    对于此示例,您将使用FileZilla等FTP程序来编辑wp-config.php文件。您需要定义一个电子邮件地址,以便WordPress知道将警报消息发送到哪里。我们将使用FileZilla向您展示如何编辑文件。

    首先,打开FileZilla并与您的服务器建立连接。您可以通过大多数WordPress托管服务提供商找到并生成SFTP凭据。获得建立连接所需的信息后,单击站点管理器

    FileZilla站点管理

    出现对话框时,单击当前站点,或单击新站点添加新站点。从下拉菜单中选择SFTP ,然后输入您的主机端口。接下来,从登录类型菜单中选择正常,填写您的用户密码信息,然后单击连接

    FileZilla服务器连接

    通过选择/public-html/文件夹导航到wp-config文件。选择wp-config.php文件,然后单击view/edit

    编辑wp-config.php文件

    接下来,将以下代码行添加到文件中。请务必将you@yoursite.com更改为您的电子邮件地址。

    define( ‘RECOVERY_MODE_EMAIL’, ‘you@yoursite.com’ );
    define( ‘RECOVERY_MODE_EMAIL’, ‘you@yoursite.com’ );
    define( 'RECOVERY_MODE_EMAIL', 'you@yoursite.com' );

    最后,点击保存。添加代码告诉WordPress将恢复电子邮件发送到您在WordPress设置中指定的管理员电子邮件地址。请记住,如果系统在当天已经生成了一封电子邮件,那么您需要等待24小时才能收到另一封电子邮件。这并不总是适合你,所以让我们探索另一种方式。

    手动添加恢复URL

    如果您不能等待24小时让WordPress发送恢复电子邮件,可以尝试另一种方法。您可以手动生成恢复链接以访问该站点。

    在浏览器中打开您网站的主页。接下来,将其添加到URL后面。

    /wp-login.php?action=entered_recovery_mode

    我们想提一下,这在我们尝试进行此修复的大多数网站上都有效。话虽如此,如果您使用插件或其他方法来屏蔽您的wp-admin登录URL,则需要使用以下链接的变体。请务必将/custom-login/替换为您的自定义登录URL后缀。

    /custom-login/?action=entered_recovery_mode

    当您手动重新创建恢复URL时,您可能不会收到那些方便的错误来告诉您问题出在哪里。在这种情况下,您需要设置故障排除上限并开始工作。

    如何退出恢复模式

    退出恢复模式非常容易。WordPress提供了几个链接供您退出。首先是单击wp-admin面板顶部栏中的红色退出恢复模式按钮。其次,是通过单击仪表盘中错误消息旁边的链接。

    退出WordPress恢复模式

    请务必注意,您应该确保在退出恢复模式之前已更正任何问题。如果您在没有解决问题的情况下这样做,您的网站将继续显示错误消息,使访问者无法访问您的网站。

    如果您无法退出恢复模式怎么办?

    在极少数情况下,即使解决了问题,您也可能无法退出恢复模式。在这些情况下,您需要启用调试以尝试确定问题所在。有几种方法可以解决这个问题。

    首先,您可以编辑wp-config.php文件。为此,请通过FTP打开您的wp-config.php文件。第一行应该已经存在。您只需要将false更改为true。需要添加第二行。这基本上告诉WordPress使调试日志可见。如果您仍然无法访问网站的后端,则此方法很有价值。

    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );

    当您确实可以访问后端时,最好使用第二种方法。WordPress存储库中有几个调试插件可用。我们推荐的一项是运行状况检查和故障排除。它会让您对站点中发生的事情有一个很好的了解,并可以帮助您解决问题。

    最后一个选项是在您的托管服务提供商中使用调试模式。

    小结

    WordPress恢复模式是一项很棒的功能,可帮助您识别和纠正网站上的问题。大多数情况下,问题可以很容易地追溯到插件、主题冲突或自定义代码中的错误。但是,可能存在需要额外故障排除的情况。如果我们前面提到的方法对您不起作用,请尝试通过一些常见的WordPress错误排除故障,以使您的网站从死亡边缘恢复。

  • 恶意软件的类型:了解如何更好地保护自己

    恶意软件的类型:了解如何更好地保护自己

    在当今高度互联的世界中,网络犯罪正在蓬勃发展,恶意软件是其最流行的武器。

    恶意软件有多种形式并具有不同的安全威胁级别。黑客使用它们来拦截设备、数据泄露、摧毁整个企业、造成严重的金钱损失,甚至摧毁整个公司。

    那么,究竟什么是恶意软件,你如何对抗它呢?

    在这份详尽的指南中,我们将解释有关恶意软件的所有知识、其类型、如何检测和删除它,以及如何保护自己免受最恶毒的恶意软件攻击。

    1. 什么是恶意软件?
    2. 恶意软件的工作原理
    3. 不同类型的恶意软件
    4. 如何检测恶意软件
    5. 如何摆脱恶意软件
    6. 如何保护自己免受恶意软件的侵害

    什么是恶意软件?

    恶意软件是恶意软件的缩写,是任何破坏或未经授权访问其他用户的设备、网站或网络的软件,主要用于数据泄露、身份盗窃、间谍活动等险恶目的。

    Yisrael Rada于1990年创造“恶意软件”一词​​之前,“计算机病毒”是首选术语。它们经常被伪装成干净无害的程序。

    恶意软件可以破坏您的服务、删除您的文件、将您锁定在系统之外、窃取您最私人和机密的信息、将您的设备变成僵尸,甚至破坏整个网络和网站。

    网站恶意软件

    鉴于网站、电子商务解决方案和Web应用程序的指数级增长,网络犯罪分子有无数机会实施他们的恶意计划并利用任何可能的漏洞。

    浏览器的“此站点包含恶意软件”警告

    浏览器的“此站点包含恶意软件”警告(图片来源:FixMyWP

    网站恶意软件专门攻击网站和服务器。它们通常被开发用于绕过网站或服务器的安全防御——或通过不受信任的第三方软件——并在不被发现的情况下获得未经授权的访问。网站恶意软件示例包括DDoS攻击、恶意重定向和垃圾邮件内容。

    恶意软件的工作原理

    网络犯罪分子使用不同的方式通过恶意软件渗透并破坏您的系统。那么你怎么会被恶意软件感染呢?以下是一些流行的攻击途径。

    1. 社会工程学

    恶意软件通常通过社会工程攻击传播。社会工程描述了各种各样的恶意网络攻击。攻击者主要依靠诱骗用户泄露敏感信息或访问他们的设备。

    谷歌的网络钓鱼警告标志

    谷歌的网络钓鱼警告标志(图片来源:FixMyWP

    网络钓鱼是网络犯罪分子用来传播恶意软件的最流行的社会工程攻击——通常是通过电子邮件。您知道92%的恶意软件是通过电子邮件传递的吗?

    2. 捆绑软件

    当您下载带有其他第三方应用程序的免费软件程序时,您可能会被恶意软件感染,其中一个应用程序可能包含恶意软件。许多人成为这种恶意软件攻击的受害者,因为他们忘记取消选中这些附加应用程序的安装。

    3. 点对点文件共享

    点对点 (P2P) 文件共享协议(例如种子文件)是网络犯罪分子用来分发恶意软件的主要方法之一。攻击者可以通过P2P共享的文件快速传播他们的恶意代码,从而感染尽可能多的网络和系统。

    4. 免费软件

    因为获得免费的东西总是一个有吸引力的选择,它通常会付出高昂的代价。从未知或不受信任的来源下载的免费软件通常会感染恶意软件,这些恶意软件可能会损坏您的系统并危及您的数据。

    5. 同质性

    同质性可能会成为恶意软件攻击的诱饵。恶意软件可以通过连接到同一网络并运行同一操作系统的系统迅速传播。如果一台设备被感染,很可能整个网络都受到了威胁。

    不同类型的恶意软件

    了解您的敌人对于了解如何摆脱恶意软件并保护您的计算机、网站或服务器非常重要。这些是您应该了解的最常见的恶意软件类型。

    1. 病毒

    病毒是最明显和最常见的恶意软件类型。病毒可以自我复制,但它们也需要人类行动来造成损害。

    病毒造成的损害包括破坏数据文件、关闭系统或窃取网络内的机密信息。病毒还可以发起其他网络攻击,例如DDoS攻击甚至勒索软件攻击。

    受感染的文件、网站或应用程序必须正在运行,病毒才能唤醒并开始运行。否则,它将保持休眠状态,直到受害者用户运行它。大多数病毒会爬起来并隐藏在.exe.com等常见文件扩展名中。

    如果有权访问仪表盘的用户使用受感染的设备,甚至WordPress网站也可能被感染。

    宏病毒

    宏病毒以软件而不是操作系统为目标,其宏语言与其目标感染的软件(例如MS Word和Excel)相同。因此,这种类型的病毒可以感染任何操作系统,从而给您的组织带来严重的安全风险。

    宏病毒可以通过网络钓鱼电子邮件、受感染网络的下载、恶意P2P服务或受感染的便携式存储设备进行传播。

    2. 勒索软件

    您可能听说过威胁政府、个人和组织的可怕勒索软件攻击。但也许您不确定勒索软件到底是什么以及它是如何工作的。

    简单来说,勒索软件会劫持目标受害者的设备或网站,拒绝他们访问他们的文件,直到他们支付赎金以获得解密密钥(尽管即使您付费也不能保证)。

    自2017年通过WannaCry加密蠕虫传播以来,勒索软件已演变成不同的变体。让我们看一些勒索软件变种的例子。

    Ryuk

    Ryuk是一种加密目标系统文件的勒索软件。这种勒索软件变种针对使用Microsoft操作系统的企业和组织,而不是个人。Ryuk价格昂贵,因为其背后的组织要求以比特币等加密货币支付超过100万美元的赎金。

    LockBit

    LockBit是勒索软件的赎金即服务 (RaaS) 变体,可在被安全系统和IT团队检测到之前攻击并快速加密大型组织的数据。支付赎金后,LockBit团伙将收益与指导攻击的会员分摊。

     

    LockBit的支持页面

    LockBit的支持页面(图片来源:DFIR报告

     

    作为RaaS恶意软件,LockBit团伙通过附属服务传递恶意软件。一旦它感染了一台主机,它就会扫描网络。它可以使用与Windows系统相关的协议快速传播到其他设备,因此很难被识别为威胁。

    WordPress勒索软件

    顾名思义,WordPress勒索软件以WordPress网站为目标,并在要求赎金的情况下通过它们传播。WordPress网站越大,它就越能吸引勒索软件网络犯罪分子。

    最近,许多合法的WordPress网站被黑客入侵并注入了恶意代码,这些恶意代码通过将访问者引导到带有核攻击工具包的恶意网站来传播TeslaCrypt勒索软件

    3.蠕虫

    计算机蠕虫是一种令人讨厌的、自包含类型的恶意软件,由于其快速传播能力,它是一场噩梦。第一个计算机蠕虫,莫里斯蠕虫,创建于1988年,旨在通过利用电子邮件协议漏洞来突出网络弱点。

    与病毒一样,蠕虫可以自我复制,但与病毒不同的是,蠕虫不需要任何人为干预、文件或主机程序即可在网络上从一台设备传播到另一台设备并造成严重破坏。

    蠕虫占据整个系统并吞噬磁盘空间/带宽/内存,修改或删除文件,将您锁定在文件夹之外,甚至安装其他恶意软件并窃取数据。网络攻击者通常会设计蠕虫来安装后门软件程序以访问受害者的设备(计算机、手机、平板电脑等)。

    蠕虫利用目标系统的漏洞,通过LAN(互联网)、电子邮件附件、即时消息、恶意链接、可移动存储驱动器、种子,甚至文件共享平台,像野火一样从一台设备传播到另一台设备。

    在过去的几十年里,蠕虫造成的损害是巨大的。例如,2004年针对企业的MyDoom蠕虫造成了大约400亿美元的损失。2017年,臭名昭著的WannaCry蠕虫启动了勒索软件,其目的是从被黑用户的文件中索取赎金。

    4.特洛伊木马

    特洛伊木马,或简称木马,是一种恶意软件程序,它伪装成合法软件,让网络攻击者访问用户的系统。

    这个词来源于古希腊关于木马作为入侵特洛伊市的礼物的故事。特洛伊木马易于编写和传播,使其难以防御。

    木马可以伪装成网站、媒体文件或任何吸引您注意的软件程序,将其安装在您的设备上。它甚至看起来像一个防病毒程序,警告您您的设备已被感染,并敦促您运行程序来清理它。

    木马也可以作为合法网站或带有受感染链接的电子邮件出现。一些流行的特洛伊木马示例包括Magic Lantern、WARRIOR PRIDE、FinFisher、Beast、Tiny Banker、Zeus、Netbus、Beast和Shedun。

    与计算机病毒不同,木马不会自我复制。它的任务是为黑客和诈骗者打开一扇门,以窃取您的信息,例如密码、IP地址和银行详细信息。木马恶意软件将潜伏在受感染的系统中,直到受害者执行它。

    远程访问木马 (RAT)

    远程访问木马 (RAT) 是网络犯罪开发人员发明的一种恶意工具,用于获得对受害者设备的完全访问和远程控制,例如文件访问、网络远程访问以及键盘和鼠标控制。

    RAT允许攻击者绕过常见的防火墙和身份验证系统以静默浏览您设备的文件和应用程序。

    它们甚至可以感染整个网络,例如2015年在乌克兰发生的臭名昭著的攻击,网络犯罪分子使用RAT恶意软件切断了80,000人的电源并控制了基础设施。

    5. Gootloader

    Gootloader针对Google和WordPress用户。它是Gootkit恶意软件家族的成员——一种复杂类型的银行恶意软件,可以从受害者的浏览器中窃取数据,并用于传播勒索软件等恶意代码。

     

    论坛中的Gootloader示例

    论坛中的Gootloader示例(图片来源:Sophos

     

    Gootloader是一个基于JavaScript的恶意框架,主要用于分发Gootkit恶意软件。但是,它已经过改进并扩大了其有效负载,以覆盖Gootkit并进入基于NodeJS的恶意软件,从而导致SEO中毒。

    新的Gootloader恶意软件可以欺骗Google将受感染(被黑)的网站视为可信网站,包括排名靠前的Google和WordPress网站。那么,这怎么可能呢?

    Gootloader攻击者首先针对众多网站,并将它们维护在大约400台服务器的网络上。之后,他们更改了这些网站的CMS,以使用特定的SEO术语和策略出现在Google的热门搜索结果中,以吸引更多受害者。

    当涉及到WordPress网站时,Gootloader通过将代码行注入网站页面的文件来进行攻击。在执行时,这些代码行会运行特定命令,以强制受感染的网站下载大量带有虚假内容的页面作为诱饵。同时,攻击者执行其恶意计划——未被发现。

    6. 无文件恶意软件

    如果勒索软件不好,无文件恶意软件就更糟了。最近的研究表明,无文件恶意软件的比率在2020年最后一个季度增长了近900%!

    顾名思义,无文件恶意软件是一种险恶的隐身攻击,不需要存储在文件中或通过任何软件直接安装在设备上。相反,无文件恶意软件会直接进入内存并开始执行代码或提取数据而不会引起注意,这使得即使是防病毒软件也很难追踪和删除。

    无文件恶意软件攻击通过社会工程方法以受害者为目标。让我们看看下面的那些主要方法。

    网络钓鱼电子邮件和受感染的链接

    当您点击垃圾邮件、恶意下载或受感染的网站时,您允许恶意软件加载到您设备的内存中,从而为攻击者打开一扇门,通过脚本加载代码,从而窃取您的敏感数据。

    内存代码注入

    这种类型的无文件恶意软件远程感染受信任的操作系统软件,例如Microsoft PowerShell和Windows Management Instrumentation (WMI)。例如,Purple Fox是一种内存代码注入恶意软件,它通过注入恶意代码在系统中传播来感染PowerShell。Purple Fox已经感染了至少30,000个系统。

    注册表操作

    该恶意软件通过将恶意代码注入Windows注册表来工作。一个著名的例子是针对Windows系统的Kovtermalware。它经常未被检测到,因为它通过瞄准计算机的注册表来存储其配置数据来逃避文件扫描。

    7. 间谍软件

    间谍软件会在您不同意或不知情的情况下安装在您的计算机上。它访问浏览习惯、互联网活动、击键、pin、密码、财务信息等等。它不仅限于计算机。您使用的任何连接到互联网的设备都容易受到此类恶意软件的攻击,甚至是智能手机。

    收集到的信息随后会在未经您同意或不知情的情况下被转发给犯罪者,犯罪者可以使用或将其出售给第三方。间谍软件本身不会对您的计算机有害。但是,您的信息的收集和盗窃是首要问题。间谍软件的存在也表明您的设备安全存在弱点。

    间谍软件造成的损害范围很广,从将您的信息出售给广告商这样简单的事情一直到完成身份盗窃。例如,间谍软件DarkHotel在连接到公共酒店WiFi时以企业主和政府官员为目标。然后,网络犯罪分子使用它从这些目标的设备中获取敏感信息。

    8. 广告软件

    广告软件与间谍软件略有相似,因为它也收集诸如浏览活动之类的信息。尽管如此,它并不会跟踪击键,它的唯一目的是为您量身定制广告。但是,某些广告软件可能更具攻击性,甚至会更改您的浏览器设置、搜索引擎偏好等。

    一些广告软件侵入性较小,在收集信息之前会征得您的许可。再说一次,一旦收集到信息,以后可以在未经您同意的情况下将其出售给其他广告商。

    9. 恶意广告

    恶意广告是指网络犯罪分子将恶意软件隐藏在合法广告中。在这种情况下,攻击者会花钱在合法网站上添加广告。点击广告后,您要么被重定向到恶意网站,要么恶意软件会自动安装在您的计算机上。

    在某些情况下,广告中嵌入的恶意软件可能会自动执行,您甚至无需点击广告——这被称为“路过式下载”。

    一些网络犯罪分子甚至可以渗透到负责向几个大型知名网站投放广告的合法和大型广告网络。这使他们所有的受害者都处于危险之中。

    10. 键盘记录器

    键盘记录器是一种恶意软件,可监控受感染用户的在线活动。但是,键盘记录器在某些情况下具有合法用途。例如,一些企业使用它们来跟踪员工的活动,一些父母监控孩子的在线行为。

    在其他情况下,网络犯罪分子使用键盘记录器来窃取密码、财务数据或敏感信息。网络犯罪分子使用网络钓鱼、社交工程或恶意下载将键盘记录器引入您的系统。

    键盘记录器的一个著名例子是Olympic Vision,它针对来自世界各地的企业高管。这些攻击被标记为商业电子邮件泄露 (BEC)。Olympic Vision依靠鱼叉式网络钓鱼和社会工程技术来访问其目标系统、窃取信息和监视商业交易。

    11. 机器人/僵尸网络

    机器人是通常远程控制的软件应用程序,可以根据命令执行任务。它们可以有合法用途,例如索引搜索引擎。尽管如此,它们也可以通过连接回中央服务器的自倍增恶意软件的形式被恶意使用。

    僵尸程序通常大量运行,统称为僵尸程序网络或僵尸网络。这些用于发起远程控制的大量攻击,例如DDoS攻击。

    例如,Mirai僵尸网络可以通过输入设备的默认用户名和密码来访问所有连接到互联网的设备,包括打印机、智能设备、DVR等。

    12. Rootkit

    rootkit被认为是最危险的恶意软件之一——它是一个后门程序,允许网络犯罪分子获得完全访问权限并控制受感染的设备,包括管理权限。

    然后,渗透者可以监视目标设备、更改其配置、窃取敏感数据以及几乎其他任何事情。所有这些都是远程完成的。Rootkit通常注入到应用程序、内核、管理程序或固件中。

    Rootkit可以通过网络钓鱼、恶意附件、恶意下载和受到威胁的共享驱动器进行传播。此外,rootkit 可以隐藏其他恶意软件,例如键盘记录程序。

    例如,一个名为Zacinlo的rootkit隐藏在一个虚假的VPN应用程序中,并在用户下载该应用程序时感染用户的系统。

    13. SQL注入 (SQLi)

    SQL注入(SQLi) 是最常见的数据库攻击之一,自1998年发现以来一直是开发人员严重关注的问题。

    当攻击者利用应用程序代码中的漏洞并将恶意SQL查询注入到目标网站上的任何输入字段(例如登录字段、联系表单、站点搜索栏和评论部分)时,就会发生SQL注入。

    成功的SQLi攻击使黑客能够访问敏感数据、恢复系统文件、在您的网站数据库上执行管理任务、修改数据库信息。他们甚至可以向操作系统的核心数据库发出和执行命令。

    2018年,攻击者在Cisco Prime License Manager中发现了一个漏洞,该漏洞使他们能够通过shell访问许可证管理器的系统,其中一次广泛的SQL注入攻击针对的是Cisco。SQL注入的其他知名受害者是Tesla和Fortnite。

    如何检测恶意软件

    鉴于恶意软件类型和变体的广泛性,以及恶意软件攻击的日益复杂,检测它们从未如此困难,尤其是随着无文件恶意软件等特别恶意威胁的增长。

    尽管如此,一些关键的警告标志可以判断您的设备是否感染了恶意软件:

    • 您的设备速度变慢、突然崩溃或频繁显示错误消息。
    • 您无法删除特定软件。
    • 您的设备不会关闭或重新启动。
    • 您发现您的设备正在发送不是您编写的电子邮件。
    • 程序会自动打开和关闭。
    • 没有明显原因,您的存储空间不足。
    • 您的默认浏览器和程序会不断变化,无需您采取任何行动。
    • 性能下降,而电池消耗增加。
    • 您会在意想不到的地方看到很多弹出窗口和广告,例如在政府网站上。
    • 您无法登录您的网站。
    • 您注意到您没有对您的网站进行的更改。
    • 您的网站重定向到另一个网站。

    由于无文件恶意软件非常难以检测,因此您能做的最好的事情就是密切关注网络模式并分析易受感染的应用程序。您还需要使您的软件程序和浏览器保持最新,并定期搜索任何网络钓鱼电子邮件。

    如何摆脱恶意软件

    如果您被恶意软件感染,请务必不要惊慌。有几个选项您仍然可以保存您的设备或网站。请记住,不同类型的恶意软件需要不同的删除程序。

    从设备中删除恶意软件

    如果您发现您的计算机或移动设备出现上述部分或全部恶意软件感染迹象,请首先确定恶意软件的类型,然后开始采取以下措施:

    • 病毒或木马:如果您的设备感染了病毒或木马,您需要安装可靠的防病毒或反恶意软件程序,以执行深度扫描。定期更新防病毒软件很重要。部署强大的防火墙并在单击电子邮件附件和Web链接时要小心。
    • 蠕虫:尽管它具有危害性,但您可以像清除病毒一样清除计算机蠕虫。安装功能强大的反恶意软件,可以检测蠕虫并让它完成所有工作。如果您的浏览器被感染,请使用另一台计算机,安装反恶意软件,然后将其刻录到CD上。
    • 垃圾邮件:如今的电子邮件服务包括反垃圾邮件功能。但是,您仍然可以安装反垃圾邮件软件来帮助您摆脱垃圾邮件并保护您。

    勒索软件:如果您的组织没有支付赎金,您需要为当局记录攻击证据,然后立即断开受感染的设备。之后,如果您仍然可以访问,请创建系统备份,禁用任何系统清理或优化程序以保留勒索软件文件以进行诊断。最后,开始使用强大的网络安全软件删除勒索软件,并聘请网络安全专家指导您完成恢复文件的过程。

    • 广告软件:可以使用具有广告软件删除功能的反恶意软件程序来清除广告软件。请务必禁用浏览器上的弹出窗口并默认禁用安装其他软件。

    从WordPress网站中删除恶意软件

    尽管WordPress为成长中的企业带来了很多好处,但它仍然存在一些安全漏洞。如果您的WordPress网站受到恶意软件感染,请按照我们推荐的步骤将其删除,就像熟练的网络管理员一样。

    您可以利用很多WordPress安全插件来保护您的网站。

    如何保护自己免受恶意软件的侵害

    正如您现在可能已经意识到的那样,恶意软件攻击是一件大事,学习如何保护自己免受攻击并避免被它们感染对于个人和企业来说都是必不可少的。

    在大多数情况下,恶意软件感染需要您采取行动,例如下载恶意内容或单击受感染的链接。以下是您可以采取的主要预防措施,以避免受到不同类型的恶意软件的攻击。

    1.安装反恶意软件或防病毒软件

    在您的系统上安装强大的反恶意软件或防病毒软件并定期更新非常重要。运行频繁的扫描,尤其是深度扫描,以确保您的设备没有受到感染。反恶意软件程序有不同的保护级别:

    • 浏览器级保护:某些网络浏览器(例如Google Chrome)具有内置的反恶意软件保护功能,可保护您免受不同的恶意软件威胁。您也可以安装自己的以保护您的浏览器。
    • 网络级保护:如果您在组织内拥有计算机网络,则安装网络级反恶意软件是保护连接设备免受来自网络流量的恶意威胁的最佳选择。为此特别推荐使用防火墙。
    • 设备级保护:这些工具有助于保护用户的设备免受恶意威胁。
    • 服务器级保护:如果您有一个大型组织,这种类型的反恶意软件可以保护您的服务器网络免受恶意网络攻击。

    2. 不要打开来自不受信任来源的电子邮件

    避免网络钓鱼从一个重要步骤开始:不要打开带有可疑附件的可疑电子邮件。

    如果您不确定是否可以遵守此规则,或者您不相信您的员工会遵循此黄金建议,那么请投资电子邮件安全工具。您可以使用反垃圾邮件工具和S/MIME证书来保护您的电子邮件通信。

    AS/MIME证书是一种基于PKI的工具,使您能够与其他S/MIME证书用户交换加密和数字签名的电子邮件。这样,您和您的收件人就会知道这些电子邮件是安全且合法的。

    3.提防恶意下载和弹出窗口

    与可疑电子邮件一样,必须注意您下载的内容以及从何处下载。单击链接以从不受信任的来源下载应用程序或游戏是对网络犯罪分子和恶意攻击的邀请。

    弹出窗口也不例外。如前所述,网络犯罪分子使用操纵方式诱骗您点击受感染的链接。

    4. 执行网站和文件安全检查

    保护您的网站应该是您的首要任务。无论您的网站是小型网站还是大型网站,都必须定期进行网站安全检查,以免被任何类型的恶意软件感染。

    您还应该密切关注构成您网站的各个文件。可靠且定期执行的文件完整性监控程序可以帮助您在潜在攻击被触发之前发现它们。

    如果您的网站不安全,它不仅可能被恶意软件感染,还可能引发对其他网站和用户设备的一系列恶意攻击。更重要的是,它会降低您在Google上的SEO排名。您最不想做的就是在互联网上展开恶意软件攻击摊牌!

    5. 维护定期数据备份

    备份个人或公司计算机上的数据至关重要。即使备份数据不会保护您免受恶意软件攻击,但如果您受到勒索软件或任何其他恶意威胁的感染,它将帮助您恢复数据。

    执行健康的数据备份,请保留一份以上的数据副本。最好使用两种不同的媒体类型来存储您的数据文件,以防发生不止一种攻击。您甚至可以选择将一份数据文件副本保存在安全的异地位置。

    小结

    既然您已经全面了解了不同类型的恶意软件以及如何对抗它们,我们强烈建议您投资于可靠且值得信赖的数据安全措施。

    我们还建议及时了解最新的网络安全风险并定期更新您的系统和程序。

  • 了解什么是CSRF攻击及如何锁定CSRF漏洞

    了解CSRF攻击和锁定CSRF漏洞

    网络漏洞很猖獗,而且不断增加。维护你的用户的安全和隐私比以往任何时候都更重要。 不解决网络漏洞会导致声誉毁于一旦,并被监管机构处以巨额罚款,你还会失去用户的信任。

    网站和网络应用程序很容易受到恶意软件、垃圾邮件和其他攻击–本文重点讨论其中一个攻击媒介–跨站请求伪造(CSRF)攻击。CSRF攻击特别令人不安,因为它们可以在用户不知情的情况下发生。开发人员或网站所有者也很难发现它们,因为恶意请求看起来与真实请求高度相似。

    本文探讨了CSRF攻击,它是如何工作的,以及你可以采取哪些步骤来准备应对。

    1. 什么是CSRF攻击?
    2. CSRF攻击是如何工作的?
    3. GET请求的CSRF
    4. POST请求的CSRF
    5. 减轻CSRF攻击的3种方法
    6. 如何使用CSRF令牌防止CSRF攻击
    7. 如何利用Referrer标头来防止CSRF攻击

    什么是CSRF攻击?

    跨站请求伪造攻击,也被称为CSRF攻击,通过提交恶意请求,在不知不觉中欺骗认证用户,使其执行非预期的操作。

    CSRF攻击是如何工作的

    CSRF攻击是如何工作的。(图片来源: Okta)

    通常情况下,CSRF攻击涉及改变状态的请求,因为攻击者没有收到回应。这类请求的例子包括删除记录、更改密码、购买产品或发送消息。这些都可以在用户不知情的情况下发生。

    恶意攻击者通常使用社会工程,通过聊天或电子邮件向毫无戒心的用户发送一个链接。

    当用户点击该链接时,它就会执行攻击者设置的命令。

    例如,点击一个链接可以从用户的账户中转移资金。或者,它可以改变用户的电子邮件地址,使他们无法重新获得账户访问权。

    CSRF攻击是如何工作的?

    让用户在登录时发起一个改变状态的请求是CSRF攻击的第一步,也是最关键的一步。通过CSRF攻击,攻击者的目的是让已认证的用户在不知情的情况下向网站或网络应用程序提交一个恶意的网络请求。这些请求可以包括cookies、URL参数和其他在用户看来正常的数据类型。

    要使CSRF攻击成功,必须发生以下条件:

    • 一个经过验证的用户必须登录到一个使用cookies进行会话管理的网络应用程序。
    • 攻击者必须创建一个改变状态的伪造请求。
    • 由目标服务器处理的真正的请求不应包含不可预测的参数。例如,在启动状态改变请求之前,请求不应该期望有一个密码作为验证的参数。

    完成CSRF攻击的最常见方法是在具有薄弱的SameSite cookie策略的应用程序中使用cookie。 网络浏览器自动地、通常是匿名地包括cookies,它们在用户向某个域发出的任何网络请求中保存该域所使用的cookies。

    SameSite cookie策略定义了浏览器在跨站浏览情况下如何对待cookie。如果设置为严格,cookie就不会在跨网站浏览的情况下共享,从而防止CSRF攻击。如果设置为无,浏览器会在所有的跨网站上下文中附加cookie。这就使应用程序容易受到CSRF攻击。

    当用户在不知情的情况下通过网络浏览器提交一个恶意请求时,保存的cookie会使该请求在服务器看来是合法的。然后,服务器通过改变用户的账户、改变会话状态或返回所请求的数据来响应该请求。

    让我们仔细看看CSRF攻击途径的两个例子,一个是GET请求,另一个是POST请求。

    GET请求的CSRF

    首先,考虑一个金融银行网络应用程序使用的GET请求,攻击利用了GET请求和超链接传递。

    假设转账的GET请求看起来是这样的:

    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1

    在上面的真实请求中,用户要求将1000美元转到 547895 的账户中,作为购买产品的付款。

    虽然这个请求是明确、简单和实用的,但它使账户持有人暴露在CSRF攻击之下。这是因为该请求不需要攻击者可能不知道的细节。因此,为了发起攻击,攻击者只需要改变这个请求的参数(金额和账户号码),就可以创建一个可执行的伪造请求。

    恶意请求对银行的任何用户都有效,只要他们正在进行cookie管理会话。

    以下是伪造的向黑客账户(此处为 654585)转账500美元的请求。请注意,下面的示例是CSRF攻击中涉及的步骤的高度简化版本,以供解释。

    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1

    一旦完成,攻击者必须找出一种方法,诱骗用户在登录在线银行应用程序时发送此请求。实现这一点的方法之一是创建一个无害的超链接,以吸引用户的注意。链接可能如下所示:

    <a
    href=“https://xymbank.com/online/transfer?amount=500&accountNumber=654585”>Click here to get more information</a>.
    <a
    href=”https://xymbank.com/online/transfer?amount=500&accountNumber=654585″>Click here to get more information</a>.
    <a
    href="https://xymbank.com/online/transfer?amount=500&accountNumber=654585">Click here to get more information</a>.

    如果攻击者找到了目标的正确电子邮件地址,他们可以通过电子邮件将其发送给许多银行客户。那些在登录时单击链接的人将触发请求,从登录的帐户向攻击者发送500美元。

    POST请求的CSRF

    让我们看看,如果同一个金融机构只接受POST请求,他们会如何经历CSRF。在这种情况下,在GET请求的例子中使用的超链接传递将不起作用。因此,一个成功的CSRF攻击将需要攻击者创建一个HTML表单。为购买的产品发送1000美元的真正请求看起来是这样的:

    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895
    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895
    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895

    这个POST请求需要一个cookie来确定用户的身份,他们希望发送的金额,以及他们希望发送的账户。攻击者可以改变这个请求来进行CSRF攻击。

    攻击者只需在一个伪造的请求中添加一个真正的cookie,就可以使服务器处理传输。他们可以通过创建一个看起来无害的超链接,将用户带到一个看起来像这样的触发网页。

    <html>
    <body>
    <form action=“https://xymbank.com/online/transfer” method=“POST”>
    <input type=“hidden” name=“amount” value=“500”/>
    <input type=“hidden” name=“account” value=“654585” />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>
    <html>
    <body>
    <form action=”https://xymbank.com/online/transfer” method=”POST”>
    <input type=”hidden” name=”amount” value=”500″/>
    <input type=”hidden” name=”account” value=”654585″ />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>
    <html>
    <body>
    <form action="https://xymbank.com/online/transfer" method="POST">
    <input type="hidden" name="amount" value="500"/>
    <input type="hidden" name="account" value="654585" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    我们已经在上面的表格中设置了金额和账户参数。一旦认证的用户访问该页面,浏览器在将请求转发给服务器之前会添加会话cookie。然后服务器将500美元转发到黑客的账户。

    减少CSRF攻击的3种方法

    有几种方法可以防止和大大减轻对你的网站或网络应用的潜在CSRF攻击,包括:

    • 使用CSRF令牌
    • 使用referrer标头
    • 选择一个注重安全的托管解决方案

    如何使用CSRF令牌防止CSRF攻击

    一个CSRF安全的网站会给每个会话分配一个唯一的令牌,并与服务器端和客户端浏览器共享它。每当浏览器发送一个敏感请求时,服务器都希望它包含指定的CSRF令牌。如果它有错误的令牌,服务器会放弃它。为了安全起见,CSRF令牌并不存储在客户端浏览器的会话cookies中。

    CSRF令牌的潜在漏洞

    虽然CSRF令牌是一个很好的安全措施,但这种方法并不是防攻击的。伴随着CSRF令牌的一些漏洞包括。

    • 绕过验证 – 一些应用程序如果没有找到令牌就跳过验证步骤。如果攻击者获得了对包含令牌的代码的访问权,他们可以删除该令牌并成功执行CSRF攻击。因此,如果对服务器的有效请求看起来像这样。
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433

    攻击者只需要删除令牌,然后像这样发送就可以执行攻击:

    POST /change_password
    POST body:
    password=pass123
    POST /change_password
    POST body:
    password=pass123
    POST /change_password
    POST body:
    password=pass123
    • 池式令牌 – 一些应用程序维护一个令牌池来验证用户会话,而不是为一个会话指定一个特定的令牌。攻击者只需要获得池中的一个令牌就可以冒充网站的任何用户。

    攻击者可以使用他们的账户登录到一个应用程序,以获得一个令牌,例如:

    [application_url].com?csrf_token=93j9d8eckke20d433
    [application_url].com?csrf_token=93j9d8eckke20d433
    [application_url].com?csrf_token=93j9d8eckke20d433

    而由于令牌是池化的,攻击者可以复制并使用该相同的令牌登录到不同的用户账户,因为你会再次使用它:

    • CSRFs可以将令牌复制到cookie中 – 一些应用程序会将与令牌相关的参数复制到用户的cookie中。如果攻击者获得了这样的cookie,他们可以很容易地创建另一个cookie,把它放在浏览器中,并执行CSRF攻击。

    因此,攻击者可以使用他们的账户登录到一个应用程序,并打开cookie文件,看到以下内容:

    Csrf_token:93j9d8eckke20d433
    Csrf_token:93j9d8eckke20d433
    Csrf_token:93j9d8eckke20d433

    然后他们可以使用这些信息创建另一个cookie来完成攻击

    • 无效的令牌 – 一些应用程序不匹配CSRF令牌到用户会话。在这种情况下,攻击者可以真正地登录到一个会话中,获得与上述类似的CSRF令牌,并使用它来策划对受害者会话的CSRF攻击。

    如何利用Referer Header防止CSRF攻击

    另一个防止CSRF攻击的策略是使用referrer标头。在HTTP中,referrer标头表示请求的来源。它们通常被用来进行分析、优化和记录。

    你也可以在服务器端启用检查referrer标头,以防止CSRF攻击。服务器端检查请求的来源,并确定请求的目标来源。如果它们匹配,那么该请求是允许的。如果不匹配,服务器会放弃该请求。

    使用referrer标头像比使用令牌要容易得多,因为它不需要单独的用户识别。

    Referrer标头的潜在漏洞

    与CSRF标记一样,Referrer标头信息也有一些重要的漏洞。

    首先,Referrer标头文件不是强制性的,有些网站会在没有Referrer标头文件的情况下发送请求。如果CSRF没有处理没有标头信息的请求的策略,攻击者可以使用标头信息的请求来执行状态改变的攻击。

    此外,随着最近引入referrer策略,这种方法变得不再有效。这一规范防止了URL泄露给其他域,使用户对referrer标头中的信息有更多的控制。他们可以选择暴露部分referrer头信息,或者通过在HTML页面上添加一个元数据标签来禁用它,如下所示。

    <meta name=“referrer” content=“no-referrer”>
    <meta name=”referrer” content=”no-referrer”>
    <meta name="referrer" content="no-referrer">

    上面的代码为这个页面的所有请求删除了referrer头。这样做使得那些依赖referrer头的应用程序很难防止来自这样一个页面的CSRF攻击。

    小结

    跨站请求伪造(CSRF)是一种欺骗认证用户,使其无意中发起改变状态的请求的攻击。它们的目标是那些不能区分有效和伪造的状态改变请求的应用程序。

    CSRF只能在那些依靠会话cookie来识别登录用户并具有弱的SameSite cookie策略的应用程序上取得成功。他们还需要一个接受不包含未知参数(如密码)的请求的服务器。黑客可以使用GET或POST来发送恶意攻击。

    虽然使用CSRF令牌或强制执行referrer header验证可以防止一些CSRF攻击,但这两种措施都有潜在的漏洞,如果你不小心,就会使你的预防措施失去作用。

  • 深入研究网络延迟对WordPress网站的影响

    深入研究网络延迟对WordPress网站的影响

    网络上的许多文章往往主要关注前端WordPress优化和加快网站速度的快速方法。服务器优化(例如网络延迟)有时会被忽视或忽视。因此,我们认为深入了解网络延迟的重要性及其在加载不同区域时对WordPress网站的影响会很有趣。

    虽然CDN绝对可以帮助减少网络延迟,但您的主机服务器位置仍然非常重要,特别是如果您在非常特定的地理位置为访问者提供服务。延迟很重要,我们将向您展示几个原因。

    什么是网络延迟?

    网络延迟是指通过网络传输数据所涉及的时间和/或延迟。换句话说,一个数据包从一个点到另一个点需要多长时间。如今,这通常以毫秒为单位进行测量,但是,根据网络的不同,它也可能是秒。越接近零越好。

    延迟是信号在地理距离以及通过各种通信设备时引入的等待时间。 – Whatis.com

    换句话说,距离越远,延迟越大,这等同于更长的延迟。当涉及到通过光纤电缆传输的数据时,您无法超越光速。例如,下面是Google Cloud Platform网络的地图。他们有数千英里的电缆在海底覆盖整个地球。这就是为什么它是世界上最快的网络之一的原因之一。即使拥有这种广泛的最先进网络,仍然总是会有延迟延迟。

    光纤电缆的延迟

    光纤电缆的延迟

    有几个不同的因素会导致网络延迟,其中包括:

    • 传输延迟: 不同类型的介质,例如无线或光纤连接,都会引入某种类型的延迟,因为它们只能推出这么多位。例如,光纤连接的传输延迟将低于 T1 线路。您还必须考虑数据包的大小。
    • 传播延迟: 这是数据包传播所需的时间。这可能包括距离、网络延迟等。
    • 排队延迟: 如果超出带宽,可能会出现排队延迟,数据必须在主机或路由器处等待。这可能会受到网络拥塞的影响。

    为什么网络延迟很重要

    有些人可能会争辩说,网络延迟并不是很重要,但是,这可能与您选择托管WordPress网站的位置有关。对于媒体和您的资产(例如图像、JavaScript、CSS、视频),CDN可以通过从更近的服务器提供副本来解决很多额外的延迟问题。但是,在大多数配置中,您仍然需要查询您的托管服务器以获取初始DOC加载。这就是延迟很重要的原因!

    Trainline将整个渠道的延迟减少了0.3秒,客户每年额外花费800万英镑(约合1150万美元)。– WPO 统计

    对于为特定地理位置的访客提供服务的企业,延迟尤其重要。例如,假设您在悉尼有一家电子商务商店,您90%的客户来自澳大利亚。将您的网站放置在澳大利亚的服务器上,而不是将其托管在欧洲或美国,您的企业肯定会受益。我们将在下面讨论它对您的网站的影响有多大。

    比较Google Cloud网络延迟

    距离是延迟延迟的主要原因之一。然而,重要的是要记住,延迟不仅受距离的影响,还受它所产生的跳数、中间路由器等的影响。测量网络延迟的几种方法包括Ping、Traceroute和MTR。在这个例子中,我们将简单地使用ping时间并运行一些traceroute测试。如果您真的想深入研究数据,可以运行traceroute命令

    因此,我们在位于不同地理区域的Google Cloud Platform上启动了几台测试机器。许多其他托管服务提供商使用Google Cloud的标准层网络,这会导致速度变慢。

    • perf1主机(位于美国爱荷华州)
    • perf2主机(位于澳大利亚悉尼)
    • perf3主机(位于德国法兰克福)

    然后我们使用KeyCDN的免费Ping测试工具 ,它允许我们同时从14个位置进行测试。请记住,ping时间越短越好, 因为这与数据通过Internet传输到其目标地址然后返回给您所需的延迟时间(以毫秒为单位)直接相关。我们还使用了他们的traceroute工具

    Perf1(爱荷华州,美国)

    对于位于美国爱荷华州的测试服务器,位于美国的位置的ping时间要低得多(到达拉斯的平均ping时间为16毫秒)。当您开始深入欧洲或新加坡时,您开始体验更高的平均ping时间(到新加坡的平均ping时间为244毫秒)。

    Ping时间 perf1(美国)

    Ping时间 perf1(美国)

    如果我们比较Traceroute,您可以看到一个示例,从美国爱荷华州到德国法兰克福需要7个额外的网络跃点(与从达拉斯的10个跃点相比)。这就是为什么重要的是要记住,网络跃点也会影响网络延迟。

    Traceroute perf1(美国)

    Traceroute perf1(美国)

    Perf2(澳大利亚悉尼)

    对于位于澳大利亚悉尼的测试服务器,澳大利亚和亚太地区的ping时间要低得多(到悉尼的平均ping时间为1毫秒)。当您开始深入欧洲或南美洲时,您开始体验更高的平均ping时间(到圣保罗的平均ping时间为319毫秒)。

    Ping时间perf2(澳大利亚)

    Ping时间perf2(澳大利亚)

    如果我们比较Traceroute,您可以看到一个示例  ,从澳大利亚悉尼到德国法兰克福需要14个额外的网络跃点

    Traceroute perf2(澳大利亚)

    Traceroute perf2(澳大利亚)

    Perf3(法兰克福,德国)

    对于位于德国法兰克福的测试服务器,欧洲甚至美国的ping时间要低得多,这可能是由于两者之间的快速骨干连接(到阿姆斯特丹的平均ping时间为7毫秒)。当您开始深入到亚太地区或南美洲时,您开始体验更高的平均ping时间(到新加坡的平均ping时间为308毫秒)。

    Ping时间 perf3(德国)

    Ping时间 perf3(德国)

    如果我们比较Traceroute,您可以看到一个示例  ,从德国法兰克福到巴西圣保罗需要11个额外的网络跃点

    Traceroute perf3(德国)

    Traceroute perf3(德国)

    因此,正如您在上面看到的,距离越大,与更高的ping时间和构成网络延迟的额外网络跳数直接相关。这就是为什么您应该战略性地定位您的WordPress网站以减少这两个因素的原因。

    比较区域之间的Google Cloud延迟

    上面我们正在测试与ping服务器相关的服务器所在位置的Ping时间。但是Google Cloud Platform区域本身之间的延迟呢?Geek Flare在9个不同地区之间进行了出色的测试。这可以让您快速了解放置在一个区域与另一个区域时由于延迟而发生的延迟。

    Google Cloud Platform延迟(来源 Geek Flare)

    Google Cloud Platform延迟(来源 Geek Flare)

    比较页面加载时间

    当然,我们忽略了总页面加载时间。事实上,这就是一些最有趣的数据所在。但是,请记住,这包括其他因素,例如TTFB。所有三个测试站点都是相同的,运行全新安装的WordPress,并安装了二〇一七主题。我们也在使用Pingdom,所以时间是从他们的测试服务器位置测量的。

    Perf 1(爱荷华州,美国)

    我们使用位于美国爱荷华州的服务器从三个不同的测试地点进行速度测试,结果如下。

    速度测试 perf1 达拉斯

    速度测试 perf1 达拉斯

    速度测试 perf1 澳大利亚

    速度测试 perf1 澳大利亚

    速度测试 perf1 斯德哥尔摩

    速度测试 perf1 斯德哥尔摩

    正如我们在上面看到的,从美国境内(靠近托管服务器)加载站点与从全球加载站点之间存在巨大差异。

    Perf 2(澳大利亚悉尼)

    我们使用位于澳大利亚悉尼的服务器从三个不同的测试地点进行速度测试,结果如下。

    速度测试 perf2 达拉斯

    速度测试 perf2 达拉斯

    速度测试 perf2 墨尔本

    速度测试 perf2 墨尔本

    速度测试 perf2 斯德哥尔摩

    速度测试 perf2 斯德哥尔摩

    正如我们在上面看到的,从澳大利亚境内(靠近托管服务器)加载站点与从全球加载站点之间存在巨大差异。

    Perf 3(法兰克福,德国)

    我们使用位于德国法兰克福的服务器从三个不同的测试地点进行速度测试,结果如下。

    速度测试 perf3 达拉斯

    速度测试 perf3 达拉斯

    速度测试 perf3 墨尔本

    速度测试 perf3 墨尔本

    速度测试 perf3 斯德哥尔摩

    速度测试 perf3 斯德哥尔摩

    正如我们在上面看到的,从欧洲内部(靠近托管服务器)加载站点与从全球加载站点之间存在巨大差异。

    如果这些页面负载测试不能说服您,我们不知道会怎样!例如,美国爱荷华州的测试站点从达拉斯加载仅需要368毫秒。但是从澳大利亚悉尼加载需要2.14秒。这就是为什么位置很重要!同样,您可以通过使用CDN将媒体资产靠近访问者来帮助减少总加载时间。但是您总会遇到来自主机服务器的加载时间和延迟,因此请明智地选择。

    选择合适的位置来托管您的WordPress网站

    大多数WordPress托管服务提供商通常允许您从不同的位置进行选择来托管您的网站。这使您可以战略性地将站点放置在需要确保低延迟和TTFB的位置,以及极快的加载时间。您还可以为每个单独的站点选择不同的位置。

    Google Cloud数据中心位置

    Google Cloud数据中心位置

    不确定要选择哪一个?以下是一些提示。

    提示 1 – 检查谷歌分析

    您可以做的第一件事就是在Google Analytics中查看访问者的地理位置。在下面的这个示例中,您可以看到超过90%的流量来自美国。因此,在大多数情况下,您希望将WordPress网站放在美国的服务器上。您可以将数据过滤到城市,但我们通常会推荐像美国爱荷华州这样的中心位置。

    Google Analytics中的地理数据

    Google Analytics中的地理数据

    提示 2 – 检查电子商务数据

    如果您经营电子商务商店,请确保还检查您的客户来自哪里。这当然是您产生收入的方式,因此这些是您最重要的访问者。这应该与您上面的流量一致,但是,情况并非总是如此。如果您有电子商务数据设置或目标,您可以轻松地将该信息叠加在地理数据之上,以做出更明智的决定。

    提示 3 – 进行快速延迟测试

    有很多方便的免费工具可以为不同的云提供商测量您当前位置的延迟。这可以帮助您快速评估哪个区域可能是您站点的最佳选择。

    测量Google Cloud Platform延迟

    测量Google Cloud Platform延迟

    您还可以使用CloudHarmony,这是一个云比较工具。您可以测试诸如延迟、DNS、上行链路和下行链路等内容。

    CloudHarmony网络测试

    CloudHarmony网络测试

    减少网络延迟的快速方法

    总而言之,这里有一些减少网络延迟的快速方法。

    • 正如我们在上面向您展示的,将您的WordPress网站放在更靠近访问者的服务器上应该是第一要务。这有助于减少ping时间和网络跳数。
    • 利用内容交付网络(CDN) 为来自全球POP的缓存资产提供服务。这有助于消除可能不在您的主机服务器附近的访问者的网络延迟。
    • 借助并行化,利用HTTP/2协议最大限度地减少往返次数。
    • 减少外部HTTP请求的数量。每个都可以根据其服务器的位置增加自己的延迟。
    • 使用具有快速查找时间的优质DNS提供商。
    • 在页面加载时利用预取和预渲染在后台执行任务。
    • 实施我们在本大型指南中提供的一些高级技巧如何加速您的WordPress网站(终极指南)

    小结

    希望现在您对网络延迟、其重要性以及它如何影响您的WordPress网站有了更多了解。为确保快速加载时间,请确保选择主机与访问者和客户最接近的服务器。你觉得呢?你有没有什么想法?您是否曾经因为网站放置在错误的位置而经历过缓慢的加载时间?请在下面的评论中告诉我们。

  • 如何减少WordPress网站的HTTP请求数量

    如何减少WordPress网站的HTTP请求数量

    您网站的HTTP请求越多,加载速度就越慢。因此,如果您可以减少HTTP请求的数量并优化它们的加载方式,您就可以提高网站的性能

    在这篇文章中,我们将带您了解有关如何减少WordPress上的HTTP请求的所有信息。

    我们将从HTTP请求的基本介绍、它们的重要性以及如何分析WordPress站点的请求开始。

    然后,我们将分享一些技巧和策略,您可以实施这些技巧和策略来减少站点的请求。除了帮助您处理GTmetrix中的“减少HTTP请求”消息外,这些策略还有助于处理Google PageSpeed Insights中的“避免链接关键请求”消息。

    1. 什么是HTTP请求?
    2. 为什么减少HTTP请求很重要?
    3. 如何查看和分析您网站的HTTP请求
    4. 如何在WordPress中优化和减少HTTP请求
    5. 减少HTTP请求的最佳WordPress插件

    什么是HTTP请求?

    当你建立一个网站时,它有很多不同的部分。您有在页面上使用的不同图像文件、控制内容外观的CSS样式表、添加所有酷功能的JavaScript文件,等等。

    当有人访问您的网站时,他们的浏览器需要一种方法来从您的服务器下载该页面所需的所有资源。为此,它为每个单独的资源向服务器发出HTTP请求

    例如,它可能会说,“嘿服务器,我需要那个coolimage.png文件”和“嘿服务器,我还需要该联系表单插件的CSS样式表”。然后服务器用相关文件响应这些请求。

    一旦网络浏览器获得这些文件,它就可以为您的访问者组装网页。当然,它比那要复杂一些,但这是基本思想。

    HTTP是超文本传输​​协议的缩写,是这些计算机(访问者的浏览器和您的网络服务器)进行通信的方式。

    需要理解的一件重要事情是每个单独的元素都是一个单独的HTTP请求。例如,如果网页上有五个图像文件,浏览器需要发出五个单独的HTTP请求,每个图像一个。

    同样,如果您使用四个WordPress插件并且每个插件都添加了自己的CSS样式表,那么访问者的浏览器将需要发出四个单独的HTTP请求,每个插件的样式表一个。

    为什么减少HTTP请求很重要?

    减少HTTP请求的重要性

    一般来说,您网站的HTTP请求越多,加载速度就越慢。因此,如果您想让您的网站加载速度更快,您需要优化并减少您的网站所需的HTTP请求数量。

    虽然这有点过于简单化,但基本思想是,Web浏览器只会在完成所有HTTP请求下载后才向您的访问者显示该网站(尽管有一些策略告诉浏览器可以等待某些文件)。

    因此,如果一个网站在显示页面之前必须发出70个HTTP请求,这将比它必须发出40个HTTP请求需要更长的时间。

    此外,某些HTTP请求会“阻塞”其他HTTP请求,这意味着浏览器在下载完之前的HTTP请求之前无法开始下载某些HTTP请求。

    底线是:当您发出更少的HTTP请求时,您的网站加载速度会更快。

    如何查看和分析您网站的HTTP请求

    上面,您了解到在所有条件相同的情况下,减少HTTP请求的数量将加快您的网站速度。然而,所有HTTP请求并不总是“相等”的。一些HTTP请求比其他请求大。有些比其他的慢。

    例如,请求一个巨大的3MB图像文件将比请求一个微小的20KB图像花费更长的时间。

    如果您想对您的网站进行最大的改进,首先关注大的、加载缓慢的HTTP请求将获得最大的投资回报。

    要分析您站点的HTTP请求,您可以使用称为Waterfall analysis的东西。

    大多数速度测试工具都提供了这一点,但GTMetrixPingdom的接口非常方便。您还可以使用浏览器的开发人员工具。但是,我们将使用GTmetrix作为本次测试的示范。

    插入URL后,您将在顶部看到一个基本摘要框。这会显示您的站点有多少HTTP请求,但它不会分解单个请求:

    GTMetrix检测网站HTTP请求数量

    要分析您的个人请求,请转到下面的Waterfall选项卡。

    在这里,您将看到站点上每个单独的HTTP请求的列表以及有关该HTTP请求下载所需时间的信息:

    GTMetrix测速工具瀑布图

    您可以看到并非所有HTTP请求都是相同的。例如,839.3 KB的图像需要1.12秒,而57.6 KB的图像仅需要87.5毫秒:

    不同体积相同文件HTTP请求时长

    您还可以通过在服务器上搜索该插件文件夹的名称来查找来自您正在使用的不同WordPress插件的HTTP请求。例如,您可以看到WooCommerce添加了七个自己的HTTP请求:

    WooCommerce插件HTTP请求数量

    通过这种方式,您可以查看您使用的任何插件是否添加了大量HTTP请求(尤其是加载缓慢的请求)。

    如何在WordPress中优化和减少HTTP请求

    概括地说,有两种广泛的策略可以减少HTTP请求:

    • 删除HTTP请求。如果可能,您应该完全删除所有不必要的HTTP请求。例如,如果您有一个插件没有为您的网站增加任何价值,并且正在加载自己的CSS和JavaScript,只需完全删除该插件即可摆脱其所有HTTP请求。
    • 合并HTTP请求。如果您有绝对必须加载的HTTP请求,您可以将它们合并到一个文件中。例如,代替六个小的CSS文件,您可以将它们组合成一个更大的CSS文件,它仍然会加载得更快,因为浏览器需要发出更少的请求(HTTP/2并不总是如此,我们将下面讨论)。

    我们将从专注于删除HTTP请求的策略开始,然后我们将讨论如何组合剩余的HTTP请求。基本思想是去除你能去除的东西,然后组合剩下的东西。

    1. 删除不必要的WordPress插件

    首先,您需要使用瀑布分析从插件中提取所有请求。您可以通过搜索“插件”来实现这一点,这将提取来自wp-content/plugins文件夹的每个HTTP请求。

    如果您将鼠标悬停在文件名上,您可以看到它来自哪个插件。例如,在这里您可以看到来自您可能正在使用的滑块插件的请求。

    进一步挖掘会发现Slider Revolution添加了三个自己的HTTP请求,即使这个测试页面不包含任何滑块:

    如何查看HTTP请求来自哪里

    如何查看HTTP请求来自哪里

    如果您将 Slider Revolution 用于关键滑块,那么您可能需要保留它。但是,如果您安装它来测试它,然后删除了滑块,而您现在并没有真正使用它……那么您应该删除它以摆脱那些HTTP请求。

    基本上,您想浏览整个列表并问问自己每个插件是否真的为您的网站增加了价值。如果插件不是(但正在添加HTTP请求),那么最好将其删除。

    2. 用更轻量级的插件替换重型插件

    修剪掉任何不必要的插件后,下一步是查看是否可以用更轻量级的替代品替换您正在使用的任何插件。

    例如,假设您想向您的网站添加社交分享按钮。这是一个很好的功能,但一些社交分享插件可以添加很多HTTP请求。

    例如,流行的AddThis插件添加了六个自己的HTTP请求(包括一些外部请求——稍后会详细介绍):

    AddThis插件HTTP请求数量

    您可以通过使用更优化的替代方案(例如NovaShareGrow by MediaVine )来减少大量请求。

    3. 有条件地加载全站不需要的脚本

    此时,您应该已经删除了站点上任何地方不需要的所有插件。然而,还有一类插件可能会导致问题——仅在您网站的特定部分需要的插件,但在任何地方都加载了它们的脚本。

    例如,以流行的Contact Form 7 插件为例。您可能只需要在几个页面上使用此插件(例如您的“联系我们”页面)。但是,Contact Form 7会在您网站的每个页面上加载其脚本。因此,例如,即使您的博客文章没有任何联系表单,Contact Form 7仍在向您的博客文章添加一些HTTP请求。

    另一个例子可能是WooCommerce,如果您仅将其用作支付处理器。WooCommerce仍然会在任何地方加载它的脚本,即使你真的只需要在这个用例的购物车和结账页面上使用它们。

    这里的高级策略是仅在需要时有条件地加载插件。例如,您可以让Contact Form 7加载到您的“联系我们”页面,但在其他地方禁用它。

    如果您不是开发人员,则可以使用Asset CleanUpPerfmatters等插件无需代码即可完成此操作。使用Perfmatters,您首先需要启用脚本管理器。然后,您可以打开脚本管理器以查看页面上加载的所有脚本并禁用任何不需要的脚本:

    Perfmatters插件中的脚本管理器

    Perfmatters插件中的脚本管理器

    请小心,因为如果您不小心禁用了真正需要的脚本,可能会导致问题。虽然这是一种有用的策略,但它也是一种高级策略。

    如果您没有信心,您可能只想跳过此步骤或聘请开发人员来帮助您。

    4. 删除不必要的图像(并优化其余图像)

    使用得当,图像使您的网站更加用户友好和吸引人。它们为您的网站增加了价值。

    但是,您站点上的每个图像都是一个单独的HTTP请求。因此,如果您的图像没有增加价值,最好将其删除以消除这些HTTP请求。

    例如,那个有趣的GIF值得吗?可能是……但也可能不是——每当您向内容添加更多图像时,您都需要考虑权衡。

    最后,确保调整大小并压缩剩余的图像。虽然这本身不会减少HTTP请求的数量,但会减少这些HTTP请求的大小,从而使它们加载得更快。

    5. 对图片和视频使用延迟加载

    使用延迟加载,您的站点将等待加载首屏图像、视频和iframe,直到用户开始向下滚动。

    由于这些资源不会立即加载,因此无需为初始页面加载发出HTTP请求。

    从WordPress 5.5开始,WordPress现在包含使用HTML加载属性的图像原生延迟加载。对于其他一些实现延迟加载的方法(包括视频文件),您可以查看我们的WordPress延迟加载完整指南

    6. 限制自定义字体的使用和/或使用系统字体(图标字体相同)

    自定义字体非常适合改善您网站的设计和用户体验。但是,您需要注意如何使用它们,因为您使用的每个自定义字体类型都会添加另一个HTTP请求。

    如果您打算使用自定义字体,请确保使用少量字体。您真的需要为帖子标题和帖子正文使用不同的字体吗?或者你可以使用相同的字体吗?你真的需要所有五种字体权重吗?或者你可以只选择两个?

    这同样适用于Font Awesome和IcoMoon等图标字体。图标字体可能很有用,但您可能不需要加载多个图标字体库。最好只选择一个图标字体库并坚持下去。

    最后,如果您想更进一步,完全消除与您站点字体相关的HTTP请求,您可以考虑使用系统字体堆栈。虽然这会降低您在设计方面的灵活性,但这也意味着您的访问者不必加载任何字体文件来呈现您的网站。

    7. 禁用WordPress表情符号

    默认情况下,WordPress添加自己的表情符号HTTP请求。虽然它只是一个5.1KB的HTTP请求,但这个文件长期以来一直是WordPress性能爱好者的眼中钉。查看如何禁用WordPress表情符号的教程

    最简单的选择是安装并激活free Disable Emojis(GDPR友好)插件。但是,您可以阅读我们的完整指南以了解其他一些选项。

    执行此操作后,您的HTTP请求数将减少1,您仍然可以使用表情符号 。

    8. 减少/消除第三方HTTP请求

    到目前为止,我们主要关注减少对WordPress站点服务器上文件的HTTP请求。但是,访问者的浏览器可能还需要从第三方服务器请求文件。

    这些请求可能会更加麻烦,因为您的站点受这些第三方服务器速度的支配。

    一些例子:

    • Google Analytics – 跟踪脚本托管在 Google 的服务器上,但访问者的浏览器仍需要下载该文件。
    • 嵌入的YouTube视频– 您会看到很多对YouTube服务器的HTTP请求。
    • 第三方广告服务– 您会看到大量与投放您的广告相关的第三方请求。
    • Google Fonts(在 Google 的 CDN 上)——您会看到第三方请求Google服务器加载您的字体文件。

    您可以将上面的许多相同策略应用于这些第三方HTTP请求。

    例如,如果一个插件添加了它自己的第三方请求(就像上面的AddThis插件那样),你可以删除它并使用更优化的东西。

    对于YouTube视频,您可以延迟加载它们并用图像缩略图替换初始页面加载。这将延迟添加这些HTTP请求,直到访问者想要播放视频。

    对于必要的第三方脚本,例如Google Analytics或Facebook Pixel,您可以尝试在本地托管这些脚本。

    WP Rocket具有内置的附加组件来在本地托管Google Analytics和Facebook Pixel,或者您可以使用像CAOS(完整分析优化套件)这样的插件。

    我们还有一些指南可能会有所帮助:

    9. 将图像与CSS Sprite结合

    此时,您应该希望能够从您的站点发出更少的HTTP请求。现在,是时候研究如何组合剩余的HTTP请求了,从图像开始。

    优化站点上图像的另一种方法是将单独的图像合并为一个图像文件。然后,您可以使用CSS在需要的地方仅显示该图像文件的一部分。这是一种称为CSS sprites的策略。

    CSS sprites最适合装饰图像,例如徽标变体或图标。您不应该将CSS sprites用于信息图像(如博客文章正文中的图像),因为有两个大缺点:

    • SEO – 因为您将图像组合成一个图像文件,所以您无法在Google搜索中对单个图像进行排名。
    • 可访问性——因为你不能给图像添加替代文本,使用屏幕阅读器的人将无法理解加载了CSS sprites的图像(尽管有一些策略可以解决这个问题)。

    如果您仍然对这个主题感到困惑,这里有一个Amazon的CSS sprite文件示例——您可以看到它是如何包含一堆徽标变体以及一些图标的。亚马逊使用CSS来确保在每个位置只显示该图像文件的相关“部分”:

    Amazon的CSS sprite文件示例

    来自亚马逊的CSS sprites示例。您可以使用 CSS 来“定位”组合图像的特定部分。

    不幸的是,没有用于CSS sprites的“设置并忘记它”的WordPress插件。但是,您可以找到提供帮助的工具,例如CSS Sprite Tool

    1. 将要合并的图像上传到该工具。
    2. 然后,该工具将为您提供一个组合图像文件,以及您上传的每个图像的一些CSS代码。
    3. 将合并的图像文件上传到您的WordPress网站。
    4. 使用CSS代码在您的内容中显示图像。提供的CSS将自动仅选择组合图像文件的适当部分。

    10. 合并CSS和JavaScript文件

    在您的WordPress主题和插件之间,您的站点可能会加载多个CSS样式表和JavaScript文件,这意味着多个HTTP请求仅用于浏览器下载呈现页面所需的CSS和JavaScript。

    为了减少所有这些单独的请求,您可以将这些单独的文件/样式表合并到一个文件/样式表中。这称为文件组合文件串联,具体取决于您使用的工具。

    许多WordPress缓存插件包括合并CSS和JavaScript文件的功能。

    转到WP Rocket设置中的File Optimization选项卡。然后,启用缩小,然后合并文件:

    如何在WP Rocket中结合CSS和JavaScript

    如何在WP Rocket中结合CSS和JavaScript

    如需更详细的外观,请查看我们完整的WP Rocket教程

    您还可以使用Autooptimize合并CSS和JavaScript文件。要合并文件,请转至Settings → Autoptimize并选择以下选项:

    • Aggregate JS-files
    • Aggregate CSS-files

    如需更详细的外观,请查看我们完整的Autoptimize教程

    文件合并并不适合于HTTP/2服务器,HTTP/2旨在更有效地传输多个小文件,这意味着一个大的CSS/JS文件和多个小文件之间的差异较小。

    基本上,如果是HTTP/2服务器您可能不需要执行此步骤来改进页面加载时间。我们建议您仍然对其进行测试,因为它仍然对某些网站有益,但您也可能不会注意到实际页面加载时间的任何差异。

    但是,许多性能测试工具如GTmetrix仍然无法识别HTTP/2,因此GTmetrix可能仍会显示“减少HTTP请求”消息并降低您的分数。但请记住,分数并不像实际页面加载时间那样重要

    11. 延迟渲染阻止JavaScript

    推迟渲染阻止JavaScript本身并不能消除HTTP请求。但是,它正在优化它们的加载方式,这会对您网站的感知加载时间产生相同的影响。

    它还可以帮助处理Google PageSpeed Insights/Lighthouse中的“避免链接关键请求”消息。

    通过推迟对某些文件的请求或异步加载它们,您可以防止某些不重要的资源“阻塞”快速加载站点可见部分所需的资源。

    有关为什么会发生这种情况的更多信息,您可以阅读我们关于理解网页关键渲染路径的指南。

    然后,您可以按照我们的详细指南来消除WordPress上的渲染阻塞资源

    减少HTTP请求的最佳WordPress插件

    如果您正在寻找一些“一体式”WordPress插件来减少HTTP请求,我们推荐上面教程中的两个插件:

    虽然您仍然需要手动评估您的主题和插件以查看它们是否发出了过多的HTTP请求,但这两个插件都可以帮助您在完成清理后优化网站上剩余的所有内容。

    小结

    您站点上的每个单独资源都会添加一个HTTP请求。一张图片是一个HTTP请求,一个CSS样式表是一个HTTP请求,一个字体文件是一个HTTP请求,依此类推。

    如果您使用WordPress,您的主题肯定会添加自己的HTTP请求,许多插件也会添加自己的HTTP请求。您还将收到来自您使用的任何图像和您添加的第三方脚本(例如分析工具)的HTTP请求。

    更多和/或更大的HTTP请求将导致网站速度变慢。这就是为什么当您使用GTmetrix或PageSpeed Insights等速度测试工具时,您通常会看到“减少HTTP请求”或“优化HTTP请求”或“避免链接关键请求”之类的消息。

    要减少您网站上的HTTP请求数量,您可以按照我们上面详述的步骤进行操作。

  • 在WordPress网站服务器托管Web字体的深入指南

    在WordPress网站服务器托管Web字体的深入指南

    在您的WordPress网站上托管和使用字体时,有很多不同的选择。您可以在本地托管它们,也可以使用Google字体(现在大多数主题都集成了Google字体),或使用其他3rd方服务,如Adob​​e Fonts。

    今天,我们想深入探讨在WordPress中托管本地字体具有优势的几个原因。您不仅可以有更多的HTML字体选择,而且有时也有性能优势。查看我们下面的深入教程,了解如何在本地托管您的高级字体以及来自Google字体的任何字体系列。

    什么是Web字体?

    当您浏览某人的WordPress网站时,您会看到两种基本字体,Web安全字体或Web字体。或者他们也可以混合使用两者。

    建议阅读:如何在WordPress中更改字体

    • Web安全字体是预装在设备或操作系统上的字体。Web安全字体的一些示例包括Arial、Times New Roman和Courier New以及通用字体系列,如serif、sans-serif(请参阅现代字体)和等宽字体。这些是您已经看到多年的字体。查看Web安全字体的完整列表
    • Web 字体是未预装在设备上的字体,必须由用户的浏览器下载才能显示。Web 字体的一些示例包括 Google 的 Open Sans 和 Roboto 字体,以及来自 Adob​​e Fonts 的流行的 Proxima Nova 字体。

    Google Fonts是一个开源字体目录,在过去几年中得到了广泛使用。根据BuiltWith的数据,在排名前10,000的网站中,超过45%的网站在其网站上使用Google字体。如果我们查看Google Fonts分析,我们可以看到它们的浏览量超过17千万次。这是很多!Open Sans和Roboto是他们使用最广泛的两个字体系列,Roboto 在过去一年中增长了77%。我们有一篇关于最佳Google字体的文章,请务必查看:  15 种最佳Google 字体(按数字排序)

    谷歌字体统计

    谷歌字体统计

    本地托管字体与第3方

    在我们深入学习本教程之前,重要的是要了解托管本地字体和简单地使用3rd方服务之间的一些优缺点。在本地托管字体意味着您实际上在自己的服务器上拥有字体文件(和/或复制到您的CDN,您也将其用于所有其他资产)。而如果您使用第三方(例如Google Fonts或Adob​​e Fonts),则只需通过链接到外部资产来包含字体。

    本地字体的优势

    1. 更广泛的字体选择

    使用本地字体的一个巨大优势是您可以选择更广泛的字体!虽然Google Fonts和Adob​​e Fonts等3rd方服务拥有庞大的库,但它们无法与高级字体商店相比,您可以在其中购买所需的任何高级网络字体并将其托管在您的网站上。我们实际上将在下面的教程中使用高级字体,您无法从任何3rd方服务中获得。

    2. 可以更好地整合

    由于字体选择范围更广,在本地托管它们可能会让您选择一种与您的品牌更好地集成的字体,以保持整个网站的一致性。这一切都取决于您的设计需求和偏好。

    3. 不必依赖第三方服务

    当您在本地托管字体时,您不必依赖3rd方服务或其服务器。众所周知,诸如Adob​​e Fonts(以前称为Typekit)之类的服务会出现故障,这反过来又会让您看起来很糟糕。对WordPress网站的依赖越少越好。

    4. 完全控制缓存

    通过使用本地字体,您可以完全控制字体文件的缓存。如果您使用Google字体或其他3rd方服务,您可能会看到错误或警告,指出资源缺少缓存验证器或它们需要expires headers。这些是在服务器级别修复的,当它们在3rd方服务器上时,您无法控制修复它们。

    指定缓存验证器

    指定缓存验证器

    5. 更少的请求等于更快的加载时间

    由于必须从第3方下载Web字体,这反过来可能会影响您网站的加载速度。您永远不知道他们的服务器在特定时刻的运行速度。但是,您确实可以通过WordPress主机对此进行更多控制,或者您应该这样做!例如,Adobe Fonts添加了2个外部HTTP请求,并且它还对所有字体格式进行了base64编码。如果您不熟悉字体,则不再需要提供所有字体格式,您只需要WOFF和WOFF2(如果您要进行额外压缩)。

    使用Google Fonts,您还有一个额外的DNS请求来查找fonts.googleapis.com以获取CSS文件。然后,您可以向fonts.gstatic.com发出其他请求以下载字体文件。当您在本地托管所有请求时,所有请求都来自同一个域,并且很可能您不需要另一个CSS文件,因为它将在您的WordPress主题的CSS文件中。

    Google字体HTTP请求

    Google字体HTTP请求

    6. 单个HTTP/2连接

    如果您还没有了解HTTP/2的优势,我们强烈建议您这样做。通过在本地或CDN上托管您的字体,您可以利用单个HTTP/2连接来实现更好的并行性和多路复用。

    本地字体的缺点

    现在我们已经了解了本地字体的优点,但也有一些缺点需要注意。

    1. 谷歌字体可能已经被缓存

    Google Fonts使用自己的CDN,速度很快,毕竟是Google。由于如此多的网站已经在使用Google字体,因此用户很可能已经在浏览器的缓存中拥有该字体。如果您使用更独特、更优质的字体,它实际上可能会增加下载时间。例如,如果有人访问使用Google Fonts中的Roboto字体的网站,它将下载到他们的缓存中。如果他们随后访问您的网站,该网站也使用Roboto,则无需再次下载该字体。但是,如果您使用的是新发布的高级字体,例如Proxima Soft,则很可能需要下载,这可能会增加加载时间。

    这里的关键要点是,如果您打算使用一种未广泛使用的高级字体,您可能应该指望该人的浏览器在他们第一次访问您的网站时需要下载它。注意:如果您使用流行的Google字体并将其托管在本地,例如Roboto,则这不适用,因为浏览器足够智能,可以在缓存中检测到它(无论是从Google加载还是从您的站点本地加载)。

    2. 更复杂

    我们意识到并不是每个人都是WordPress大师。托管本地字体肯定需要更多的设置。例如,WordPress主题可能会在其主题中自动调用Google字体,如果您在本地托管字体,则需要找到一种方法来禁止在您的站点上调用它们。这可能需要与您的主题开发人员联系以获得快速的代码行。这听起来可能很复杂,但我们将尝试在下面的教程中尽可能简单地解释它。

    3. 更谨慎的字体选择

    当您托管本地字体时,您必须选择要支持的字体类型。如果您只选择较新的格式,例如WOFF2,您可能会忽略较旧的浏览器,而这些浏览器将默认使用旧的网络安全字体。例如,根据CanIUse的说法,IE11、Safari和某些版本的Android浏览器可能会在仅使用WOFF2网络字体时出现问题。因此,您可能希望使用WOFF+WOFF 2以确保全面安全。WOFF 2提供了更高的压缩方法,这就是您想要同时使用两者的原因。

    WOFF2浏览器支持

    WOFF2浏览器支持

    使用 3rd 方服务时,几乎不可能把它搞砸,因为它们考虑了开箱即用的广泛浏览器支持。因此,在本地托管时,您必须更加小心您的字体类型选择

    4. 不要没有CDN

    如今,许多站点都在使用Cloudflare或KeyCDN等CDN来加速其资产的交付。这很重要,因为它可以全面减少延迟和DNS查找时间。如果您使用本地字体,而不使用CDN,实际上,与使用Google Fonts或Adob​​e Fonts等服务相比,您的网站速度可能会变慢。原因是所有这些服务都使用CDN来提供它们的字体。所以我们强烈建议,除非您只有一个小地理区域的流量,否则如果您托管自己的字体,请始终使用CDN。当然,请确保您使用的是支持HTTP/2的CDN提供商

    如何在WordPress中托管本地字体

    现在是时候进行有趣的部分了!在WordPress中托管您的本地字体。我们在下面进行了两种不同的选择,一种是使用我们购买的高级字体,第二种实际上是使用 Google 字体并将其托管在本地。在本教程中,我们使用全新的WordPress安装并安装了2017主题。

    1. 如何在本地托管高级字体

    为了在本地托管高级字体,我们选择使用Fontspring和2017年1月发布的新Proxima Soft字体。由Mark Simonson创建的Proxima Nova Soft是原始Proxima Nova字体的更新版本。我们选择Fontspring是因为它们不需要任何3rd方跟踪脚本,而且该字体是一次性购买的,可以在无限数量的网站上使用。购买字体时要非常小心,因为其中很多需要3rd方跟踪脚本,这在某种程度上违背了在本地托管它们的目的。

    Fontspring

    Fontspring

    我们购买了Proxima Soft Regular和Proxima Soft Bold字体。通常,对于大多数网站来说,常规字体类型和粗体就足够了。根据您的站点,您可能还需要斜体和半粗体。

    步骤1

    购买字体后,您将收到一封电子邮件,其中包含字体文件的链接。

    Proxima Soft字体下载

    Proxima Soft字体下载

    步骤2

    每个字体版本,例如粗体和正则都有自己的字体类型,例如WOFF2、WOFF、TTF等。在这个例子中,我们将只使用粗体和粗体正则的WOFF和WOFF2版本,这确保全面的现代浏览器支持。

    本地字体文件

    本地字体文件

    步骤3

    我们获取字体文件并通过FTP将它们上传到我们的WordPress站点到我们创建的名为“fonts”的文件夹中。在此示例中,我们将CDN用于我们的所有资产,以及来自KeyCDN团队的免费CDN Enabler插件。这个插件会自动复制我们刚刚上传到CDN的字体。即使我们说在本地托管它们,CDN仍在引用您的本地资产。重要的部分是您从同一位置提供所有资产,而不是引用多个域(主机)。

    将字体上传到网络服务器

    将字体上传到网络服务器

    步骤4

    您需要在WordPress网站上的CSS中引用新字体。现在很多主题都有自定义CSS面板,或者您可以使用像Simple Custom CSS and JS这样的免费插件。我们将插入以下代码,引用我们的CDN URL。

    @font-face {
    font-family: ‘proxima_softregular’;
    src: url(‘https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff2’) format(‘woff2’),
    url(‘https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff’) format(‘woff’);
    font-weight: normal;
    font-style: normal;
    }
    @font-face {
    font-family: ‘proxima_softbold’;
    src: url(‘https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff2’) format(‘woff2’),
    url(‘https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff’) format(‘woff’);
    font-weight: normal;
    font-style: normal;
    }
    @font-face {
    font-family: ‘proxima_softregular’;
    src: url(‘https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff2’) format(‘woff2’),
    url(‘https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff’) format(‘woff’);
    font-weight: normal;
    font-style: normal;
    }
    @font-face {
    font-family: ‘proxima_softbold’;
    src: url(‘https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff2’) format(‘woff2’),
    url(‘https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff’) format(‘woff’);
    font-weight: normal;
    font-style: normal;
    }
    @font-face {
    font-family: 'proxima_softregular';
    src: url('https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff2') format('woff2'),
    url('https://cdn.wpdev.ink/fonts/proximasoft-regular-webfont.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    }
    @font-face {
    font-family: 'proxima_softbold';
    src: url('https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff2') format('woff2'),
    url('https://cdn.wpdev.ink/fonts/proximasoft-bold-webfont.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    }

    您还需要更新样式以指向新的字体系列。这是我们在2017主题中使用的代码示例。

    body {font-family: ‘proxima_softregular’, Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:‘proxima_softbold’, Arial, sans-serif;}
    body {font-family: ‘proxima_softregular’, Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:’proxima_softbold’, Arial, sans-serif;}
    body {font-family: 'proxima_softregular', Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:'proxima_softbold', Arial, sans-serif;}

    这是来自Simple Custom CSS and JS插件的屏幕截图。

    自定义字体CSS代码

    自定义字体CSS代码

    步骤5

    如果您的WordPress主题已经集成了Google字体,您需要确保禁用它们。否则,您可能会同时加载本地字体和Google字体。由于我们在本教程中使用了2017主题,因此我们使用免费的Disable Google Fonts插件。这仅适用于WordPress中的默认主题。对于大多数主题,您可能需要联系开发人员,他们可以快速提供禁用 Google字体的功能。或者检查他们的文档,通常这是一个非常快速的调整。某些主题甚至可以选择在后端打开或关闭它们。

    就是这样!这是我们的新Proxima Soft字体加载的屏幕截图,用于我们的正文字体和2017主题的标题。

    wordpress网站上的新字体

    wordpress网站上的新字体

    这是我们的HTTP请求的屏幕截图。如您所见,我们只有2个对WOFF2字体的请求,而不是我们之前显示的Google的4个请求。我们在网站上也有WOFF字体,但由于Chrome支持WOFF2,所以改为拉取这些字体。例如,如果我们使用IE 11访问该站点,则会加载WOFF字体。

    本地托管字体的HTTP请求

    本地托管字体的HTTP请求

    2. 如何在本地托管Google字体

    在本地托管字体的第二种方法是实际使用您在Google Fonts上已经喜欢的字体,然后将其移动到您的服务器或CDN。众所周知,Open Sans非常轻巧且速度超快。所以我们将在我们的例子中使用它。

    步骤1

    获取Google字体的最佳方法是使用免费的google-webfonts-helper工具,我们将在本教程中使用该工具。您可能还想查看Font Face Observer项目。您需要做的第一件事是搜索您想要的Google字体,然后选择样式。我们再次选择常规和粗体 (700) 字体样式。

    下载Open Sans网络字体

    下载Open Sans网络字体

    步骤2

    然后你需要选择你想要的浏览器支持。现代浏览器会给你WOFF和WOFF2字体,这正是我们想要的。最好的支持为您提供WOFF、WOFF2、EOT、TTF和SVG。如您所见,它为您提供了可以复制到剪贴板的代码,以及包含字体的下载zip。

    现代浏览器中字体的CSS

    现代浏览器中字体的CSS

    其余的说明与我们上面的高级字体示例非常相似。

    步骤3

    我们获取字体文件并通过FTP将它们上传到我们的WordPress站点到我们创建的名为“fonts”的文件夹中。在此示例中,我们将CDN用于我们的所有资产,以及来自KeyCDN团队的免费CDN Enabler插件。这个插件会自动复制我们刚刚上传到CDN的字体。即使我们说在本地托管它们,CDN仍在引用您的本地资源。重要的部分是您从同一位置提供所有资源,而不是引用多个域(主机)。

    将Google字体上传到网络服务器

    将Google字体上传到网络服务器

    步骤4

    您需要在WordPress网站上的CSS中引用新字体。现在很多主题都有自定义CSS面板,或者您可以使用像Simple Custom CSS and JS这样的免费插件。我们将插入以下代码,引用我们的CDN URL。

    /* open-sans-regular – latin */
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 400;
    src: local(‘Open Sans’), local(‘OpenSans’),
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2’) format(‘woff2’), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff’) format(‘woff’); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }
    /* open-sans-700 – latin */
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 700;
    src: local(‘Open Sans Bold’), local(‘OpenSans-Bold’),
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2’) format(‘woff2’), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff’) format(‘woff’); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }
    /* open-sans-regular – latin */
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 400;
    src: local(‘Open Sans’), local(‘OpenSans’),
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2’) format(‘woff2’), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff’) format(‘woff’); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }
    /* open-sans-700 – latin */
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 700;
    src: local(‘Open Sans Bold’), local(‘OpenSans-Bold’),
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2’) format(‘woff2’), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url(‘https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff’) format(‘woff’); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }
    /* open-sans-regular - latin */
    @font-face {
    font-family: 'Open Sans';
    font-style: normal;
    font-weight: 400;
    src: local('Open Sans'), local('OpenSans'),
    url('https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url('https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }
    /* open-sans-700 - latin */
    @font-face {
    font-family: 'Open Sans';
    font-style: normal;
    font-weight: 700;
    src: local('Open Sans Bold'), local('OpenSans-Bold'),
    url('https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
    url('https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
    }

    您还需要更新样式以指向新的字体系列。这是我们在2017主题中使用的代码示例。

    body {font-family: ‘Open Sans’, Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:‘Open Sans’, Arial, sans-serif;}
    body {font-family: ‘Open Sans’, Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:’Open Sans’, Arial, sans-serif;}
    body {font-family: 'Open Sans', Arial, sans-serif;}
    h1,h2,h3,h4,h5,h6 {font-family:'Open Sans', Arial, sans-serif;}

    这是来自Simple Custom CSS and JS插件的屏幕截图。

    本地托管的Open Sans字体的CSS

    本地托管的Open Sans字体的CSS

    步骤5

    如果您的WordPress主题已经集成了Google字体,您需要确保禁用它们。这似乎有点讽刺,因为我们使用的是Google字体。但您需要这样做的原因是禁用外部请求。由于我们在本教程中使用了2017主题,因此我们使用免费的Disable Google Fonts插件。这仅适用于WordPress中的默认主题。对于大多数主题,您可能需要联系开发人员,他们可以快速提供禁用 Google 字体的功能。或者检查他们的文档,通常这是一个非常快速的调整。某些主题甚至可以选择在后端打开或关闭它们。

    就是这样!这是我们为2017主题的正文字体和标题加载的新Google Open Sans字体的屏幕截图。

    本地托管的Open Sans字体示例

    本地托管的Open Sans字体示例

    这是我们请求的屏幕截图。如您所见,我们只有2个对WOFF2字体的请求,而不是我们之前显示的Google的4个请求。我们在网站上也有WOFF字体,但由 Chrome支持WOFF2,所以改为拉取这些字体。例如,如果我们使用IE 11访问该站点,则会加载WOFF字体。

    打开Sans HTTP请求

    打开Sans HTTP请求

    小结

    就是这样!您现在知道如何从高级字体商店托管本地字体或将Google字体移动到您自己的服务器和/或CDN。所以现在你可以去看看那里所有漂亮的字体,而不必担心它们如何影响性能。他们可能只是为您的WordPress网站改头换面(请务必阅读我们关于WordPress字体的深入指南)!另一个很好的选择是系统字体

  • 什么是谷歌缓存(Google Cache)?

    什么是谷歌缓存(Google Cache)?-1

    Google的网络爬虫不断在互联网上搜索新的和更新的网页。

    当这些爬虫为站点的内容编制索引时,它们不仅仅使用该信息来提供搜索结果。他们备份页面并将它们添加到名为 Google Cache 的统一数据库中。

    您可能已经使用 Google 缓存查看已关闭或​​未正确加载的旧版本网站。但是您知道您也可以使用它来解决您网站上的问题吗?它甚至可以帮助您进行SEO工作。

    本文介绍了Google Cache及其检查方法。我们还将了解Google缓存如何提供帮助 – 以及何时不应过分依赖它。

    1. 什么是谷歌缓存?
    2. 为什么Google缓存很重要
    3. 如何查看Google缓存
    4. 使用Google缓存的原因
    5. Google缓存的限制
    6. 为什么找不到缓存的网页?
    7. 如何解决网站缓存页面的问题
    8. 如何从Google缓存中删除页面

    什么是谷歌缓存?

    Google缓存页面是在Google抓取过程中获取的页面内容的原始HTML备份。谷歌缓存作为一个整体由这些备份页面组成。

    如果您查看网站的缓存版本,它可能看起来很像该网站在被抓取时的样子。但有几个原因有时会出现与您预期不同的情况。

    两个主要原因是:

    • 网页由您的浏览器呈现,而不是由 Google呈现。这可能会导致与网站的当前版本存在差异。
    • JavaScript不会保存到缓存中,因此您网站的某些部分可能会丢失。

    在缓存页面的顶部,您会看到一个横幅,显示三件事:

    1. 缓存页面的URL — 这通常是您要访问的URL。在某些情况下,例如重定向的URL,它会有所不同。
    2. 缓存此版本页面的日期– 您可以查看您正在查看的缓存页面是昨天还是上周创建的。这不一定是最后一次抓取您的网页;我们稍后会讲到。
    3. 版本— 您可以选择查看完整版本、纯文本版本或页面来源。完整版向您显示浏览器呈现的页面。纯文本版本已关闭CSS且不显示图像,但您仍会看到超链接。单击查看源代码会显示页面的源代码:

    闪电博主页谷歌缓存

    闪电博主页的缓存版本示例

    为什么Google缓存很重要

    Google Cache的主要用途是供人们浏览互联网。它允许他们查看已关闭或加载有问题的网页。

    作为网站所有者,Google缓存至关重要还有其他原因。您希望您的网站永远不会关闭或出现故障,但它确实发生了。拥有缓存可使用户可以使用您的内容,即使某些内容无法正常工作。

    您还可以使用您网站的缓存版本来了解您的网站是如何编入索引的并诊断问题。请继续阅读以了解更多信息。

    如何查看Google缓存

    您如何从Google搜索引擎结果访问缓存的Google页面取决于您使用的设备类型。在桌面Web浏览器中,您有两个选择:

    1. 您可以点击指向Google搜索结果中页面缓存版本的链接。
    2. 可以直接进入页面。

    在移动浏览器上,您只能选择使用直接URL。

    从Google搜索结果查看缓存页面

    即使您有从搜索结果页面查看缓存站点的经验,您也可能希望阅读本文,因为Google在2021年初改变了查找缓存链接的方式。

    首先,在Google上搜索您要查看的页面。在搜索结果中页面的URL旁边,您应该会看到一个下拉的三角图标。单击它们,会出现一个标有“页库存档”的弹出窗口:

     

    如何查看链接谷歌缓存

     

    Google 的“页库存档”功能

     

    此功能目前处于测试阶段。它旨在让您在单击之前了解有关站点的更多信息(例如它是否安全)。

    在某些情况下,您可能看不到页库存档按钮。这可能意味着页面没有被缓存;我们稍后会讨论这意味着什么。

    但是,如果您使用的是移动设备,则不会看到任何页面的按钮。在这种情况下,请继续阅读以了解查看缓存页面的其他方法。

    修改URL查看缓存页面

    对于这种方法,您必须知道要查看的页面的URL。只需进入cache:website.xyz搜索栏。

    例如,cache:www.wbolt.com将带您直接访问我们缓存的主页。

    查看谷歌缓存的其他工具

    您不需要任何特殊工具来查看缓存页面;谷歌本身就让它变得非常容易。但是有一些工具具有您可能喜欢的功能。

    Chrome的Web缓存查看器扩展程序允许您右键单击任何链接以查看页面的Google缓存版本和Wayback Machine Web存档版本

    来自Small SEO Tools的Google Cache Checker可让您一次查看最多五个页面缓存的URL和日期:

     

    google cache checker

    谷歌缓存检查器

     

    使用Google缓存查看页面的旧版本

    您的页面说它是昨天缓存的,但您想查看上周的版本。谷歌缓存可以吗?

    抱歉不行。

    Google只能向您显示缓存页面的一个版本。要查看以前的网站版本,您可以使用Wayback Machine之类的工具,这是过去网页版本的存档。

    看看我们以前的样子!

     

    2016年闪电博主页

    Wayback Machine上的2016 闪电博网站。

     

    使用Google缓存的原因

    事实是,还有其他工具可用于完成以下所有工作——在许多情况下,是更复杂的工具

    但是Google缓存因其快速且易于检查而难以匹敌。这使其成为监视网页某些方面的一种有价值的方式。

    作为网站所有者,您可以通过以下五种方式使用Google缓存。

    1.检查重复内容

    有时,您单击缓存的链接并进入与您预期不同的页面。

    发生这种情况的原因之一是重复的内容。当Google看到两个高度相似的页面时,它可能会决定不在索引中将它们分开。这导致只有一个被保存在缓存中。

    Google 在同一链接下缓存多个页面可以提醒您您的网站上有重复的内容。重复的内容不仅会造成令人困惑的缓存情况——它对SEO不利

    请借此机会检查这两个页面并找到区分它们的方法。

    2. 验证Google是否遵循您的规范标签

    也许您网站上的重复内容是有意为之,但您已添加rel=canonical标签来告诉Google抓取哪个版本。

    检查您不想抓取的页面之一的Google缓存版本。您应该被带到规范页面的缓存。

    3. 确保您的营销工作已被抓取

    您已经加大了SEO或内容制作的力度,并且希望确保Google正在将这些更改编入索引。

    快速查看页面的缓存版本可以告诉您它已被抓取。

    请注意,如果您的更改未出现在缓存页面上,则它们可能仍被编入索引。如果您担心,可以前往Google Search Console的URL Inspector进行确认。但是,如果您在缓存中看到您的更新,您就知道它们已被编入索引,并将开始影响您的搜索结果排名。

    4. 密切关注竞争对手网站的变化

    当竞争对手突然占据您的位置时,您会关心自己的事情,享受您在关键关键字的搜索结果顶部的位置。他们做了什么才能到达那里?您可以使用Google缓存来查找。将他们的缓存页面与当前版本进行比较——您将能够看到竞争对手最近所做的更改。

    5. 检索您网站的最新版本

    您应该始终备份您的网站,以防万一。也就是说,有时最坏的情况会发生,即使是最有准备的人。

    虽然您网站的Google缓存版本不会取代完整备份,但它有时确实可以让您在灾难发生之前查看页面的外观。您可以使用它来检索丢失的旧内容或代码。

    Google缓存的限制

    谷歌的缓存可以提供有用的信息,如果有什么东西看起来很奇怪,它可能值得调查。但谷歌缓存有一些已知的限制。

    谷歌缓存不会告诉你你的页面最后一次抓取的时间

    让我们从最大的误解之一开始。

    很多人认为每次Googlebot抓取页面时都会更新缓存。关于这个主题的许多其他文章会告诉您使用缓存来查看您的页面被抓取的频率。

    这不是真的。

    我们知道,因为谷歌的约翰·穆勒 (John Mueller) 在帮助主题中亲自告诉我们,他说:

    一般来说,我们并不总是在每次抓取页面时更新缓存页面。特别是当页面没有显着变化时,我们可能会选择只保留 [原文如此] 上的旧日期。

    这是一个专业提示:如果您正在寻找有关Google抓取您网站的频率、原因以及使用哪些漫游器的信息,请忘记缓存。该数据位于Google Search Console上。您可以在侧边栏中的“设置”下找到抓取报告。

    但是,您只能在域级别查看此信息。Search Console不会告诉您每个页面的抓取频率。

    页面可能无法正确呈现

    幸运的是,在这方面已经取得了一些进展。Google的Web Rendering Service用于在Web上呈现实时页面,它曾经基于过时的Chrome版本。因此,最新的浏览器有时呈现缓存页面的方式与Google呈现的当前页面不同。

    自2019年以来,Google Web Rendering Service使用最新版本的Chrome。

    但是,如果您的Chrome版本较旧,或者您使用的是其他浏览器,则缓存页面可能无法正确呈现。

    另一个渲染问题与缺少资源有关。Google备份的代码可能会引用CSS或JavaScript等资源。如果这些资源不再存在或已更改,则页面将无法正确呈现。

    显示错误页面

    我们已经研究了重复的内容或不正确的规范标签如何导致Google缓存显示错误的页面。正如您可能想象的那样,这限制了查看特定网页缓存的用处。

    某些页面未缓存

    这可能会让人感到意外,但事实证明,许多页面根本没有被缓存。

    一个普遍的误解是,未缓存的网站意味着Google认为它不是必不可少的,但这不一定是真的。接下来,我们将查看页面可能不会被缓存的一些原因。

    为什么我找不到缓存的网页?

    并非所有被抓取的页面都被缓存。如果您的页面没有缓存版本,请不要惊慌!这并不意味着您的页面尚未编入索引。

     

    什么是谷歌缓存(Google Cache)?-1

    404错误表示页面没有缓存版本

     

    如果您担心它确实没有被编入索引,您可以使用Google Search Console的URL Inspector进行检查。

    为了证明索引页面并不总是被缓存,我们回到谷歌的约翰穆勒。在Twitter上,他回答了一位用户询问未缓存页面的问题:

    我们不会缓存我们索引的所有页面,所以这可能会发生。有时需要一段时间,有时我们根本不缓存它。

    当用户问他未缓存的网站是否总是低质量时,他说:

    它可以是各种奇怪的技术怪癖的页面。缓存有点独立,所以它不代表我们索引和排名的内容。

    换句话说,缓存页面不是排名因素。即使您的网页没有缓存版本,您也可以将其置于搜索结果的顶部。

    但是未缓存的页面仍然值得研究。您可以探索几种不同的可能性。

    您的页面是基于JavaScript的

    与其他网页相比,Google可以更轻松地为某些基于JavaScript的网页编制索引。但是许多JavaScript页面最终都没有缓存,甚至没有索引。

    这是因为大多数HTML直到JavaScript执行后才会加载。如果没有可索引的内容,Google将不会创建缓存页面。

    元标记阻止缓存

    在你的网页的HTML代码元标记noindex是指页面无法通过谷歌进行索引,另外noarchive也会阻止谷歌缓存阻止它。任何一个都将导致页面不被谷歌缓存。

    也许这正是你想要的。但是如果您没有意识到页面上有一个noindexornoarchive标记,删除它可以解决您的缓存丢失问题。

    该页面是重复的(或谷歌认为是)

    如果Google确定您的两个页面是重复的,请想办法使它们独一无二。考虑每个页面的不同搜索意图。

    如何解决网站缓存页面的问题

    您的页面不必被缓存,但如果您想实现它,您可以做一些事情。

    将您的页面提交给Google

    如果您担心Google根本没有将您的网页编入索引,您可以查看Google Search Console。

    在Search Console顶部的 URL 检查搜索栏中输入页面的URL。如果是“URL is on Google”的结果,则该页面已被编入索引。如果该页面最近发生了变化,并且您认为Google未将新版本编入索引,则可以单击请求编入索引,请求Google对其重新编入索引。

    您可能还会得到“Page is not on Google”的结果。如果这样做,请向下滚动,您将能够看到有关该页面的一些详细信息。例如,您可以检查该页面是否允许抓取以及用户选择的规范是否与Google选择的规范相匹配。要请求索引,请单击请求索引

     

    什么是谷歌缓存(Google Cache)?-1

    Google Search Console-URL索引请求

    如果你希望您的网站页面URL可以主动提交至Google Search Console,请求编入索引,您可以安装搜索推送插件来实现。

     

    检查常见站点问题

    我们已经介绍了您的页面可能不会被缓存的几个原因,例如大量JavaScript和重复的内容。

    除此之外,鼓励频繁索引的最好办法就是创建一个高质量的站点。确保您已针对移动设备优化了您的网站,并且您的网站速度很高

    如果您的页面加载时间太慢,它甚至会减慢Google的漫游器速度,从而导致索引延迟。

    如何从Google缓存中删除页面

    我们认为Google缓存非常有用,但出于各种原因,您可能不希望将旧版本的网页存储在Google的服务器上。例如,您可能不希望停产产品的页面可用。

    防止页面缓存的一种方法是使用上面提到的noindexnoarchive标签。如果您想保留页面但从不希望它们被缓存,这些标签是理想的永久解决方案。

    您也可以直接要求Google从Google缓存中删除网址。要做到这一点,去谷歌搜索控制台,并单击侧边栏的删除。然后单击新要求。此时,您有两个选项:暂时删除网址清除缓存的网址

    临时删除意味着该网址在大约六个月内不会出现在Google搜索结果中。缓存也会消失。该页面将在再次上线时重新索引并重新缓存(如果您不希望发生这种情况,则必须添加元标记)。

    清除缓存的URL正是它听起来的样子。缓存会被移除,但是当网站被抓取时页面会被再次缓存。

    如果您希望更新页面的旧版本消失,这是一个很好的方法。您还可以通过在更改页面后提交用于索引的页面来推动Google更新页面的缓存。

    小结

    谷歌缓存并不是传闻中的一切。你不能用它来检查你的网站上次被抓取的时间——拥有它不会提高你的搜索引擎排名。有时,它存储的网站版本很奇怪、不完整或完全错误。

    但谷歌缓存对网站所有者有其用处。这是检查您的网站是如何编入索引的一种快速方法,它可以帮助您发现和诊断问题。您还可以使用Google Search Console来提高您的搜索引擎排名

  • 如何提升WordPress评论加载性能

    如何提升WordPress评论加载性能

    你有没有注意到你最受欢迎的博客文章——那些引发大量评论的文章——需要更长的时间才能加载?如果您的评论系统没有经过仔细配置,很高兴看到WordPress评论滚滚而来,但它确实会减慢您的网站速度。

    想想使评论起作用的资源:

    • 查询数据库以提取现有评论,
    • 为每个新评论创建数据库条目,
    • 评论和评论元数据由访问者的浏览器接收和处理,
    • 请求、下载和加载外部资源,例如Gravatar,以及
    • 在许多情况下,必须下载和处理大型JavaScript和jQuery资源,才能使评论系统按预期方式工作。

    结果,繁忙的评论部分会增加网络服务器的负载,增加页面的整体大小,增加所需的HTTP请求数量,并添加额外的JavaScript资源供浏览器应对。无论您是使用原生WordPress评论还是插入了第三方评论系统(如Disqus或Facebook评论),评论都会拖累您网站的速度,您应该优先考虑优化您的网站的性能网站的评论部分。顺便提一句。如果您在处理垃圾评论时遇到问题,请务必阅读我们关于如何阻止WordPress垃圾评论主题的详细指南。

    修复加载缓慢的评论的策略

    如果您发现评论部分正在减慢您最受欢迎的博客文章的加载速度,您可以做一些事情:

    • 完全禁用评论。这肯定会解决问题。但是,如果您的评论部分没有增加任何价值,您真的应该考虑它。如果您的评论部分太忙而使您的网站变慢,那么它可能会增加足够的价值,您不会想将其杀死。查看我们关于如何在WordPress中禁用评论的完整教程。
    • 优化原生WordPress评论。如果您使用的是原生WordPress评论系统,您可以采取一些措施来加快速度。
    • 使用第三方评论系统。如果您的网站托管在廉价且资源匮乏的共享服务器上,那么使用第三方评论系统可能会加快包含大量评论的页面的速度。
    • 延迟加载评论。无论您使用的是WordPress原生评论还是Disqus之类的第三方评论系统,都要找到一种延迟加载评论的方法,以免它们减慢初始页面渲染速度。

    让我们分别考虑每种策略,以便您找出最适合您网站的策略。

    优化原生WordPress评论

    您可以做两件事来加速已经加载了大量原生WordPress评论的网页:限制最初加载的评论数量并使用本地托管的头像。让我们依次看看每个选项。

    限制显示的评论数量

    默认情况下,WordPress设置为在初始页面加载时加载您的所有评论。但是,加载数十甚至数百条评论,每条评论都包括一个独特的头像,确实会扩大您的页面并创建大量额外的HTTP请求。

    您可以非常轻松地减少初始页面加载时加载的评论数量。

    • 转到WordPress管理区域中的设置 > 讨论
    • 查找其他评论设置部分。
    • 选中分页显示评论旁边的复选框,并为您希望在初始页面加载时显示的评论数量添加一个值。
    • 滚动到页面底部单击按钮保存更改

    WordPress管理后台中的评论设置

    WordPress管理后台中的评论设置

    完成这些步骤后,您指定的评论数量将在初始页面加载时显示。

    使用本地托管的头像或在您的CDN上

    WordPress内置了对Gravatar的支持。这意味着任何拥有Gravatar帐户的用户在使用原生WordPress评论系统对博客发表评论时,都会将他们的自定义图像添加为头像。这为评论部分添加了一个很好的个性化元素,但成本很高。加载WordPress评论时,每个唯一的Gravatar都需要一个HTTP请求。因此,如果一个页面加载了来自50个不同评论者的评论,则需要50个HTTP请求才能下载所有这些Gravatar。可以想象,这会对页面速度产生相当大的影响

    如果您认为Gravatar不值得添加HTTP请求,您可以有两种选择。首先,您可以通过转到设置>讨论,找到头像部分并取消选中头像显示框来完全禁用头像。

    如果您不想采取如此激烈的措施,另一种选择是切换到本地托管的头像。为此,请安装WP User Avatar插件。安装完成后,转到Avatars > Settings并选中复选框以Disable Gravatar and use only local avatars。如果您不喜欢WP User Avatar附带的默认头像,woorkup教程中有一张关于使用本地托管头像的干净神秘用户图片,您可以上传并用作默认头像。

    请记住,进行此更改后,所有评论都将使用默认头像显示,除非用户在您的网站上注册并上传自定义头像。

    您最后的选择是将您的Gravatars加载到您自己的CDN上

    使用第三方评论系统

    您可能出于多种原因对切换到第三方评论系统感兴趣。首先,需要考虑服务器负载。创建和加载评论是一个资源密集型过程。如果您的博客评论部分真的很忙,那么将该工作卸载到第三方评论系统将减轻您网站服务器的负载。

    此外,第三方系统提供比原生WordPress评论系统更好的用户体验。他们还可能鼓励更多访问者发表评论,因为已经拥有第三方系统帐户的访问者可以立即发表评论,而无需注册或向您的网站提供详细信息。

    在某些情况下,所有这些好处都会发挥作用。然而,这并不是普遍正确的。

    不是每个人都喜欢第三方评论系统,其他人担心在幕后收集的数据。此外,第三方评论系统比原生 WordPress 评论更快的想法在理论上听起来不错,但实际上事情通常不会这样发展。

    如果您决定使用第三方评论系统,那么这样做是因为您喜欢使用该特定系统的体验,并且因为您确信您的网站访问者会像您一样喜欢它。不要切换到第三方评论以获得可能比现实更理论的感知性能改进。如果您确实跳转到第三方系统,请务必考虑实施下一个策略:延迟加载。

    延迟加载评论

    无论您是使用原生WordPress评论还是第三方系统,延迟加载评论都是一种几乎可以肯定会加快页面加载时间的技术。延迟加载的评论系统会从初始页面渲染中删除,并在访问者到达页面中的某个点时由JavaScript加载,或者通过单击“查看评论”之类的按钮来加载。

    如果实现延迟加载听起来有点技术性,那是因为它是。谢天谢地,你不必弄清楚。您可以使用一些插件来延迟加载您选择的评论系统。

    延迟加载原生WordPress评论

    延迟加载评论的功能并未内置于WordPress核心中。但是,我们推荐的一个很棒的轻量级免费解决方案是Lazy Load for Comments插件

    WordPress插件-Lazy Load for Comments

    WordPress插件-Lazy Load for Comments

    该插件可从WordPress插件目录中获得。因此,您可以直接从WordPress管理区域安装它。这将通过延迟加载所有WordPress头像来减少HTTP请求的数量。配置非常简单。只需安装并在讨论设置下,有两个选项。默认情况下,它设置为“On Scroll”,这是大多数人可能更喜欢的。您还可以将其设置为“On Click”,这将创建一个按钮供访问者在评论加载之前单击。

    滚动或点击

    滚动或点击

    延迟加载本机评论的另一个选项是使用wpDiscuz插件。

    WordPress插件-wpDiscuz

    WordPress插件-wpDiscuz

    该插件可从WordPress插件目录中获得。因此,您可以直接从WordPress管理区域安装它。

    • 转到插件 > 安装插件
    • 搜索“wpDiscuz”,然后选择立即安装按钮。
    • 安装插件后,转到Comments > Settings
    • 向下滚动,直到看到显示Comments loading/pagination type的行,然后选择Lazy loading comments on scrolling单选按钮。
    • 接下来,转到设置 > 讨论
    • 在“其他评论设置”部分中,减少“分页显示评论”字样后面框中的数字。
    • 使用小于10的数字,然后保存更改。
    • 请注意不要选中此行旁边的复选框。如果选中此框,默认的WordPress评论分页将覆盖wpDiscuz实现的延迟加载功能。

    现在,当您访问任何评论超过10条的页面时,只会加载前10条评论。到达评论部分的底部后,其他评论将自动加载。

    延迟加载Disqus

    如果您确实使用Disqus,那么延迟加载Disqus评论非常重要。如果您不这样做,Disqus可能会成为您网站加载速度的真正障碍。但是,与原生WordPress评论相比,延迟加载Disqus评论实际上可以加快您的网站速度

    Disqus Conditional Load插件

    Disqus Conditional Load插件

    Disqus Conditional Load是一个免费插件,可用于在您的网站上延迟加载Disqus。如果您以前从未使用过Disqus,您首先需要注册一个帐户并将新站点添加到Disqus。设置Disqus站点后,通过转到插件> 安装插件,搜索“Disqus Conditional Load”并选择立即安装来安装Disqus Conditional Load 。

    安装完成后,转到Comments > Disqus并选择Upgrade以配置您的数据库以使用Disqus。在以下屏幕上,使用您的Disqus用户名和密码登录Disqus。在下一个屏幕中,选择几分钟前添加的Disqus站点,然后选择“Next按钮。完成最后一步后,Disqus将安装在您的网站上,并配置为在读者到达您博客的评论部分时延迟加载。

    除了延迟加载所有图像(头像)之外,如果您不使用它,它还可以让您禁用计数脚本。因此,您的WordPress网站上的JavaScript调用减少了一次。

    延迟加载Facebook评论

    上面提到的Disqus Conditional Load插件的同一开发者还创建了一个免费插件,用于在您的WordPress网站上延迟加载Facebook评论。Facebook的脚本以使网站陷入瘫痪而闻名,即使这些脚本是异步加载的。

    Lazy Facebook Comments插件

    Lazy Facebook Comments插件

    Lazy Facebook Comments是一个免费插件,您可以使用它来加载滚动评论或单击按钮。这可确保您仅在需要时加载Facebook脚本。您还可以调整评论数量、配色方案、语言、宽度、排序顺序等。

    小结

    评论是大多数博客的核心功能,但新兴的评论部分确实会降低您网站的加载速度。您可以通过优化原生WordPress评论和延迟加载评论以将其从初始页面加载中删除,从而加快评论和WordPress网站的速度。

  • 有损与无损压缩两种图片格式初学者指南

    有损与无损压缩两种图片格式初学者指南

    数字图像是网络的固有部分,没有媒体就很难创建任何内容。不起眼的静止图像是为您的写作提供额外背景的绝佳方式。

    但是,如果没有优化,图像的文件大小可能会很大。有损与无损压缩是一个常见的考虑因素,因为每个都可以减小图像的大小,尽管也需要考虑质量权衡。

    您几乎总是需要对图像应用一些压缩。这样可以将质量保持在您指定的可接受的水平,同时减小文件大小。选择正确的压缩级别将取决于您的最终目标和要求。

    在这篇文章中,我们将研究有损与无损压缩。在整个过程中,我们将讨论图像“成型”的过程、压缩是什么,以及优化图像的许多其他方面。

    1. 有损与无损之间的差异
    2. 数字图像的元素
    3. 网络图像优化的工作原理
    4. 有损压缩的优缺点
    5. 无损压缩的优缺点
    6. 如何在有损与无损之间进行选择
    7. 使用在线压缩服务来优化您的图像

    有损与无损之间的差异

    当涉及到任何数字图像压缩时,有几种不同的格式可供选择。有时这些会根据许多因素而有其他名称。但是,在核心级别,您会发现两种类型:

    • 有损压缩:这里的目的是为图像提供尽可能小的文件大小。因此,图像质量通常在优先级列表中处于低位。
    • 无损压缩:您仍然会发现使用这种压缩格式可以显着减小文件大小,但图像不会受到伪影和其他问题的影响。

    在大多数情况下,您决定使用哪种格式将归结为您的最终目标:您想要小文件,还是专注于保持质量?

    有损压缩将从图像中永久删除它认为不必要的数据。它使用许多不同的技术来实现这一点,从而产生更小的文件大小。

    无损压缩也会删除数据,但如果需要,它可以恢复原始数据。目标是保持高质量,同时减小文件大小。

    有几种方法可以实现这一点,但结果通常是相同的。要找到适合您需求的正确选项,让我们先退后一步,回顾一下图像和压缩的基本知识。

    数字图像的元素

    与软件和Web开发一样,通常有一个“堆栈”将图像从相机拍摄到Web。

    图像以“原始”数据开始(因此名称为RAW)。这类似于应用程序的代码:片段、行和值转换为带有颜色、图像占位符、动态元素等的背景。

    对于图像,RAW文件根据相机制造商、编辑软件、色彩空间算法等呈现略有不同的图像表示。从那里,您编辑图像并将其导出为多种文件格式之一(稍后将详细介绍):

    在Capture One中编辑RAW文件的示例

    在Capture One中编辑RAW文件的示例

    构成标准数字图像的几个不同元素:

    • 文件类型:不同类型将提供可能适合或不适合您的最终图像的质量。关键是为应用程序选择最合适的文件类型。
    • 分辨率:您经常会看到这表示为百万像素 (MP),但您也将使用每英寸像素 (PPI) 或每英寸点数 (DPI)。更高的分辨率提供更高的质量,但它们也会增加初始文件大小
    • 位深度:这个方面决定了图像中的颜色信息。低位深度只会渲染几种颜色,而高位深度可能会一次渲染数百万种颜色。一般来说,越高越好。
    • 尺寸:这是图像占用的物理空间。例如,1,000像素x500像素可以定义图像的总大小。
    • 颜色空间:这是一种确定颜色显示方式的算法。每个色彩空间的设置都不同,这通常取决于摄影师的偏好。

    这些元素结合起来提供不同质量的最终图像。例如,一张高分辨率、高位深度的大型JPEG照片将提供最高的质量和清晰度:

    高质量的图像

    高质量的图像

    相比之下,即使是大尺寸且能够显示多种颜色的图像,在低分辨率下也会显得很差:

    低质量的图像

    低质量的图像

    这种平衡是您在应用压缩之前开发核心图像的方式。但是,您用于图像的格式对最终质量有很大影响。

    网络图像优化的工作原理

    因为图像压缩在一般意义上是相同的,所以您可以将标准规则应用于优化网络图像的方式。

    我们在其他地方介绍了很多这些概念,但值得快速总结以供参考:

    • 使用72PPI分辨率,因为这是网络的标准。出于存档原因,您可以使用更高的PPI/DPI,但我们假设您正在发布到网络。
    • 将图像的“长边”设置为2048像素,因为这对于许多不同的应用程序来说是最佳的。
    • 如果可以选择,请使用8位颜色深度。
    • 在发布之前通过压缩和优化工具运行图像。

    这是一种简单的格式,可以为您提供一致的结果,尽管压缩和优化是我们将在本文其余部分进行扩展的内容。

    为此,让我们看看有损压缩与无损压缩的优缺点。

    图像压缩如何帮助您的Web图像

    一般而言,“压缩”将最小值和最大值压缩在一起。例如,压缩会提高音乐中的最低音量并降低最高音量。这使得平均电平对耳朵更响亮。

    对于图像,压缩更像是一个还原过程。这意味着更加强调从图像中删除数据以减小文件大小,同时保持尽可能高的质量。

    有许多不同的专有算法可以帮助减少图像文件的大小。在许多情况下,这些都是特定公司专有的。您会发现许多“有损”和“无损”压缩标准,每个都有独特的描述符:

    ShortPixel中的压缩选项

    ShortPixel中的压缩选项

    综上所述,应用图像压缩有很多好处,这些好处不是特定格式独有的:

    • 您可以保持较小的文件大小,从而提高您网站的性能。
    • 通过扩展,您站点的服务器将有更少的工作要做,从而影响性能。
    • 小文件大小有助于减少服务器排放。因此,您有助于为可持续和合乎道德的未来做出贡献。
    • 根据您选择的算法和压缩质量,您可以显示近乎完美和可比的质量。

    就像创建可共享的图像一样,使用各种压缩值,使用特定的公司以及选择正确的算法对于找到适合您的结果至关重要。

    有损压缩的优缺点

    有损压缩减少了图像的文件大小,几乎排除了所有其他方面。该算法的工作方式是永久删除数据。这可能和听起来一样具有破坏性。

    虽然我们不会过多地讨论具体细节,但要知道一些数据有损压缩删除在图像中是可见的。这个想法是以更轻的重量提供原始、高质量图像的最佳表示——这意味着一些数据不会被削减。

    一般来说,使用有损压缩有几个好处:

    行列,他们会通过WordPress内幕技巧获得我们的每周时事通讯!

    • 文件大小会很小——在某些情况下,小于10KB。
    • 尽管存在伪像,但在许多情况下,质量损失是可以接受的。

    这给我们带来了使用有损压缩的负面影响——图像质量会随着任何数量的压缩而降低:

    JPEG图像的压缩滑块

    JPEG图像的压缩滑块

    你会发现色带——颜色阴影没有以正确的方式呈现——并且在某些情况下会看到边缘清晰度的损失。颜色较少的图像会显示较少的这种情况,但仍然会出现清晰度的降低。

    此外,图像质量下降是压缩过程的永久特征。这意味着以后无法扭转这种影响。

    尽管有这些缺点,但有损压缩对于Web和您网站的性能来说还是非常出色的。微小的文件大小并不总是会产生颗粒状的图像,尽管您可以(当然)将事情推向极端:

    过度压缩图像的示例

    过度压缩图像的示例

    然而,有损并不是唯一的选择。无损压缩是注重质量的网站所有者的替代方案。

    无损压缩的优缺点

    无损压缩就像标签上所说的那样:它在不影响可见质量的情况下尽可能地压缩图像的文件大小。它通过删除图像元数据来做到这一点,这会占用不必要的空间:

    图像的元数据

    图像的元数据

    无损压缩算法还寻找重复的像素序列,然后编码一个快捷方式来显示它们。例如,以“命令行界面”为例。您通常会定义其首字母缩写词一次,然后使用“CLI”(或您选择的首字母缩写词)以闪电般的速度引用它

    无损压缩的工作方式相同,因为它的破坏性较小。虽然删除元数据是不可逆的,但一些压缩将是可逆的,使其成为适用于多种用途的灵活算法。

    使用无损压缩的优点在于保持质量:

    • 与所有其他算法相比,无损压缩在图像中保留了最高质量。
    • 无损对于存档目的来说非常棒。例如,摄影师可以平衡存储资源与保留最多数据的图像。
    • 无损是视觉艺术的首选压缩算法:摄影、平面设计、数字艺术等。将无损算法与适当的深度和分辨率相结合,几乎可以实现“一对一”的复制。

    然而,关于无损压缩对特定领域的服务程度,有一点需要注意:应用范围很小。这会降低其整体可用性。

    以下是要考虑的无损压缩的其他一些缺点:

    • 如果网站使用许多图像,则无损压缩可能不是显示它们的最佳选择。这是因为在大多数情况下,您会希望在这些类型的情况下重视较小的文件大小。
    • 尽管压缩减小了文件大小,但无损算法不会像有损那样改变图像数据。正因为如此,您可能只会看到尺寸略有减少,而不是极端的瘦身效果。

    接下来,我们将研究最快(并且可能是最好)的方法。

    如何在有损与无损之间进行选择

    至此,您了解有损压缩与无损压缩之间的区别。但是,您可能仍然不知道在您的网站上使用哪种算法最好。

    有两种情况需要考虑:

    1. 对于网络上的大多数用例,可以使用有损压缩。
    2. 如果您想展示摄影或摄影艺术,无损压缩会更好地为您服务。

    这些注意事项依赖于使用标准 Web 图像格式之一,例如JPEG、PNG或GIF。但是,您的压缩需求可能会因HEIC和WebP等更现代的格式而有所不同。

    我们甚至会说,除非您在网站上显示照片,否则有损压缩应该是您的默认选择。WordPress默认压缩图像,这足以说明有损压缩几乎适用于所有应用程序。

    使用在线压缩服务来优化您的图像

    在将图像显示在您的网站上之前,您可以通过多种方式压缩图像。例如,您可以选择在编辑阶段应用压缩。无论如何,这可能是从RAW格式转换的副产品。

    然而,一个流行的选择是许多在线服务之一。每一个都将提供一系列算法和示例性用户界面 (UI)。更重要的是,大多数都有一些免费服务,至少在您提交之前试用该应用程序。

    我们在关于图像优化的文章中介绍了一些选项,尽管这些是连接到应用程序编程接口 (API) 的特定于WordPress的插件。好消息是这些插件中的许多也提供了在线界面。例如,考虑ShortPixel

    ShortPixel接口

    ShortPixel接口

    在这里,您将图像拖到上传器上,然后等待应用程序压缩和处理它们。但是,您需要先选择算法,因为该过程将立即开始。

    选择很简单:两种形式的有损压缩(“有损”和“光泽”),以及无损选项。ShortPixel的界面很好地解释了每种算法之间的区别,您可以在几秒钟内下载图像。

    虽然两者都可以满足您的需求,但Imagify界面看起来比ShortPixel的更流畅、更专业。这里还有三个“压缩级别”——Normal、Aggressive和Ultra:

    Imagify界面

    Imagify界面

    这里的细微差别是Imagify从无损压缩开始,然后逐步发展为具有严重伪影的有损算法。但是,您在其他解决方案中找不到其他几个选项。

    对于初学者,您可以保持图像的EXIF数据完整,甚至在转换后调整它们的大小。这有时是无价的,特别是如果您想应用可能会删除EXIF数据或限制调整图像大小的方式的压缩级别。

    就像它的神话同名一样,Kraken可以处理您的图像并应用各种类型的压缩。大多数用户会选择有损或无损类型。

    Kraken界面

    Kraken界面

    但是,还有一个专家模式:

    Kraken专家模式选项

    Kraken专家模式选项

    这使您可以根据自己的需要调整压缩,以及其他选项。例如,您可以调整JPEG和PNG压缩级别,选择保留图像中的元数据,甚至使用色度子采样来进一步更改颜色。

    小结

    图片看起来像是您网站的一个简单方面:您获取一个文件,将其上传到 WordPress,然后添加一个图片块来显示它。

    但是,在为网络准备图像的过程中还有很多事情可能比您意识到的要多。您选择的压缩格式会影响文件大小、图像质量等。

    这篇文章研究了有损与无损压缩,并总结了你应该选择哪一个。尽管在质量与大小之间走钢丝,但有损压缩对于网络上的大多数用例来说都是完美的。摄影师或那些担心篡改图像质量的人会希望使用无损压缩,尽管在文件大小方面的好处较少。

  • 如何在WordPress中延迟JavaScript解析(4种方法)

    如何在WordPress中延迟JavaScript解析(4种方法)

    您是否通过性能测试工具运行您的WordPress网站,却遇到了延迟在WordPress中解析JavaScript的指令?

    实施此更改可以对您网站的页面加载时间产生积极影响,尤其是对于移动访问者。但是警告可能有点难以理解,这就是为什么我们要准确解释延迟解析JavaScript的含义以及如何在WordPress网站上实现此更改。

    以下是您将在本文中学到的内容:

    1. 在WordPress中延迟解析JavaScript意味着什么?
    2. 如何判断是否需要延迟解析JavaScript
    3. 延迟解析JavaScript的不同方法
    4. 如何在WordPress中延迟JavaScript解析(4种方法)

    如果您只想直接跳到教程,可以单击上面列表中的最后一个链接。

    在WordPress中延迟解析JavaScript意味着什么?

    如果您曾经通过Google PageSpeed Insights、GTmetrix或其他页面速度测试工具运行过您的WordPress网站,您可能会遇到过延迟解析JavaScript的建议。

    但是……这实际上是什么意思?为什么它是一个重要的性能考虑因素?

    基本上,当有人访问您的WordPress网站时,您网站的服务器会将您网站的HTML内容传送到该访问者的浏览器。

    然后访问者的浏览器从顶部开始,并通过代码呈现您的网站。如果在从上到下的移动过程中找到任何JavaScript,它将停止呈现页面的其余部分,直到它可以获取并解析JavaScript文件。

    它会对找到的每个脚本执行此操作,这可能会对您网站的页面加载时间产生负面影响,因为访问者需要在浏览器下载和解析所有JavaScript时盯着空白屏幕。

    如果您网站的核心功能不需要某个脚本(至少在初始页面加载时),您不希望它妨碍加载网站更重要的部分,这就是为什么这些页面速度测试工具总是告诉你推迟对JavaScript的解析。

    那么延迟解析JavaScript是什么意思呢?

    本质上,您的网站会告诉访问者的浏览器等待下载和/或解析JavaScript,直到网站的主要内容已经完成加载。此时,访问者已经可以看到您的页面并与之交互,因此下载和解析该JavaScript的等待时间不再具有如此负面的影响。

    通过加快内容的首屏加载时间,您可以让Google感到高兴,并为您的访问者创造更好、更快的体验。

    如何判断是否需要延迟解析JavaScript

    要测试您的WordPress站点是否需要延迟解析JavaScript,您可以通过GTmetrix运行您的站点。

    GTmetrix会给你打分,还会列出需要推迟的特定脚本:

    在GTmetrix中延迟解析JavaScript测试

    在GTmetrix中延迟解析JavaScript测试

    延迟解析JavaScript的不同方法

    有几种不同的方法可以延迟JavaScript的解析。首先,您可以将两个属性添加到脚本中:

    1. Async
    2. Defer

    这两个属性都允许访问者的浏览器在不暂停HTML解析的情况下下载JavaScript。但是,不同之处在于,虽然async不会暂停HTML解析以获取脚本(如默认行为那样),但它会暂停HTML解析器以在获取脚本后执行脚本。

    使用defer,访问者的浏览器在解析HTML时仍然会下载脚本,但他们会等待解析脚本,直到HTML解析完成。

    与Web一起成长的这张图表很好地解释了这种差异:

    图形解释异步与延迟

    图形解释异步与延迟

    Varvy的Patrick Sexton推荐的另一种选择是,仅在初始页面加载完成后才使用脚本调用外部JavaScript文件。这意味着在初始页面加载完成之前,访问者的浏览器不会下载或执行任何JavaScript。

    最后,您将看到的另一种方法是将JavaScript移动到页面底部。但是,这种方法并不是一个很好的解决方案,因为即使您的页面将很快可见,访问者的浏览器仍会将页面显示为正在加载,直到所有脚本完成。这可能会阻止一些访问者与您的页面进行交互,因为他们认为内容没有完全加载。

    如何在WordPress中延迟JavaScript解析(4 种方法)

    要在WordPress中延迟JavaScript的解析,您可以采取三种主要途径:

    • 插件——有一些很棒的免费和高级WordPress插件可以推迟JavaScript解析。我们将向您展示如何使用两个流行的插件来做到这一点。
    • Varvy方法——如果您精通技术,您可以直接编辑您网站的代码并使用Varvy的代码片段。
    • Functions.php文件——您可以将代码片段添加到子主题的functions.php文件中以自动延迟脚本。

    您可以单击上方直接跳转到您喜欢的方法或通读所有技术以找到最适合您的方法。

    1. 免费的异步JavaScript插件

    Async JavaScript是来自Frank Goossens的免费WordPress插件,他是流行的Autoptimize插件背后的同一个人。

    它为您提供了一种使用异步或延迟延迟解析JavaScript的简单方法。

    首先,您可以从WordPress.org安装并激活免费插件。然后,转到设置 →  Async JavaScript以配置插件。

    在顶部,您可以启用插件的功能并在异步和延迟之间进行选择。记住:

    • Async下载JavaScript,同时仍解析HTML ,但随后暂停HTML解析以执行 JavaScript。
    • Defer在仍然解析HTML的同时下载JavaScript并等待执行它,直到HTML解析完成。

    如何使用异步JavaScript插件

    如何使用异步JavaScript插件

    再往下,你还可以选择如何处理jQuery。许多主题和插件严重依赖jQuery,因此如果您尝试推迟解析jQuery脚本,您可能会破坏您网站的一些核心功能。最安全的方法是排除jQuery,但您可以尝试推迟它。只要确保彻底测试您的网站。

    再往下,您还可以手动包含或排除特定的脚本被延迟,包括一个很好的用户友好功能,让您可以定位在您的网站上活跃的特定主题或插件:

    异步JavaScript包含/排除规则

    异步JavaScript包含/排除规则

    2.使用WP Rocket插件

    除了一堆其他性能优化技术外,WP Rocket还可以帮助您在WP Rocket仪表盘的“File Optimization选项卡中延迟JavaScript的解析。在JavaScript Files部分中查找Load JavaScript deferred选项。

    与Async JavaScript插件一样,WP Rocket还允许您排除jQuery以避免网站内容出现问题:

    如何使用WP Rocket延迟解析JavaScript

    如何使用WP Rocket延迟解析JavaScript

    3. 使用Varvy推荐的方法(代码)

    早些时候,我们提到Varvy的Patrick Sexton建议使用一个代码片段,该代码片段会等待下载和执行JavaScript,直到您的网站完成初始页面加载。

    您可以通过调整Varvy提供的代码片段,然后将脚本添加到您的主题中,紧接在结束</body>标记之前来实现此方法。

    这是来自Varvy的代码:

    <script type=“text/javascript”>
    function downloadJSAtOnload() {
    var element = document.createElement(“script”);
    element.src = “defer.js”;
    document.body.appendChild(element);
    }
    if (window.addEventListener)
    window.addEventListener(“load”, downloadJSAtOnload, false);
    else if (window.attachEvent)
    window.attachEvent(“onload”, downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
    </script>
    <script type=”text/javascript”>
    function downloadJSAtOnload() {
    var element = document.createElement(“script”);
    element.src = “defer.js”;
    document.body.appendChild(element);
    }
    if (window.addEventListener)
    window.addEventListener(“load”, downloadJSAtOnload, false);
    else if (window.attachEvent)
    window.attachEvent(“onload”, downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
    </script>
    <script type="text/javascript">
    function downloadJSAtOnload() {
    var element = document.createElement("script");
    element.src = "defer.js";
    document.body.appendChild(element);
    }
    if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
    else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
    </script>

    确保将“defer.js”替换为您要延迟的JavaScript文件的实际文件名/路径。然后,您可以使用wp_footer钩子通过子主题的functions.php文件注入代码。

    使用这种方法,您可以将Varvy的代码包装成这样:

    /**
    Defer parsing of JavaScript with code snippet from Varvy
    */
    add_action( ‘wp_footer’, ‘my_footer_scripts’ );
    function my_footer_scripts(){
    ?>
    REPLACE_WITH_VARVY_SCRIPT
    <?php
    }
    /**
    Defer parsing of JavaScript with code snippet from Varvy
    */
    add_action( ‘wp_footer’, ‘my_footer_scripts’ );
    function my_footer_scripts(){
    ?>
    REPLACE_WITH_VARVY_SCRIPT
    <?php
    }
    /**
    Defer parsing of JavaScript with code snippet from Varvy
    */
    add_action( 'wp_footer', 'my_footer_scripts' );
    function my_footer_scripts(){
    ?>
    REPLACE_WITH_VARVY_SCRIPT
    <?php
    }

    4.通过functions.php文件延迟JavaScript

    最后,您还可以通过将以下代码片段添加到您的functions.php文件中,将defer属性添加到您的JavaScript文件中,而无需插件:

    function defer_parsing_of_js( $url ) {
    if ( is_user_logged_in() ) return $url; //don’t break WP Admin
    if ( FALSE === strpos( $url, ‘.js’ ) ) return $url;
    if ( strpos( $url, ‘jquery.js’ ) ) return $url;
    return str_replace( ‘ src’, ‘ defer src’, $url );
    }
    add_filter( ‘script_loader_tag’, ‘defer_parsing_of_js’, 10 );
    function defer_parsing_of_js( $url ) {
    if ( is_user_logged_in() ) return $url; //don’t break WP Admin
    if ( FALSE === strpos( $url, ‘.js’ ) ) return $url;
    if ( strpos( $url, ‘jquery.js’ ) ) return $url;
    return str_replace( ‘ src’, ‘ defer src’, $url );
    }
    add_filter( ‘script_loader_tag’, ‘defer_parsing_of_js’, 10 );
    function defer_parsing_of_js( $url ) {
    if ( is_user_logged_in() ) return $url; //don't break WP Admin
    if ( FALSE === strpos( $url, '.js' ) ) return $url;
    if ( strpos( $url, 'jquery.js' ) ) return $url;
    return str_replace( ' src', ' defer src', $url );
    }
    add_filter( 'script_loader_tag', 'defer_parsing_of_js', 10 );

    本质上,这个片段告诉WordPress将defer属性添加到除jQuery之外的所有JavaScript文件。

    它既快速又简单,但它并没有像Async JavaScript插件提供的那样为您提供细粒度的控制。

    小结

    推迟WordPress网站上的JavaScript解析是一个重要的性能考虑因素。

    一旦您使用上述方法之一来延迟WordPress中的JavaScript解析,我们建议您做两件事:

    1. 测试您的网站以确保推迟某些脚本不会破坏首屏内容的关键。同样,这通常发生在jQuery中,这就是为什么很多工具允许您排除jQuery.js。但是,它也可能发生在其他脚本中。
    2. 再次通过GTmetrix运行您的站点,以确保您的站点延迟了尽可能多的脚本(如果排除jQuery,您可能无法获得完美的分数——但您的分数应该会更好)。