如何使用无 Cookie 域:完整指南
已发表: 2023-01-03您的网站是否遭受性能低下和网络流量高的困扰? 在 cookie 通常是罪魁祸首的地方,一种有效的解决方案是使用无 cookie 的域。
尽管 cookie 是我们在线体验的主要基石之一,但它们并不总是像名字所暗示的那样美味。 除了涉及第三方 cookie 的隐私和安全问题外,自动附加到您网站图像和其他静态内容的 cookie 会对页面性能产生严重影响。
值得庆幸的是,可以通过使用无 cookie 域来减轻负担(在本例中为死 cookie)。 在本完整指南中,我们将回顾无 cookie 域的基础知识、它们为何如此有用,以及如何配置您的 WordPress 站点以使用它们。
但首先,让我们深入了解数字 cookie 罐,仔细研究域如何使用 cookie——无论好坏。
什么是无 Cookie 域?
无 Cookie 域是网站的一部分,不会向用户的浏览器发送 Cookie。
但是为什么不一直发送 cookie 呢? 毕竟,给用户尽可能多的 cookie 不是很有礼貌吗?
不必要。 当我们谈论无 cookie 域时,我们当然指的是 HTTP cookie。 与我们最喜欢的烘焙食品不同,HTTP cookie 是网站发送到用户浏览器的小数据包。 虽然不是很好吃,但它们对于允许网站在用户下次访问时“记住”用户非常有用。
但是,就像实际的 cookie 一样,您不想提供太多的 HTTP cookie。 正如我们很快就会看到的,访问者喜欢吃一些饼干——但是超过他们需要的东西会让他们感到呆滞和臃肿。
文什么是 HTTP Cookie?
HTTP cookie 在网络上无处不在。
每当您访问网站时,该网站很有可能会要求您使用浏览器存储 cookie。 除了有关网站本身和您访问过的页面的信息外,cookie 还包括与您和您的浏览器相关联的个人标识符。 该标识符允许网站“记住”您是否已经访问过该页面。
让我们仔细看看这种饼干交换是如何进行的(剧透警告:没有任何迷人的柳条篮子或女童子军参与其中)。
如上图所示,交换可以分为三个步骤:
- 您的浏览器请求网页。 当您在浏览器的地址栏中输入地址(例如域 URL,如“kinsta.com”)或单击网络链接时,您的浏览器会生成一个 HTTP 请求,告诉网站它想要查看该页面。 此请求被发送到托管网站及其页面的网络服务器。
- Web 服务器发送页面和 cookie。 收到您的请求后,网络服务器会发回请求的页面和包含特定信息的 cookie。 正如我们之前提到的,此 cookie 几乎总是包含您和您的浏览器的个人标识符。
- 浏览器从同一服务器请求另一个页面。 现在假设您单击指向网站上另一个页面的链接,例如电子商务网站上的“商店”或“关于我们”。 在这里,您的浏览器向网络服务器发送另一个请求和它最初提供的 cookie。 当 Web 服务器收到此请求时,它会看到之前发送的 cookie 并记住您已经访问过。 有了这些信息,网络服务器就可以提供更加个性化的体验,例如维护活动登录或购物车中的项目。
还有用于不同目的的不同 cookie。 在上面的示例中,参与会话管理的网络服务器维护您的登录名或购物车项目——换句话说,就是您在他们网站上的个人会话。 同样,cookie 也可用于提供个性化体验,例如显示最近的订单、浏览过的商品,甚至是有针对性的广告。
虽然无论走到哪里都能得到饼干听起来不错,但这并不是它吹嘘的一切。 正如我们将在下一节中看到的那样,网站实际上可能会提供过多的 cookie——其中一些很多人宁愿不“吃掉”。
域如何使用 HTTP Cookie
尽管个人标识符是 HTTP cookie 的一个非常重要的用途,但它们并不是唯一的用途。 事实上,cookie 可用于多种目的,以提供更加个性化的网络体验、提供有针对性的内容等。
我们已经介绍了网站和浏览器如何交换 HTTP cookie 以“记住”您。 虽然这有助于维护登录会话和显示购物车项目,但 cookie 也可用于更邪恶(或彻底烦人)的目的。
以下是域使用 HTTP cookie 的一些最常见方式。
- 会话管理。 你现在已经知道这个了。 会话管理通常被认为是 HTTP cookie 最“良性”的用途,因为它的唯一目的是提供一致的用户体验,帮助用户避免重复某些操作。 虽然看到以前的活动可能会给某些用户带来隐私问题,但它相对无害。 当使用 cookie 进行跟踪时,真正的隐私问题就会出现,我们将在稍后介绍。
- 个性化。 会话管理还可用于根据用户偏好和活动对网页进行个性化设置。 例如,在选择了他们选择的语言后,用户将能够在随后的访问中以相同的语言查看网站,而不必每次都更改它。 Cookie 还可以让网站适应不同网络浏览器的特定要求。
- 追踪。 饼干也有争议的一面。 由于您的浏览器存储了网站提供给您的 cookie,因此这些 cookie 可用于在您上网的任何地方跟踪您。 例如,您可能会访问一个网站,该网站会为您的浏览器提供一个跟踪 cookie,让网络上的附属广告商知道您访问了他们的页面。 当广告商注意到此 cookie 时,他们可以针对原始网站显示有针对性的广告,甚至可以将其用作网络攻击的媒介。 在任何情况下,跟踪 cookie 都会让您感觉自己被“跟踪”——这伴随着一系列道德和隐私问题。
值得庆幸的是,大多数 HTTP cookie 用于会话管理和个性化。 然而,即使是最无害的 cookie 也会引起问题。
到目前为止,我们已经探讨了一个页面发送一个 cookie 的想法。 实际上,一个页面通常会发送多个 cookie,通常每个页面元素一个——HTML、图像文件等。 虽然其中一些 cookie 是会话管理和个性化所必需的,但其中许多不是。
因此,可能会发送过多的 cookie,这会导致一些问题。 我们将在下一节讨论这些问题。
吃太多饼干
与大多数文档不同,网页是赋予它们形式、结构和意义的各种元素的集合。 这些元素中的每一个都可以有自己的 cookie。
我们可能以 .pdf 或 .docx 格式查看的常规文档可能看起来像是文本和图像的单一“组合”,而网页是由许多独立的小部分构建的。
例如,当您请求网页时,您实际上是在请求单独的页面组件,例如 HTML(结构)、CSS(样式/格式)、JavaScript(交互性)和媒体(例如图像)。 因此,当您的浏览器接收到一个网页时,它实际上是在接收并重新组合这些组件以在您的屏幕上显示完整的页面。
如果网络服务器也发送 cookie,它可能会在此过程中自动发送一个包含每个元素的 cookie。 对于只有几张图片的简单网页来说,这可能意义不大,但如果网页有数十个甚至数百个不同的组件——并且为每个组件发送一个 cookie,它很快就会变得不堪重负。
就像在现实生活中吃太多 cookie 一样,发送和接收过多的 HTTP cookie 会导致性能低下。 由于发送额外的数据需要额外的时间和资源,因此将 cookie 与每个元素一起发送很容易消耗大量的网络资源。
领域饮食:无饼干
值得庆幸的是,发送过多 cookie 的解决方案使用了一个现实世界的类比:要提高性能,只需吃(读:发送)更少的 cookie。
但是我们应该放弃哪些 cookie? 在大多数情况下,最佳做法是从页面上的任何静态元素中删除 cookie。
静态元素是那些您不希望随着用户行为而改变的元素,例如静态图像或静态文件,如 CSS 文件。 因此,它们不需要附加 cookie,这使得删除它们成为减少网络负载和提高性能的最佳方法之一。
当然,删除 cookie 并不像取消选中“cookie”复选框那么简单。
相反,Web 服务器使用无 cookie 域来分发没有 cookie 的静态内容与有 cookie 的内容。 无 cookie 域通常是一个单独的域(例如子域或 FQDN,如“ static.kinsta.com ”或“ kinsta.com ”)。
值得庆幸的是,当您使用正确的工具时,使用无 cookie 域并不是很难——设置子域并不是唯一的方法。
但在我们动手之前,让我们探讨一下使用无 cookie 域的一些最大好处,以及这会对您的网站(和您的预算)产生多大的影响。
为什么使用无 Cookie 域?
删除多余的 cookie 听起来像是一个小动作——坦率地说,确实如此。
然而,这个小动作带来了一些相当大的好处。 通过仅发送您需要的 cookie,您将减轻网络流量并获得下面发现的许多其他好处 — 其中一些与性能完全无关。
减少不必要的网络流量
使用无 cookie 域的大部分好处源于减少不必要的 cookie 流量的网络负载。
正如我们之前所述,向访问者发送页面元素需要一定数量的网络资源。 除了元素本身之外,每个元素(甚至同一元素的多个部分)都与包含路由信息的响应标头以及其他元素(例如 cookie)一起发送。
尽管 cookie 是相对较小的数据文件,但每次页面请求都必须发送大量 cookie 会很快累加起来。 结果,用户不得不等待更长的时间来加载页面,因为您可怜的 Web 主机不堪重负(并且因此超出了预算)。
但是,如果您使用无 cookie 的域,您将消除大部分因发送不必要的 cookie 而造成的大量访问。
提高网站性能
正如您想象的那样,通过减少 cookie 来减少网络负载会对加载时间和网站性能产生重大影响。
由于每次页面点击都是对 Web 服务器的单独请求,因此用户可能会发现自己等待很长时间只是为了执行基本导航(主页>关于我们>商店等)。 虽然页面元素和 cookie 可能会在第一次加载后被缓存和重用,但如果页面发生变化或用户更深入地浏览您的网站,这仍然会出现问题。
有利于 SEO 和用户体验
通过减少不必要的流量来提高网站性能,您的网站还可能会在搜索引擎优化 (SEO) 以及客户和用户体验方面受益。
客户体验是最明显的好处:加载时间更短,用户可以更快地访问他们想要的内容。 因此,他们将更有可能浏览您的网站(以及您的产品或服务),而不太可能因沮丧而点击离开。
同样的好处也适用于 SEO。 虽然页面加载时间不会直接影响 SEO,但您的跳出率(点击离开您页面的访问者的百分比)肯定会影响。
根据 Unbounce 的一份报告,如果需要等待四秒或更长时间才能加载页面,四分之三的托运人将放弃页面。
这意味着即使删除不必要的 cookie 仅将加载时间缩短一秒钟,您仍然会看到跳出率大幅减少,从而提高搜索排名。
降低托管成本
网络流量最终会花费网络托管费用。
这意味着如果您发送的 cookie 比您需要的多,您还要支付更多的网络托管费用。 如果 cookie 影响页面性能,损害会加倍:除了为更多流量付费外,由于加载时间缓慢导致跳出率增加,您还需要支付更多费用才能获得相同的回报。
值得庆幸的是,像 Kinsta 这样的托管服务可以帮助您充分利用您的页面访问量。 Kinsta 提供 APM 工具和其他功能来帮助您充分利用您的 WordPress 网站。
无 Cookie 未来准备
最后,虽然现在可能不会带来直接好处,但提供无 cookie 内容将帮助您更好地为无 cookie 的未来做好准备。
随着隐私要求(如 GDPR)对 cookie 的争议不断增加,许多主要搜索引擎和技术公司正在寻找完全消除 cookie 的方法。 虽然 cookie 可能不会在一段时间内消失,但它们最终可能会消失——而且您越早准备好,过渡就会越容易。
使用无 Cookie 域的方法
正如我们之前提到的,无 cookie 域的总体思路是在不提供 cookie 的情况下提供静态内容。 虽然创建一个单独的静态域或子域是最直接的方法,但也可以使用 CDN 和一些 WordPress 技巧。
创建一个单独的、无 Cookie 的域
使用此方法,您将创建一个单独的域来托管网站的静态组件,例如图像和 CSS。
虽然您可以注册一个完全独立的域名,但创建现有域名的子域通常更容易且更具成本效益。 大多数无 cookie 域仅使用静态前缀(例如“ static.yourdomain.com ”)作为其子域。
请注意,这仅在您域的“www”版本(例如,“ www.yourdomain.com ”)是您网站根文件中的根域时才有效。
要使子域无 cookie,您通常必须使用特殊代码直接查找和编辑 .htaccess 文件。 然而,正如我们稍后将看到的,简单地重新配置您的 WordPress 站点或使用插件要容易得多。
无论您如何配置无 cookie 子域,您都可以上传静态组件,例如 CSS 组件、图像、文本和 JavaScript。
使用内容分发网络 (CDN)
使用内容分发网络或 CDN 是使用无 cookie 域的一种极其方便的方式。
在这里,您不必创建单独的子域和编辑配置文件,只需告诉您的 CDN 忽略并从静态组件的响应标头中删除 cookie。 这听起来可能有点复杂,但它实际上是许多 CDN 中的一个简单功能。
请注意,并非每个 CDN 都提供此功能。 因此,通常最好更改您网站的配置,除非您已经在使用允许您禁用 cookie 的 CDN。
重新配置您的 WordPress 网站
如果您使用的是 WordPress,那么您很幸运:指定无 cookie 域所需要做的就是更新 wp-config.php 文件中的几行。 向前跳至下一节(配置 WordPress 以使用无 Cookie 域)以获取完整说明。
使用 WordPress 插件
另一个简单的 WordPress 选项是使用插件来创建 WordPress 网站的静态版本。
一个流行的插件是 WP2Static(字面意思是“WordPress-to-Static”)。 安装插件后,只需在您的 WordPress 仪表板中打开它并配置设置以将您的网站导出为静态版本:
配置 WordPress 以使用无 Cookie 域
如上所述,WordPress 提供了一种实现无 cookie 域的简单方法。 该过程归结为几个简单的步骤:
- 添加备用子域和关联的 DNS
- 告诉 WordPress 哪个域将提供静态资产
- 更新现有的 WordPress 数据库记录以反映这个新地址
Kinsta 客户可以使用 MyKinsta 仪表板来完成其中一些任务。 许多其他 WordPress 用户将能够在 cPanel 中执行相同的操作。
我们将在下面介绍两者。
使用 MyKinsta 设置无 Cookie 域
Kinsta 客户可以将子域(或完全不同的域)与 MyKinsta 仪表板中的 WordPress 实例相关联。 许多客户还将使用 MyKinsta 的工具为这些域配置 DNS。
在此示例中,我们将在static.example.com为我们已经在www.example.com上运行的网站创建一个无 cookie 域。
步骤 1. 在 MyKinsta 中创建子域
如果您最初在 Kinsta 上使用通配符选项及其域名(例如: *.example.com )建立了您的 WordPress 站点,那么您已经设置为支持任何子域名。 如果没有,您可以为无 cookie 内容添加新域,如下所示:
- 在左侧菜单中选择WordPress 站点。
- 单击您的 WordPress 站点的名称。
- 在左侧菜单中选择域。
- 单击添加域按钮。
在以下对话框中:
- 输入您的无 cookie 域的名称。
- 单击添加域按钮。
接下来,您的新静态域将需要一个指向您现有网站的 DNS 记录。 如果您通过第三方提供商为您的域管理 DNS,您将使用他们的工具来执行此操作。 如果您的 DNS 由我们提供,请像这样在 MyKinsta 中配置您的新域:
- 在 MyKinta 主页的左侧菜单中选择DNS 。
- 在DNS 管理页面上,向下滚动到DNS 记录块,然后单击添加 DNS 记录按钮。
我们建议将您的新子域作为 CNAME 记录添加到 DNS,这样您就可以仅依赖二级域名来关联 IP 地址。 下面,我们为指向example.com的静态添加 CNAME 记录:
第 2 步。在您的静态子域上禁用 Cookie
现在我们将编辑您的 WordPress 站点的wp-config.php文件,以便从“静态”域提供wp-content
文件夹中的资产,并且仅通过“www”地址提供 cookie。
大多数 Kinsta 客户将使用 FTP/SFTP 客户端登录到他们的 WordPress 站点并将wp-config.php下载到他们的桌面以进行编辑:
使用文本编辑器将以下行添加到wp-config.php文件(将示例域替换为您自己的域):
define("WP_CONTENT_URL", "https://static.example.com/wp-content"); define("COOKIE_DOMAIN", "www.example.com");
保存文件后,将其上传到您的 WordPress 站点,替换之前的版本。
步骤 3. 将现有资产重定向到子域
上述步骤将允许在浏览器从“www”地址加载页面和博客文章等内容时分发 cookie,但会导致媒体上传等内容以及主题中的 JavaScript、CSS 和字体等资产与“静态”相关联“ 领域。
但是,您的网站可能已经包含指向位于“www”地址的这些资产的链接的内容。 您可以通过在 WordPress 数据库本身中进行一些搜索和替换来清理它。
在使用数据库之前,请始终备份您的 WordPress 站点。 完成后:
- 在 MyKinsta 仪表板的左侧菜单中选择WordPress 站点。
- 单击您的 WordPress 站点的名称。
- 在左侧菜单中选择域。
- 在“站点信息”页面上,向下滚动到“数据库访问”块。 (如果需要,您可以在此处复制数据库用户名和密码信息。)
- 单击打开 phpMyAdmin链接。
- 登录到您的 WordPress 数据库。
- 单击SQL选项卡。
运行以下命令以确保您现有帖子中的任何资产链接都指向您的无 cookie 子域(再次确保将域替换为您自己的域):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.example.com/wp-content/', ' static.example.com/wp-content/')
您现在已经在 MyKinsta 的帮助下成功地在 WordPress 中配置了一个无 cookie 域。 使用此域来托管您不想为其发送 WordPress cookie 的任何静态内容,并将您的常规域用于其他所有内容。
使用 cPanel 设置无 Cookie 域
以下是使用 cPanel 或流行的 cPanel 替代品之一完成我们在 MyKinsta 中所做的上述操作的步骤。
步骤 1. 在 cPanel 中创建子域
导航到 cPanel 主页的域部分。 在子域工具中,只需创建一个连接到当前 WordPress 站点顶级域的子域。
这些设置可以在下面看到创建子域static.example.com 。
步骤 2. 在 cPanel 中将子域配置为静态
随着您的新静态子域准备就绪,是时候通过在 WordPress 中提供静态内容来使其名副其实了。
我们将通过编辑您的 WordPress 站点的wp-config.php文件来完成此操作。 访问此文件的最简单方法是使用 cPanel 的文件管理器工具。
在文件管理器中,导航到您网站的public_html 文件夹并选择wp-config.php (1)。 然后,选择编辑选项 (2) 以编辑文件。
在wp-config.php文件中,只需添加以下行(确保将域替换为您自己的域!):
define("WP_CONTENT_URL", "https://static.example.com/wp-content"); define("COOKIE_DOMAIN", "www.example.com");
单击“保存更改”。
第 3 步。将现有帖子重定向到子域
最后,您需要将现有帖子重定向到新的静态子域。 但首先,请务必备份您的 WordPress 网站,以防万一之后无法正常运行。
在 cPanel 的数据库部分,打开PhpMySQL工具。 选择您站点的数据库,然后选择它的_posts表。
单击_posts表的SQL选项卡。 运行以下命令以验证您的帖子 URL 是否定向到您的无 cookie 子域(再次确保将域替换为您自己的域):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.example.com/wp-content/', ' static.example.com/wp-content/')
就是这样! 您现在已经在 cPanel 的帮助下在 WordPress 中设置了一个无 cookie 域。 将无 cookie 域用于图像、CSS、JavaScript 和字体等静态内容,同时允许在您网站的主域上使用 cookie。
概括
使用无 cookie 域是提高站点性能、降低托管成本甚至增强客户体验和 SEO 的一种非常有效的方法。
正如我们所见,在 WordPress 中设置无 cookie 域是有益的。 但是,只有像 Kinsta 这样的托管 WordPress 主机才能充分利用这些优势。
借助用于删除 set-cookie 标头的便捷工具和直接数据库访问以将帖子重定向到静态子域,使用无 cookie 域从未如此简单。 Kinsta 的 APM 工具和其他性能监控功能也可以帮助您跟踪结果。
欲了解更多信息并亲自查看 Kinsta,请立即联系我们或安排免费演示。