如何使用无Cookie的域名的完整指南

如何使用无Cookie的域名的完整指南

您的网站是否受到性能低下和网络流量大的困扰?在cookie往往是罪魁祸首的情况下,一个有效的解决方案是使用无cookie域名。

虽然cookie是我们在线体验的主要基石之一,但它们并不总是像其名称所暗示的那样美味。除了涉及第三方cookie的隐私和安全问题外,自动附着在你的网站图像和其他静态内容上的cookie会对页面性能产生严重影响。

值得庆幸的是,通过使用无cookie的域名,有可能减去死的重量(在这种情况下,死的cookie)。在这个完整的指南中,我们将回顾无cookie域名的基础知识,为什么它们如此有用,以及你如何配置你的WordPress网站来使用它们。

但是,首先,让我们把手伸进数字饼干罐,仔细看看域名如何使用cookies–无论好坏。

  1. 什么是无Cookie的域名?
  2. 为什么要使用无Cookie的域名?
  3. 使用无Cookie域名的方法
  4. 配置WordPress以使用无Cookie的域名

什么是无Cookie的域名?

无Cookie域是指网站中不向用户的浏览器发送Cookie的部分。

但为什么不一直发送cookie呢?毕竟,给用户提供尽可能多的cookies不是很礼貌吗?

不一定。当我们谈论无cookie域名时,我们当然是指HTTP cookie。与我们最喜欢的烘烤食品不同,HTTP cookie是网站发送给用户浏览器的小数据包。虽然不是很好吃,但它们对于让网站在用户下次访问时 “记住 “他们是非常有用的。

然而,就像实际的cookies一样,你不希望提供太多的HTTP cookies。正如我们很快就会看到的,访问者喜欢一些cookie–但任何超过他们需要的cookie都会使他们感到迟钝和臃肿。

什么是HTTP Cookies?

HTTP cookies在网络上随处可见。

每当你访问一个网站时,该网站很有可能会要求你在浏览器中存储cookies。除了有关网站本身和你所访问的页面的信息外,cookies还包括一个与你和你的浏览器相关的个人标识符。这个标识符允许网站 “记住 “你是否已经访问过该页面。

让我们仔细看看这个cookie交换是如何进行的(扰流警报:没有涉及任何迷人的柳条篮子或女童子军)。

网站如何向用户的网络浏览器发送HTTP cookie

网站如何向用户的网络浏览器发送HTTP cookie

如上图所示,交换可分为三个步骤:

  1. 你的浏览器请求一个网页。 当你在浏览器的地址栏中输入一个地址(例如 “wbolt.com “这样的域名URL)或点击一个网页链接时,你的浏览器就会产生一个HTTP请求,告诉网站它想查看该网页。这个请求被发送到托管网站及其页面的网络服务器。
  2. 网络服务器会发送页面和cookie。 在收到你的请求后,网络服务器会发回所请求的页面和一个包含某些信息的cookie。正如我们前面提到的,这个cookie几乎总是包括你和你的浏览器的个人标识符。
  3. 浏览器从同一服务器请求另一个页面。 现在让我们假设你点击一个链接到网站上的另一个页面,例如电子商务网站上的 “商店 “或 “关于我们”。在这里,你的浏览器会向网络服务器和最初给它的cookie发送另一个请求。当网络服务器收到这个请求时,它会看到它之前发送的cookie,并记住你已经访问过的网页。有了这些信息,网络服务器可以提供更多的个性化体验,如保持一个活跃的登录或购物车中的物品。

也有不同的cookie用于不同的目的。在上面的例子中,从事会话管理的网络服务器维护你的登录或购物车项目–换句话说,你在他们网站上的个人会话。同样,cookies也可以用来提供个性化的体验,如显示最近的订单、浏览过的项目,甚至是有针对性的广告。

虽然无论你走到哪里,都能得到cookie听起来很好,但这并不是它所描述的一切。正如我们在下一节中所看到的,一个网站实际上有可能提供太多的cookies–其中一些是许多人宁愿不 “吃 “的。

域名如何使用HTTP Cookies

尽管个人识别符是HTTP cookie的一个非常重要的用途,但它们并不是唯一的用途。事实上,cookies可用于广泛的目的,以提供更加个性化的网络体验,提供有针对性的内容,以及更多。

如何利用cookies来侵犯隐私

如何利用cookies来侵犯隐私

我们已经介绍了网站和浏览器如何交换HTTP cookie来 “记住 “你。虽然这对维持登录会话和显示购物车项目很有帮助,但cookies也可用于更邪恶(或直接令人厌恶)的目的。

下面是一些最常见的域名使用HTTP cookie的方式:

  • 会话管理。 你现在已经知道这一点了。会话管理通常被认为是HTTP cookie的最 “良性 “用途,因为它的唯一目的是提供一致的用户体验,帮助用户避免重复某些操作。虽然看到以前的活动可能会给一些用户带来隐私问题,但它相对来说是无害的。真正的隐私问题是在cookies被用于跟踪时出现的,我们很快就会讨论这个问题。
  • 个人化。 会话管理也可以用来根据用户的喜好和活动来个性化网页。例如,在选择了他们所选择的语言后,用户在以后的访问中能够以相同的语言查看网站,而不必每次都进行更改。Cookies还可以使网站适应不同网络浏览器的具体要求。
  • 追踪。 Cookies也有有争议的一面。由于你的浏览器存储了网站给你的cookies,这些cookies可以用来追踪你在网络上的任何地方。例如,你可能访问了一个网站,该网站给你的浏览器一个跟踪cookie,让网络上的附属广告商知道你访问了他们的页面。当广告商注意到这个cookie时,他们可以为原网站显示有针对性的广告,甚至利用它作为网络攻击的载体。在任何情况下,跟踪cookie都会让人觉得你被 “跟踪 “了–这就带来了一系列的道德和隐私问题。

值得庆幸的是,大多数HTTP cookies是用于会话管理和个性化的。然而,即使是最无辜的cookies也会引起问题。

到目前为止,我们已经探讨了一个页面发送一个cookie的想法。在现实中,一个页面通常会发送多个cookie,通常每个页面元素都有一个cookie–HTML、图像文件,等等。虽然其中一些cookie对于会话管理和个性化是必要的,但许多cookie并不是。

因此,有可能发送太多的cookies,这可能会导致一些问题。我们将在下一节中讨论这些问题。

吃了太多的饼干

与大多数文件不同,网页是各种元素的集合,这些元素赋予网页以形式、结构和意义。这些元素中的每一个都可以有自己的饼干。

我们可能以.pdf或.docx格式查看的常规文件可能看起来是文本和图像的单一 “组合”,而网页是由许多独立的小部分组成的。

HTML、CSS和JavaScript是大多数网站的主要组成部分

HTML、CSS和JavaScript是大多数网站的主要组成部分

例如,当你请求一个网页时,你实际上是在请求独立的页面组件,如HTML(结构)、CSS(样式/格式)、JavaScript(交互性)和媒体,如图像。因此,当你的浏览器收到一个网页时,它实际上是在接收和重新组合这些组件,以便在你的屏幕上显示完整的页面。

如果网络服务器也在发送cookie,那么在这个过程中,它可能会随每一个元素自动发送一个cookie。对于一个只有几张图片的简单网页来说,这可能并不意味着什么,但是如果一个网页有几十个甚至几百个不同的组件,并且为每一个组件发送一个cookie,那么它很快就会变得不堪重负。

就像在现实生活中吃了太多的cookie一样,发送和接收太多的HTTP cookie会导致性能低下。由于发送额外的数据需要额外的时间和资源,与每个元素一起发送cookie会很容易消耗大量的网络资源。

Domain Diet: 无Cookie

值得庆幸的是,发送太多cookies的解决方案使用了一个现实世界的比喻。为了提高性能,只需吃(读:发送)更少的cookies。

但是,我们应该放弃哪些cookie呢?在大多数情况下,最好的做法是删除页面上任何静态元素的cookies。

静态元素是那些你不会期望随着用户行为而改变的元素,如静态图像或静态文件,如CSS文件。因此,它们不需要附加cookies,这使得删除它们成为减少网络负载和提高性能的最佳方式之一。

当然,删除cookies并不像取消勾选 “cookies “复选框那么简单。

相反,网络服务器使用无cookie域,将无cookie的静态内容与有cookie的内容分开发布。无cookie域通常是一个单独的域(如子域或FQDN,如 “static.wbolt.com“或 “wbolt.com“)。

显示子域的URL结构

显示子域的URL结构

值得庆幸的是,当你使用正确的工具时,使用无cookie域名并不难–而且设置子域并不是唯一的方法。

但在我们动手之前,让我们探讨一下使用无cookie域名的一些最大好处,以及这对你的网站(和你的预算)会产生多大的影响。

为什么使用无Cookie的域名?

删除额外的cookies听起来可能是一个小动作–坦率地说,它就是这样。

然而,这个小动作带来了一些相当大的好处。通过只发送你需要的cookies,你将减轻你的网络流量,并获得以下许多其他好处–其中一些与性能完全无关。

减少不必要的网络流量

使用无cookie域名的大多数好处来自于减少不必要的cookie流量带来的网络负荷。

正如我们前面所提到的,向你的访问者发送页面元素需要一定量的网络资源。除了元素本身之外,每个元素(甚至是同一元素的多个部分)都会与包含路由信息的响应头以及其他元素(如cookie)一起发送。

即使cookie是相对较小的数据文件,但在每个页面请求中都要发送大量的cookie,很快就会累加起来。结果,用户不得不等待更长的时间来加载页面,因为你可怜的虚拟主机已经不堪重负(结果就是超出预算)。

然而,如果你使用无cookie的域名,你就会消除因发送不必要的cookie而造成的大部分麻烦。

提高网站性能

正如你可能想象的那样,通过减少cookies来减少网络负荷,对加载时间和网站性能有很大影响。

由于每个页面的点击都是对网络服务器的单独请求,用户可能会发现自己只是为了执行基本的导航(主页>关于我们>商店,等等)而长时间等待。虽然页面元素和cookies在第一次加载后可能会被缓存和重用,但如果页面改变或用户更深入地进入你的网站,这仍然会带来问题。

对SEO和用户体验的好处

通过减少不必要的流量来提高网站性能,你的网站也可能看到有关搜索引擎优化(SEO)的好处,当然,还有客户和用户体验

客户体验是最明显的好处:随着加载时间的缩短,用户可以更快地访问他们想要的内容。因此,他们将更有可能探索你的网站(以及你的产品或服务),更不可能在沮丧中点击离开。

同样的好处也适用于SEO。虽然页面加载时间并不直接影响搜索引擎,但你的跳出率–点击离开你的页面的访问者的百分比–肯定会影响。

页面加载速度

页面加载速度

根据Unbounce的一份报告,四分之三的货主如果不得不等待四秒或更长时间来加载一个页面,就会放弃。

这意味着,即使删除不必要的cookies只提高了你的加载时间一秒钟,你仍然会看到跳出的大量减少,并因此提高了你的搜索排名。

降低托管费用

网络流量最终要花钱买虚拟主机费。

这意味着,如果你发送的cookie超过你的需要,你也要支付更多的网络托管费。如果cookie影响了页面性能,损失就会翻倍。除了支付更多的流量,你还需要支付更多的费用,以获得相同的回报,因为缓慢的加载时间导致的跳出率增加。

无Cookie未来就绪

最后,虽然现在可能没有直接的好处,但提供无cookie的内容将帮助你为无cookie的未来做更好的准备。

鉴于隐私要求,如GDPR,对cookie的争议在增加,许多主要的搜索引擎和技术公司正在寻找方法来完全消除cookie。虽然Cookie可能在一段时间内不会消失,但它们最终很可能会消失–你越早做好准备,过渡就会越容易。

使用无Cookie域名的方法

正如我们前面所介绍的,无cookie域名的一般想法是在不传递cookie的情况下传递静态内容。虽然创建一个独立的静态域名或子域是最直接的方法,但通过CDN和一些WordPress的技巧也可以做到。

创建一个独立的、无cookie的域名

用这种方法,你将创建一个单独的域名来托管你的网站的静态组件,如图片和CSS。

虽然你可以注册一个完全独立的域名,但通常在你现有的域名上创建一个子域名更容易,也更有成本效益。大多数无cookie的域名只是使用一个静态前缀(例如,”static.yourdomain.com“)作为其子域。

请注意,这只有在你的域名的 “www “版本(例如,”www.yourdomain.com“)是你的网站根文件中的根域时才会起作用。

为了使子域不被煮熟,你通常必须找到并使用特殊代码直接编辑你的.htaccess文件。然而,正如我们稍后所见,简单地重新配置你的WordPress网站或使用一个插件要容易得多。

无论你如何配置你的无cookie子域,你都可以上传静态组件,如你的CSS组件、图像、文本和JavaScript。

使用内容交付网络(CDN)

使用内容交付网络或CDN是使用无cookie域名的一种极其方便的方式。

在这里,你不必创建单独的子域和编辑配置文件,你可以简单地告诉你的CDN忽略并从你的静态组件的响应头中剥离cookies。这听起来可能有点复杂,但它实际上是许多CDN的一个简单功能。

请注意,不是每个CDN都提供这种功能。因此,除非你已经在使用一个允许你禁用cookies的CDN,否则一般来说,改变你网站的配置会更好。

重新配置你的WordPress网站

如果你使用的是WordPress,你很幸运:要指定一个无cookie的域名,只需要更新你的wp-config.php文件中的几行。跳到下一节(配置WordPress以使用无Cookie的域名)以获得完整的说明。

使用一个WordPress插件

另一个简单的WordPress选项是使用一个插件来创建WordPress网站的静态版本。

一个常用的插件是WP2Static(字面意思是 “WordPress-to-Static”)。安装该插件后,只需在你的WordPress仪表板上打开它,并配置设置,将你的网站导出为静态版本:

WP2Static

WP2Static

配置WordPress以使用无Cookie的域名

如上所述,WordPress提供了一个简单的方法来实现无cookie域名。这个过程可以归结为几个简单的步骤:

  1. 添加一个备用的子域和相关的DNS
  2. 告诉WordPress哪个域名将提供静态资产
  3. 更新现有的WordPress数据库记录以反映这个新地址

Kinsta客户可以使用MyKinsta仪表盘来完成其中的一些任务。许多其他的WordPress用户也可以在cPanel中做同样的事情。

我们将在下文中介绍这两点:

使用MyKinsta来设置无Cookie的域名

Kinsta的客户可以在MyKinsta仪表板上将子域(或完全不同的域)与WordPress实例联系起来。许多客户也会使用MyKinsta的工具来为这些域名配置DNS。

在这个例子中,我们将为我们已经在www.example.com上运行的网站创建一个无cookie的域名static.example.com

第1步:在MyKinsta中创建一个子域

如果你最初在Kinsta建立你的WordPress网站时使用了域名的通配符选项(比如:*.example.com),那么你已经被设置为支持任何子域名称。如果不是,你可以像这样为无cookie的内容添加新的域名。

  • 在左边的菜单上选择WordPress Sites
  • 点击你的WordPress网站的名称。
  • 在左边的菜单上选择Domains
  • 单击 “Add Domain“按钮。

在MyKinsta内添加一个子域

在MyKinsta内添加一个子域

在下面的对话框中:

  • 输入你的无cookie域名的名称。
  • 单击 “Add Domain“按钮。

指定MyKinsta内的新子域

指定MyKinsta内的新子域

接下来,你的新静态域名将需要一个DNS记录,指向你现有的网站。如果你通过第三方供应商管理你的域名的DNS,你将使用他们的工具来完成。如果你的DNS是由我们提供的,在MyKinsta中这样配置你的新域名。

  • 在MyKinta主页的左手菜单上选择DNS
  • DNS Management页面,向下滚动到DNS Records块,点击Add DNS Record按钮。

我们建议将你的新子域作为CNAME记录添加到DNS,这样你就可以只依靠二级域名来与IP地址关联。下面,我们正在为static添加一个CNAME记录,指向example.com

在MyKinsta DNS管理中创建一个CNAME记录

在MyKinsta DNS管理中创建一个CNAME记录。

第2步:禁用你的静态子域上的Cookies

现在我们将编辑你的WordPress网站的wp-config.php文件,使 wp-content 文件夹中的资产从 “静态 “域提供,而cookies只通过 “www”地址提供。

大多数Kinsta客户会使用FTP/SFTP客户端来登录他们的WordPress网站,并下载wp-config.php到他们的桌面上进行编辑:

将wp-config.php文件下载到桌面

将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 Sites
  • 点击你的WordPress网站的名称。
  • 在左边的菜单上选择Domains
  • Site Information页面,向下滚动到数据库访问块。(如果需要,你可以在这里复制数据库用户名和密码信息)。
  • 点击Open phpMyAdmin链接。
  • 登录到你的WordPress数据库。
  • 点击SQL标签。

运行SQL查询以更新WordPress内容中的资产链接

运行SQL查询以更新WordPress内容中的资产链接。

运行下面的命令,以确保你现有文章中的任何资产链接被导向你的无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的域名

以下是在MyKinsta中使用cPanel或流行的cPanel替代品完成我们上述工作的步骤。

步骤1. 在cPanel中创建一个子域

导航到cPanel主页面的Domains部分。在子域工具中,简单地创建一个连接到你当前WordPress网站的顶级域名的子域。

下面可以看到这些设置,以创建子域static.example.com

在cPanel中创建一个子域

在cPanel中创建一个子域

步骤2. 在cPanel中把子域配置成静态的

当你的新的静态子域准备好了,现在是时候让它名副其实了,让它在WordPress中提供静态内容。

我们将通过编辑你的WordPress站点的wp-config.php文件来做到这一点。访问这个文件的最简单方法是在cPanel的File Manager工具中。

File Manager中,导航到你的网站的public_html文件夹并选择wp-config.php (1)。然后,选择Edit选项(2)来编辑该文件。

找到wp-config.php文件

找到wp-config.php文件

wp-config.php文件中,只需添加以下几行(请确保用你自己的域名替换!)。

define("WP_CONTENT_URL", "https://static.example.com/wp-content");
define("COOKIE_DOMAIN", "www.example.com");

点击“Save Changes.”

步骤3. 将现有的帖子重定向到子域

最后,你需要把你现有的帖子重定向到新的静态子域。但首先,一定要备份你的WordPress网站,以防它之后不能正常运行。

在cPanel的Database部分,打开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主机才能充分利用这些好处。

有了移除设置cookie头的便捷工具和直接访问数据库将帖子重定向到一个静态子域,使用无cookie域名从未如此简单。Kinsta的APM工具和其他性能监测功能也可以帮助你跟踪结果。

评论留言