您的网站是否受到性能低下和网络流量大的困扰?在cookie往往是罪魁祸首的情况下,一个有效的解决方案是使用无cookie域名。
虽然cookie是我们在线体验的主要基石之一,但它们并不总是像其名称所暗示的那样美味。除了涉及第三方cookie的隐私和安全问题外,自动附着在你的网站图像和其他静态内容上的cookie会对页面性能产生严重影响。
值得庆幸的是,通过使用无cookie的域名,有可能减去死的重量(在这种情况下,死的cookie)。在这个完整的指南中,我们将回顾无cookie域名的基础知识,为什么它们如此有用,以及你如何配置你的WordPress网站来使用它们。
但是,首先,让我们把手伸进数字饼干罐,仔细看看域名如何使用cookies–无论好坏。
- 什么是无Cookie的域名?
- 为什么要使用无Cookie的域名?
- 使用无Cookie域名的方法
- 配置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
如上图所示,交换可分为三个步骤:
- 你的浏览器请求一个网页。 当你在浏览器的地址栏中输入一个地址(例如 “wbolt.com “这样的域名URL)或点击一个网页链接时,你的浏览器就会产生一个HTTP请求,告诉网站它想查看该网页。这个请求被发送到托管网站及其页面的网络服务器。
- 网络服务器会发送页面和cookie。 在收到你的请求后,网络服务器会发回所请求的页面和一个包含某些信息的cookie。正如我们前面提到的,这个cookie几乎总是包括你和你的浏览器的个人标识符。
- 浏览器从同一服务器请求另一个页面。 现在让我们假设你点击一个链接到网站上的另一个页面,例如电子商务网站上的 “商店 “或 “关于我们”。在这里,你的浏览器会向网络服务器和最初给它的cookie发送另一个请求。当网络服务器收到这个请求时,它会看到它之前发送的cookie,并记住你已经访问过的网页。有了这些信息,网络服务器可以提供更多的个性化体验,如保持一个活跃的登录或购物车中的物品。
也有不同的cookie用于不同的目的。在上面的例子中,从事会话管理的网络服务器维护你的登录或购物车项目–换句话说,你在他们网站上的个人会话。同样,cookies也可以用来提供个性化的体验,如显示最近的订单、浏览过的项目,甚至是有针对性的广告。
虽然无论你走到哪里,都能得到cookie听起来很好,但这并不是它所描述的一切。正如我们在下一节中所看到的,一个网站实际上有可能提供太多的cookies–其中一些是许多人宁愿不 “吃 “的。
域名如何使用HTTP Cookies
尽管个人识别符是HTTP cookie的一个非常重要的用途,但它们并不是唯一的用途。事实上,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(交互性)和媒体,如图像。因此,当你的浏览器收到一个网页时,它实际上是在接收和重新组合这些组件,以便在你的屏幕上显示完整的页面。
如果网络服务器也在发送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结构
值得庆幸的是,当你使用正确的工具时,使用无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
配置WordPress以使用无Cookie的域名
如上所述,WordPress提供了一个简单的方法来实现无cookie域名。这个过程可以归结为几个简单的步骤:
- 添加一个备用的子域和相关的DNS
- 告诉WordPress哪个域名将提供静态资产
- 更新现有的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内添加一个子域
在下面的对话框中:
- 输入你的无cookie域名的名称。
- 单击 “Add Domain“按钮。
指定MyKinsta内的新子域
接下来,你的新静态域名将需要一个DNS记录,指向你现有的网站。如果你通过第三方供应商管理你的域名的DNS,你将使用他们的工具来完成。如果你的DNS是由我们提供的,在MyKinsta中这样配置你的新域名。
- 在MyKinta主页的左手菜单上选择DNS。
- 在DNS Management页面,向下滚动到DNS Records块,点击Add DNS Record按钮。
我们建议将你的新子域作为CNAME记录添加到DNS,这样你就可以只依靠二级域名来与IP地址关联。下面,我们正在为static添加一个CNAME记录,指向example.com:
在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文件中添加以下几行(用你自己的域名替换例子):
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内容中的资产链接。
运行下面的命令,以确保你现有文章中的任何资产链接被导向你的无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中创建一个子域
步骤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文件中,只需添加以下几行(请确保用你自己的域名替换!)。
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工具和其他性能监测功能也可以帮助你跟踪结果。
原文地址:https://www.wbolt.com/use-cookie-free-domains.html