云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_牙克石网站建设_价格

小七 141 0

CloudFlare使用智能缓存来避免Bot性能税

我最初是为网络性能日历网站写这篇文章的,这是一个很棒的专家意见资源,让你的网站尽可能快。我们认为CloudFlare用户会感兴趣,所以我们在这里转载了它。享受吧!2004年,我和Lee Holloway启动了蜜罐计划。该网站追踪网络欺诈和滥用行为,主要由报告IP地址声誉的网页组成。虽然我们的资源有限,并试图充分利用这些资源,但我只是查看了Google,它在其索引中列出了3100多万个页面,这些页面构成了现场。Project Honey Pot的页面相对简单且资产较少,但像今天的许多网站一样,它们包含重要的动态内容,这些内容以不可预知的间隔定期更新。为了提供近乎实时的更新,页面需要由数据库驱动。为了最大限度地提高站点的性能,我们从一开始就使用了许多不同的缓存层来存储访问最频繁的页面。李的背景是高性能数据库设计,他研究了谷歌分析(googleanalytics)等服务的报告,以了解访问者是如何在网站中移动的,并建立了缓存,以防止定期访问的页面需要访问数据库。我们原以为自己很聪明,但是,尽管遵循了web应用程序性能设计的最佳实践,但以惊人的频率,该网站将陷入停顿。事实证明,罪魁祸首是一些出乎意料的、隐藏在许多优化web性能的人的视野中的东西:自动机器人。一般的网站看到超过20%的请求来自某种自动机器人。这些机器人包括搜索引擎爬虫等常见的嫌疑犯,但也包括扫描漏洞或收集数据的恶意机器人。我们在CloudFlare上跟踪了网络上成千上万个站点的数据,发现平均约15%的web请求都是由一种或另一种形式的web威胁引起的,其上下波动取决于日期。

CloudFlare使用智能缓存来避免机器人程序性能税

在Honeypot项目的例子中,来自这些机器人程序的流量对性能有显著的影响。因为它们不遵循典型的人类访问模式,它们经常触发缓存中不热的页面。此外,由于机器人通常不会像谷歌分析(googleanalytics)这样的系统发射Javascript信标,所以它们的流量和影响并不是立竿见影的。为了解决这个问题,我们实现了两个不同的系统来处理两种不同类型的机器人。因为我们有关于网络威胁的大量数据,所以我们能够利用这些数据来限制已知的恶意爬虫请求站点上的动态页面。刚刚消除了威胁流量立即产生了影响,并为合法访问者释放了数据库资源。同样的方法对于另一种类型的自动机器人没有意义:搜索引擎爬虫。我们希望蜜罐计划的网页可以通过在线搜索找到,所以我们不想完全阻止搜索引擎爬虫。然而,尽管消除了威胁流量,但谷歌、雅虎和微软的爬虫程序同时访问网站,有时会导致网络服务器和数据库缓慢爬行。我们的解决方案是修改缓存策略。当我们想把最新的结果提供给人类访问者时,我们开始从一个具有较长生存时间(TTL)的缓存中为搜索爬虫提供服务。我们对页面使用了正确的ttl进行了试验,但最终确定了1天是项目蜜罐站点的最佳选择。如果一个页面今天被Google抓取,然后百度在接下来的24小时内请求更少的页面,我们将返回缓存的版本,而不会从数据库中重新生成页面。搜索引擎从本质上看,是互联网的快照。虽然不要向爬虫程序提供虚假的不同内容是很重要的,但是修改缓存策略以尽量减少它们对web应用程序性能的影响,这在良好的web实践中是很好的。自从启动CloudFlare以来,我们采用了在Project Honey Pot中开发的缓存策略,并使其更加智能和动态,以优化性能。我们会根据网站的特点自动调整搜索爬虫TTL,并且非常擅长防止恶意爬虫攻击您的web应用程序。平均而言,我们能够从一个web应用程序卸载70%的请求—考虑到整个CloudFlare配置过程大约需要5分钟,这一点令人震惊。虽然这种性能优势的一部分来自传统的类CDN缓存,但一些最大的缓存胜利实际上来自于处理机器人的深度页面视图,而这些页面视图并没有被传统的缓存策略所缓解。结果可能是戏剧性的。例如,SXSW的网站采用了广泛的传统web应用程序和数据库缓存系统,但能够减轻web服务器和数据库机器的负载这在很大程度上是因为CloudFlare的机器人感知缓存。

CloudFlare使用智能缓存来避免机器人程序性能税

当您调整web应用程序以获得最大性能时,如果您只关注像Google analytics这样的基于信标的分析工具,您可能会错过web应用程序负载的最大来源之一。这就是为什么CloudFlare的分析报告了所有访问者对您站点的访问量。即使没有CloudFlare,挖掘原始服务器日志、了解bot并构建区分不同类别访问者行为的缓存策略都可能是任何站点web性能策略的一个重要方面。