{"id":25332,"date":"2024-12-24T00:00:00","date_gmt":"2024-12-24T00:00:00","guid":{"rendered":"https:\/\/alienroad.com\/google-bilgi-bankasi\/crawling-december-cdns-and-crawling\/"},"modified":"2024-12-24T00:00:00","modified_gmt":"2024-12-24T00:00:00","slug":"crawling-december-cdns-and-crawling","status":"publish","type":"ar_kb","link":"https:\/\/alienroad.com\/google-bilgi-bankasi\/crawling-december-cdns-and-crawling\/","title":{"rendered":"Crawling December: CDNs and crawling"},"content":{"rendered":"<p class=\"gargardate\">Tuesday, December 24, 2024<\/p>\n<p>\n  Content delivery networks (CDNs) are particularly well suited for decreasing latency of your<br \/>\n  website and in general keeping web traffic-related headaches away. This is their primary purpose<br \/>\n  after all: speedy delivery of your content even if your site is getting loads of traffic. The <span>&#8220;D&#8221;<\/span><br \/>\n  in CDN is for delivering or distributing the content across the world, so transfer times to your<br \/>\n  users is also lower than just hosting in one data center somewhere. In this post we&#8217;re going to<br \/>\n  explore how to make use of CDNs in a way that improves crawling and users&#8217; experience on your<br \/>\n  site, and we also look at some nuances of crawling CDN-backed sites.\n<\/p>\n<h2 id=\"recap:-what-is-a-cdn\" tabindex=\"-1\">Recap: What is a CDN?<\/h2>\n<p>\n  CDNs are basically an intermediary between your origin server (where your website lives) and the<br \/>\n  end user, and serves (some) files for them. Historically,<br \/>\n  <strong>CDNs&#8217; biggest focus is caching<\/strong>, meaning that once a user requested a URL from<br \/>\n  your site, CDNs will store the contents of that URL in their caches for a time so your server<br \/>\n  doesn&#8217;t have to serve that file again for a while.\n<\/p>\n<p>\n  <strong>CDNs can drastically speed up your site<\/strong> by serving users from a location that&#8217;s<br \/>\n  close to them. Say, if a user in Australia is accessing a site hosted in Germany, a CDN will serve<br \/>\n  that user from their caches in Australia, cutting down the roundtrip across the globe. Lightspeed<br \/>\n  or not,<br \/>\n  <a href=\"https:\/\/www.youtube.com\/watch?v=gYqF6-h9Cvg\" class=\"external-link\">the distance is still quite large<\/a>.\n<\/p>\n<p>\n  And finally,<br \/>\n  <strong>CDNs are a fantastic tool to protect your site from being overloaded and some security threats<\/strong>.<br \/>\n  With the amount of global traffic CDNs manage, they can construct reliable traffic models to<br \/>\n  detect traffic anomalies and block accesses that seem excessive or malicious. For example, on<br \/>\n  October 21, 2024,<br \/>\n  <a href=\"https:\/\/blog.cloudflare.com\/ddos-threat-report-for-2024-q3\/\" class=\"external-link\">Cloudflare&#8217;s systems<\/a><br \/>\n  autonomously detected and mitigated a 4.2<br \/>\n  <a href=\"https:\/\/wikipedia.org\/wiki\/Data-rate_units#Terabit_per_second\" class=\"external-link\">Tbps<\/a><br \/>\n  <em>(ed: that&#8217;s a lot)<\/em> DDoS attack that lasted around a minute.\n<\/p>\n<h2 id=\"how-cdns-can-help-your-site\" tabindex=\"-1\">How CDNs can help your site<\/h2>\n<p>\n  You might have the fastest servers and the best uplink money can buy and you might not think you<br \/>\n  need to speed up anything, but CDNs can save you money in the long run, especially if your site is<br \/>\n  big:\n<\/p>\n<ul>\n<li>\n    <strong>Caching on the CDN<\/strong>: If resources like media, JavaScript, and CSS, or even your<br \/>\n    HTML are served from a CDN&#8217;s caches, your servers don&#8217;t have to spend compute and bandwidth on<br \/>\n    serving those resources, reducing server load in the process. This usually also means that pages<br \/>\n    load faster in users&#8217; browsers, which<br \/>\n    <a href=\"https:\/\/www.thinkwithgoogle.com\/_qs\/documents\/9757\/Milliseconds_Make_Millions_report_hQYAbZJ.pdf\" class=\"external-link\">correlates with better conversions<\/a>.\n  <\/li>\n<li>\n    <strong>Traffic flood protection<\/strong>: CDNs are particularly good at identifying and<br \/>\n    blocking excessive or malicious traffic, letting your users visit your site even when<br \/>\n    misbehaving bots or no-good-doers would overload your servers.<br \/>\n    Besides flood protection, the same controls that are used to block bad traffic can also be used<br \/>\n    for blocking traffic that you simply don&#8217;t want, be that certain crawlers, clients that fit in a<br \/>\n    certain pattern, or just trolls that keep using the same IP address. While you can do this on<br \/>\n    your server or firewall too, it&#8217;s usually much easier to use a CDN&#8217;s user interface.\n  <\/li>\n<li>\n    <strong>Reliability<\/strong>: Some CDNs can serve your site to users even if your site is down.<br \/>\n    This of course might only work for static content, but that might already be enough to ensure<br \/>\n    they don&#8217;t take their business somewhere else.\n  <\/li>\n<\/ul>\n<p>\n  In short, CDNs are your friend and if your site is large or you&#8217;re expecting (or even already<br \/>\n  receiving!) large amounts of traffic, you might want to find one that fits your needs based on<br \/>\n  factors such as price, performance, reliability, security, customer support, scalability, future<br \/>\n  expansion. Check with your hosting or CMS provider, to learn your options (and whether you already<br \/>\n  use one).\n<\/p>\n<h2 id=\"how-crawling-affects-sites-with-cdns\" tabindex=\"-1\">How crawling affects sites with CDNs<\/h2>\n<p>\n  On the crawling front, CDNs can also be helpful, but they can cause some crawling issues (albeit<br \/>\n  rarely). Stay with us.\n<\/p>\n<h3 id=\"cdns-effect-on-crawl-rate\" tabindex=\"-1\">CDNs&#8217; effect on crawl rate<\/h3>\n<p>\n  Our crawling infrastructure is designed to allow higher crawl rates on sites that are backed by a<br \/>\n  CDN, which is inferred from the IP address of the service that&#8217;s serving the URLs our crawlers are<br \/>\n  accessing. This works well, at least most of the time.\n<\/p>\n<p>\n  Say, you start a stock photo site today and happen to have 1,000,007 pictures in&#8230; stock. You<br \/>\n  launch your website with a landing page, category pages, and detail pages for all of your stuff<br \/>\n  &mdash; so you end up with a lot of pages. We explain in our documentation on<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/optimize-your-crawl-budget\/#crawl-capacity-limit\">crawl capacity limit<\/a><br \/>\n  that while Google Search would like to crawl all of these pages as quickly as possible, crawling<br \/>\n  should also not overwhelm your servers. If your server starts responding slowly when facing an<br \/>\n  increased number of crawling requests, throttling is applied on Google&#8217;s side to prevent your<br \/>\n  server from getting overloaded. The threshold for this throttling is much higher when our crawling<br \/>\n  infrastructure detects that your site is backed by a CDN, and assumes that it&#8217;s fine to send more<br \/>\n  simultaneous requests because your server most likely can handle it, thus crawling your webshop<br \/>\n  faster.\n<\/p>\n<p>\n  However, on the first access of a URL the CDN&#8217;s cache is &#8220;cold&#8221;, meaning that since no one has<br \/>\n  requested that URL yet, its contents weren&#8217;t cached by the CDN yet, so your origin server will<br \/>\n  still need serve that URL at least once to &#8220;warm up&#8221; the CDN&#8217;s cache. This is very similar to<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/crawling-december-http-caching\/\">how HTTP caching works<\/a>, too.\n<\/p>\n<p>\n  In short, even if your webshop is backed by a CDN, your server will need to serve those 1,000,007<br \/>\n  URLs at least once. Only after that initial serve can your CDN help you with its caches. That&#8217;s a<br \/>\n  significant burden on your &#8220;crawl budget&#8221; and the crawl rate will likely be high for a few days;<br \/>\n  keep that in mind if you&#8217;re planning to launch many URLs at once.\n<\/p>\n<h3 id=\"cdns-effect-on-rendering\" tabindex=\"-1\">CDNs&#8217; effect on rendering<\/h3>\n<p>\n  As we explained in our first<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/crawling-december-the-how-and-why-of-googlebot-crawling\/\">Crawling December blog post about resource crawling<\/a>,<br \/>\n  splitting out resources to their own hostname or a CDN hostname (<code>cdn.example.com<\/code>) may<br \/>\n  allow our Web Rendering Service (WRS) to render your pages more efficiently. This comes with a<br \/>\n  caveat though: this practice may negatively affect page performance due to the overhead of a<br \/>\n  connection to a different hostname, so you need to carefully consider<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/core-web-vitals\/\">page experience<\/a> with rendering performance.\n<\/p>\n<p>\n  If you back your main host with a CDN, then you avoid this problem: one hostname to query, and the<br \/>\n  critical rendering resources are likely served from the CDN&#8217;s cache so your server doesn&#8217;t need to<br \/>\n  serve them (and no hit on page experience).\n<\/p>\n<p>\n  In the end, choose the solution that works best for your business: have a separate hostname<br \/>\n  (<code>cdn.example.com<\/code>) for static resources, back your main hostname with a CDN, or do<br \/>\n  both. Google&#8217;s crawling infrastructure supports either option without issues.\n<\/p>\n<h2 id=\"when-cdns-are-overprotective\" tabindex=\"-1\">When CDNs are overprotective <\/h2>\n<p>\n  Due to the CDNs&#8217; flood protection and how crawlers, well, crawl, occasionally the bots that you do<br \/>\n  want on your site may end up in your CDN&#8217;s blocklist, typically in their Web Application Firewall<br \/>\n  (WAF). This prevents crawlers from accessing your site, which ultimately may prevent your site<br \/>\n  from showing up in search results. The block can happen in various ways, some more harmful for a<br \/>\n  site&#8217;s presence in Google&#8217;s search results than others, and it can be tricky (or impossible) for<br \/>\n  you to control since they happen on the CDN&#8217;s end. For the purpose of this blog post we put them<br \/>\n  in two buckets: hard blocks and soft blocks.\n<\/p>\n<h3 id=\"hard-blocks\" tabindex=\"-1\">Hard blocks<\/h3>\n<p>\n  Hard blocks are when the CDN sends a response to a crawl request that&#8217;s an error in some form.<br \/>\n  These can be:\n<\/p>\n<ul>\n<li>\n    <strong>HTTP <code>503<\/code>\/<code>429<\/code> status codes<\/strong>: Sending<br \/>\n    <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/how-http-status-codes-affect-googles-crawlers\/#5xx-server-errors\">these status codes is the preferred way<\/a><br \/>\n    to signal a temporary blockage. It will give you some time to react to unintended blocks by the<br \/>\n    CDN.\n  <\/li>\n<li>\n    <strong>Network timeouts<\/strong>: Network timeouts from the CDN will cause the affected URLs to<br \/>\n    be removed from Google&#8217;s search index, as these<br \/>\n    <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/debug-network-and-dns-errors-for-googles-crawlers\/\">network errors are considered terminal, &#8220;hard&#8221; errors<\/a>.<br \/>\n    Additionally they may also considerably affect your site&#8217;s crawl rate because they signal our<br \/>\n    crawl infrastructure that the site is overloaded.\n  <\/li>\n<li>\n    <strong>Random error message with an HTTP <code>200<\/code> status code<\/strong>: Also known as<br \/>\n    <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/troubleshoot-google-search-crawling-errors\/#soft-404-errors\">soft errors<\/a>,<br \/>\n    this is particularly bad. If the error message is equated on Google&#8217;s end to a &#8220;hard&#8221; error<br \/>\n    (say, an HTTP <code>500<\/code>), Google will remove the URL from Search. If Google couldn&#8217;t<br \/>\n    detect the error messages as &#8220;hard&#8221; errors, all the pages with the same error message may be<br \/>\n    eliminated as duplicates from Google&#8217;s search index. Since Google indexing has little incentive<br \/>\n    to request a recrawl of duplicate URLs, recovering from this may take more time.\n  <\/li>\n<\/ul>\n<h3 id=\"soft-blocks\" tabindex=\"-1\">Soft blocks<\/h3>\n<p>\n  A similar issue may pop up (pun very much intended) when your CDN shows those &#8220;are you sure you&#8217;re<br \/>\n  a human&#8221; interstitials.\n<\/p>\n<p><img decoding=\"async\" class=\"attempt-right\"\n    src=\"https:\/\/alienroad.com\/wp-content\/uploads\/kb-gorsel\/g-a4784825b66d.png\" loading=\"lazy\"\n    alt=\"Crawley confused about being called a human\"><\/p>\n<p>\n  Our crawlers are in fact convinced that they&#8217;re NOT human and they&#8217;re not pretending to be one.<br \/>\n  They just wanna crawl. However when the interstitial shows up, that&#8217;s all they see, not your<br \/>\n  awesome site. In case of these bot-verification interstitials, we strongly recommend sending a<br \/>\n  clear signal in the form of a 503 HTTP status code to automated clients like crawlers that the<br \/>\n  content is temporarily unavailable. This will ensure that the content is not removed from Google&#8217;s<br \/>\n  index automatically.\n<\/p>\n<h3 id=\"debugging-blockages\" tabindex=\"-1\">Debugging blockages<\/h3>\n<p>\n  In case of both hard and soft blockages, the easiest way to check if things are working correctly<br \/>\n  is to use the<br \/>\n  <a href=\"https:\/\/support.google.com\/webmasters\/answer\/9012289\" class=\"external-link\">URL Inspection tool in Search Console<\/a><br \/>\n  and observe the rendered image: if it shows your page, you&#8217;re good; if it shows an empty page, an<br \/>\n  error, or a page with a bot challenge, you might want to talk to your CDN about it.\n<\/p>\n<p>\n  Additionally, to help with these unintended blockages, Google, other search engines, and other<br \/>\n  crawler operators publish<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/verify-requests-from-google-crawlers-and-fetchers\/\">our IP addresses<\/a> to help you to<br \/>\n  identify our crawlers and, if you feel that&#8217;s appropriate, remove the blocked IPs from the WAF<br \/>\n  rules, or even allowlist them. Where you can do this depends on the CDN you&#8217;re using; fortunately<br \/>\n  most CDNs and standalone WAFs have fantastic documentation. Here&#8217;s some we could find with a<br \/>\n  little searching (as of publication of this post):\n<\/p>\n<ul>\n<li>\n    Cloudflare: <a href=\"https:\/\/developers.cloudflare.com\/bots\/get-started\/free\/#visibility\" class=\"external-link\">https:\/\/developers.cloudflare.com\/bots\/get-started\/free\/#visibility<\/a>\n  <\/li>\n<li>\n    Akamai: <a href=\"https:\/\/www.akamai.com\/products\/bot-manager\" class=\"external-link\">https:\/\/www.akamai.com\/products\/bot-manager<\/a>\n  <\/li>\n<li>\n    Fastly: <a href=\"https:\/\/www.fastly.com\/products\/bot-management\" class=\"external-link\">https:\/\/www.fastly.com\/products\/bot-management<\/a>\n  <\/li>\n<li>\n    F5: <a href=\"https:\/\/clouddocs.f5.com\/bigip-next\/20-2-0\/waf_management\/waf_bot_protection.html\" class=\"external-link\">https:\/\/clouddocs.f5.com\/bigip-next\/20-2-0\/waf_management\/waf_bot_protection.html<\/a>\n  <\/li>\n<li>\n    Google Cloud: <a href=\"https:\/\/cloud.google.com\/armor\/docs\/bot-management\" class=\"external-link\">https:\/\/cloud.google.com\/armor\/docs\/bot-management<\/a>\n  <\/li>\n<\/ul>\n<p>\n  If you need your site to show up in search engines, we strongly recommend checking whether the<br \/>\n  crawlers you care about can access your site. Remember that the IPs may end up on a blocklist<br \/>\n  automatically, without you knowing, so checking in on the blocklists every now and then is a good<br \/>\n  idea for your site&#8217;s success in search and beyond. If the blocklist is very long (not unlike this<br \/>\n  blog post), try to look for just the first few segments of the IP ranges, for example, instead of<br \/>\n  looking for <code>192.168.0.101<\/code> you can just look for <code>192.168<\/code>.\n<\/p>\n<p>\n  This was the last post in our<br \/>\n  <a href=\"https:\/\/developers.google.com\/search\/blog#crawling-december\">Crawling December blog post series<\/a>,<br \/>\n  we hope you enjoyed them as much as we loved writing them. If you have&#8230; blah blah blah&#8230; you<br \/>\n  know the drill.\n<\/p>\n<p class=\"byline-author\">\n  Posted by<br \/>\n  <a href=\"https:\/\/developers.google.com\/search\/blog\/authors\/martin-splitt\">Martin Splitt<\/a> and<br \/>\n  <a href=\"https:\/\/developers.google.com\/search\/blog\/authors\/gary-illyes\">Gary Illyes<\/a>\n<\/p>\n<hr class=\"full-width\">\n<h2 id=\"want-to-learn-more-about-crawling-check-out-the-entire-crawling-december-series:\" tabindex=\"-1\">Want to learn more about crawling? Check out the entire Crawling December series:<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Tuesday, December 24, 2024 Content delivery networks (CDNs) are particularly well suited for decreasing latency of your website and in general keeping web traffic-related headaches away. This is their primary purpose after all: speedy delivery of your content even if your site is getting loads of traffic. The &#8220;D&#8221; in CDN is for delivering or [&hellip;]<\/p>\n","protected":false},"menu_order":79919,"template":"","meta":{"footnotes":""},"ar_kb_kategori":[665],"ar_kb_etiket":[],"class_list":["post-25332","ar_kb","type-ar_kb","status-publish","has-post-thumbnail","hentry","ar_kb_kategori-blog"],"_links":{"self":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/25332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb"}],"about":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/types\/ar_kb"}],"version-history":[{"count":0,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/25332\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/media\/27452"}],"wp:attachment":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/media?parent=25332"}],"wp:term":[{"taxonomy":"ar_kb_kategori","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_kategori?post=25332"},{"taxonomy":"ar_kb_etiket","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_etiket?post=25332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}