{"id":6110,"date":"2022-01-24T20:55:05","date_gmt":"2022-01-24T20:55:05","guid":{"rendered":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/"},"modified":"2022-01-24T20:55:05","modified_gmt":"2022-01-24T20:55:05","slug":"evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest","status":"publish","type":"post","link":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/","title":{"rendered":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest"},"content":{"rendered":"<p> <a href=\"https:\/\/go.fiverr.com\/visit\/?bta=1052423&nci=17043\" Target=\"_Top\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/fiverr.ck-cdn.com\/tn\/serve\/?cid=40081059\"  width=\"601\" height=\"201\"><\/a>\n<\/p>\n<div itemprop=\"articleBody\">\n<p>In our guide to <a href=\"https:\/\/searchengineland.com\/your-guide-to-core-web-vitals-tactics-using-cloudflare-and-webpagetest-350763\">Core Web Vitals tactics using Cloudflare and WebpageTest<\/a>, we outlined basic requirements for using Cloudflare as a reverse proxy for testing tactical HTML changes with WebpageTest. Our version of the test is simplified from Patrick Meenan\u2019s original concept, which uses <code><a href=\"https:\/\/developers.cloudflare.com\/workers\/runtime-apis\/html-rewriter\" target=\"_blank\" rel=\"noreferrer noopener\">HTMLRewriter()<\/a><\/code> to select an element and modify code.<\/p>\n<p>We\u2019re going in-depth with this tutorial, but if you\u2019re just looking for the Cloudflare Worker script, you can find it <a href=\"https:\/\/gist.github.com\/deckarts\/fcc34380111f069c92baccf3b883bfd5\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n<p>Our first installment noted that it won\u2019t keep up with changes at Search Engine Land. The LCP was hard-coded and we would need it to interact with a dynamic page and its values. While WebpageTest has, at the time of publication, the most well-thought-out waterfall chart and more details than you can imagine, it isn\u2019t the fastest way to get results.<\/p>\n<h2>Lighthouse from the Command Line<\/h2>\n<p>Running the Lighthouse CLI (Command Line Interpreter) program with <code>--extra-headers<\/code> options needed for the test allows us to also simulate standard settings for Core Web Vitals the way we did with WebpageTest. You\u2019ll need to work from a terminal emulator. <\/p>\n<p>The easiest way to install Lighthouse is with NPM (Node Package Manager). Once installed, run the following statement:<\/p>\n<p><code>$ lighthouse https:\/\/sel.deckart.workers.dev \\<\/code><br \/><code>--extra-headers \"{\\\"x-host\\\":\\\"searchengineland.com\\\", \\\"x-bypass-transform\\\":\\\"false\\\"}\" \\<\/code><br \/><code>--form-factor=mobile \\<\/code><br \/><code>--throttling.cpuSlowdownMultiplier=4 \\<\/code><br \/><code>--only-categories=performance \\<\/code><br \/><code>--view<\/code><\/p>\n<h2>The evolution of our Testbed<\/h2>\n<p>Our aim is to demonstrate an evolution from an original concept for a testbed to a project suitable for our future events and articles. The testbed should not be confined to running performance evaluations; that\u2019s just where we\u2019ll start. But, it has to work fairly well for a number of situations with websites and this can prove pretty difficult. We\u2019ll supply methods to help.<\/p>\n<p>For example, sites often use relative paths to asset resources rather than absolute (with HTTP protocol and all). We\u2019ll supply a block to match these so HTML will generally work. After applying this, when things still don\u2019t work, switching troublesome references between the test and test subject hostnames often does the trick, even for CORS policy violations.<\/p>\n<p>That\u2019s where the beauty of Cloudflare\u2019s <code>HTMLRewriter()<\/code> really shines. Site-wide assets are usually loaded as page HEAD child elements. With flexibility matching like jQuery, even similar syntax, we can select child elements of HEAD when necessary. You can use XPath selectors and regular expressions. Let\u2019s keep it simple and look for relative paths that start with \u201c\/\u201d for <code>src<\/code> or <code>href<\/code> attributes:<\/p>\n<pre class=\"wp-block-code\"><code>return new HTMLRewriter()\n  .on('link', {\n    element: el =&gt; {\n      const link_href = el.getAttribute('href');\n      if (link_href &amp;&amp; link_href.startsWith('\/')) {\n        el.setAttribute('href', 'https:\/\/' + host + link_href);\n      }\n    }\n  })\n  .on('script', {\n    element: el =&gt; {\n      const script_src = el.getAttribute('src');\n      if (script_src &amp;&amp; script_src.startsWith('\/')) {\n        el.setAttribute('src', 'https:\/\/' + host + script_src);\n      }\n    }\n  })\n  .on('img', {\n    element: el =&gt; {\n      const img_src = el.getAttribute('src');\n      if (img_src &amp;&amp; img_src.startsWith('\/')) {\n        el.setAttribute('src', 'https:\/\/' + host + img_src);\n      }\n    }\n  })<\/code><\/pre>\n<p>We\u2019re leveraging the power (and cost effectiveness) of Edge Computing to conduct seriously useful tests. Modify the <code>x-host<\/code> request header to load different sites in the testbed and open DevTools. Transformations may not be needed, but your mileage will vary. Frontend experience gives you a feel for it.<\/p>\n<p>Comment blocks like switches will fail and require a little experimentation (which may be all you need). For example, some asset references may be spelled without HTTP colon. You would need to write another conditional to check for paths where <code>href<\/code> or <code>src<\/code> starts with \u201c\/\/\u201d and then modify the selected element value in the script. Try to end up with no console errors the actual site doesn\u2019t have.<\/p>\n<h2>Lighthouse gives you LCP<\/h2>\n<p>It\u2019s relatively easy to retrieve LCP references using Lighthouse, PageSpeed Insights or WebpageTest. Presuming the LCP qualifies for preload, like when it\u2019s not a <code>&lt;div&gt;<\/code> or a <code>&lt;p&gt;<\/code>, and when it isn\u2019t already getting preloaded, provide our script the <code>href<\/code> value by URL \u2018query param\u2019 structure (or return HTML with a form) to test for changes to a page\u2019s LCP timing with preload.<\/p>\n<p>Most technical SEO practitioners are handy at modifying request query parameters to process different things in server-side programs, like Google search results. Using the same interface, our script will preload the LCP using the path you apply in the \u201clcp\u201d parameter value and passes it to a function called <code>addPreloadAfter()<\/code> for interpolating HTML for the test.<\/p>\n<pre class=\"wp-block-code\"><code>async function handleRequest(request) {\n  const { searchParams } = new URL(request.url);\n  let lcpHref = searchParams.get(\"lcp\");\n\n  return new HTMLRewriter()\n    .on('title', addPreloadAfter(lcpHref))\n  .transform(newResponse);\n}<\/code><\/pre>\n<p>The <code>addPreloadAfter()<\/code> function takes our \u201clcpHref\u201d value from <code>searchParams.get()<\/code> and processes it as \u201chref\u201d to build HTML.<\/p>\n<pre class=\"wp-block-code\"><code>const addPreloadAfter = (href) =&gt; ({\n  element: (el) =&gt; {\n    el.after(`&lt;link rel=\"preload\" href=\"https:\/\/searchengineland.com\/${href}\" \/&gt;`, { html: true });\n  }\n});<\/code><\/pre>\n<p>Notice the option \u201chtml: true\u201d? This is an option setting Cloudflare requires for safety when using Workers with <code>HTMLRewriter()<\/code> <a href=\"https:\/\/developers.cloudflare.com\/workers\/runtime-apis\/html-rewriter#methods\" target=\"_blank\" rel=\"noreferrer noopener\">API methods<\/a> that write HTML. You are going to want to learn its capabilities and constraints for coding your own tests.<\/p>\n<h2 id=\"h-cloudflare-s-kv\">Cloudflare\u2019s KV<\/h2>\n<p>If we\u2019re ever going to do anything remotely interesting, we need a way to store persistent data between script executions. Luckily, Cloudflare also offers a neat little data storage mechanism called <a href=\"https:\/\/developers.cloudflare.com\/workers\/runtime-apis\/kv\" target=\"_blank\" rel=\"noreferrer noopener\">KV<\/a> that we can bind with our Workers to store a small data \u2018<code>value<\/code>\u2018 field, accessible by its \u2018<code>key<\/code>.\u2019 It\u2019s surprisingly easy to comprehend and implement. To demonstrate how to use it we\u2019ll write a quick little hit counter.<\/p>\n<pre class=\"wp-block-code\"><code>const counter = parseInt(await KV.get('counter') || 0);\n\nif (!host || counter &gt; 1000) {\n  return new Response('hit limit exceeded or x-host missing', {status: 403});\n} else {\n  await KV.put(\"counter\", counter + 1);\n}<\/code><\/pre>\n<p>Find the KV navigation menu item under Workers.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"352\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"data:image\/svg+xml,%3Csvg%20xmlns=\" http:=\"\" alt=\"The KV Namespace interface.\" class=\"wp-image-378645\" data-lazy-data-srcset=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-800x352.png 800w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-600x264.png 600w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-200x88.png 200w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-768x338.png 768w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-1536x675.png 1536w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers.png 1692w\" data-lazy-data-sizes=\"(max-width: 800px) 100vw, 800px\" data-lazy-src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-800x352.png\"\/><noscript><img decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"352\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-800x352.png\" alt=\"The KV Namespace interface.\" class=\"wp-image-378645\" data-srcset=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-800x352.png 800w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-600x264.png 600w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-200x88.png 200w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-768x338.png 768w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers-1536x675.png 1536w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-bind-workers.png 1692w\" data-sizes=\"auto, (max-width: 800px) 100vw, 800px\"\/><\/noscript><figcaption>Add a KV Namespace and counter variable with zero for a starting value<\/figcaption><\/figure>\n<\/div>\n<p>Once you\u2019ve created a Namespace (\u201cSEL\u201d is used in the example above), use the KV dashboard UI to create your first Key (\u2018<code>counter<\/code>\u2018 in the above case) and assign a starting <code>value<\/code>. Once set up, navigate back to the Worker dashboard for the interface required to bind our new KV Namespace with Cloudflare Workers so they can access Keys and the associated stored Values. <\/p>\n<h2 id=\"h-bind-kv-namespaces-to-workers\">Bind KV Namespaces to Workers<\/h2>\n<p>Choose the Worker you want to bind with and click its Settings menu to find the submenu for Variables (directly under General). Notice you can define environment variables, Durable Object Bindings (which we\u2019ll explore in a future installment), and finally KV Namespace Bindings. Click Edit Variables and add the Variable you want to use in script.<\/p>\n<p>In the following case, you can see our redundantly named \u2018<code>KV<\/code>\u2018 variable that we\u2019ll be using in the associated Worker script, the one we navigated from. Our use of \u2018<code>KV<\/code>\u2018 was named for illustrative purposes. Select it from the dropdown, save it, and you\u2019ll immediately be able to use your <code>variable<\/code> in the script. Create as many scripts and KV Namespaces combinations as you like.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"460\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"data:image\/svg+xml,%3Csvg%20xmlns=\" http:=\"\" alt=\"KV Namespace bindings.\" class=\"wp-image-378646\" data-lazy-data-srcset=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-800x460.png 800w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-588x338.png 588w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-197x113.png 197w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-768x441.png 768w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings.png 1416w\" data-lazy-data-sizes=\"(max-width: 800px) 100vw, 800px\" data-lazy-src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-800x460.png\"\/><noscript><img decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"460\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-800x460.png\" alt=\"KV Namespace bindings.\" class=\"wp-image-378646\" data-srcset=\"https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-800x460.png 800w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-588x338.png 588w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-197x113.png 197w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings-768x441.png 768w, https:\/\/searchengineland.com\/figz\/wp-content\/seloads\/2022\/01\/wpt-sel-kv-namespace-bindings.png 1416w\" data-sizes=\"auto, (max-width: 800px) 100vw, 800px\"\/><\/noscript><figcaption>KV Namespace Bindings.<\/figcaption><\/figure>\n<\/div>\n<p>The trick is remembering to bind a Variable you want used in the Worker. It\u2019s so flexible that you can feel free to munge about and make a mess at first. You\u2019ll probably be able to organize it into something cohesive at a later date, which is exactly what you want for being able to prototype applications or author Microservices for use in your applications.<\/p>\n<p>Once you\u2019ve gotten your KV service and starting values set up, navigate back to the Worker and open the built-in \u201cQuick Edit.\u201d Replace what\u2019s there with <a href=\"https:\/\/gist.github.com\/deckarts\/fcc34380111f069c92baccf3b883bfd5\" target=\"_blank\" rel=\"noreferrer noopener\">this updated gist<\/a>, which includes the hit counter, and everything else written about in this post. Click \u201cSave and Deploy\u201d and you should have the service up and running at your publicly available, Workers demo URL.<\/p>\n<h2>Why we care<\/h2>\n<p>Our <a href=\"https:\/\/searchengineland.com\/your-guide-to-core-web-vitals-tactics-using-cloudflare-and-webpagetest-350763\">original guide<\/a> was meant to whet your appetite, get you excited to start and excited for more valuable learning. In order to supply that, we have a free platform and code combination that is simple enough to understand on its own, coupled with a process that should be easy enough to follow and achieve a test result.<\/p>\n<p>Standardizing website testing to demonstrate SEO to developers shouldn\u2019t require understanding code when you can copy and paste script into Cloudflare, follow steps and test certain SEO tactics. Core Web Vitals tests are about as reliable as we\u2019re going to get for improving RUM (Real User Metrics) performance scores for a boost in rankings, given how metrics dependent it is.<\/p>\n<hr\/>\n<div class=\"row\">\n<div class=\"col-xs-12 col-md-12 sel-new-articles mb1\">\n<h3>New on Search Engine Land<\/h3>\n<section class=\"global-content-stream\"\/><\/div>\n<\/div>\n<p>\t\t\t\t\t\t\t<!-- GPT AdSlot 7 for Ad unit 'SEL_End-of-Story' ### Size: [[800,440],[800,260]] --><\/p>\n<p><!-- End AdSlot 7 --><\/p>\n<div class=\"about-author row\">\n<h3>About The Author<\/h3>\n<div class=\"information col-lg-12 col-md-12 col-sm-12\">\n<div class=\"author-module\">\n<div class=\"avatar\">\n\t\t\t<img decoding=\"async\" class=\"img-responsive\" width=\"140px\" height=\"140px\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"data:image\/svg+xml,%3Csvg%20xmlns=\" http:=\"\" data-lazy-src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/images\/authors\/DetlefJohnson-lg.jpg\"\/><noscript><img decoding=\"async\" class=\"img-responsive\" width=\"140px\" height=\"140px\" src=\"https:\/\/mailinvest.blog\/wp-content\/themes\/breek\/assets\/images\/transparent.gif\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/images\/authors\/DetlefJohnson-lg.jpg\"\/><\/noscript>\t\t\t<\/div>\n<div class=\"about\">\n<p>\t\t\t\t\t<iframe loading=\"lazy\" id=\"twitter-widget-0\" data-lazy=\"true\" data-src=\"https:\/\/searchengineland.com\/about:blank\" class=\"twitter-follow-button twitter-follow-button\" title=\"Twitter Follow Button\" data-twttr-rendered=\"true\" style=\"width: 251px; height: 20px;\" data-rocket-lazyload=\"fitvidscompatible\" data-lazy-data-lazy=\"true\" data-src=\"https:\/\/platform.twitter.com\/widgets\/follow_button.1392079123.html#_=1392650032615&amp;id=twitter-widget-0&amp;lang=en&amp;screen_name=deckarts&amp;show_count=true&amp;show_screen_name=true&amp;size=m\"><\/iframe><noscript><iframe id=\"twitter-widget-0\" data-lazy=\"true\" data-src=\"https:\/\/platform.twitter.com\/widgets\/follow_button.1392079123.html#_=1392650032615&amp;id=twitter-widget-0&amp;lang=en&amp;screen_name=deckarts&amp;show_count=true&amp;show_screen_name=true&amp;size=m\" class=\"twitter-follow-button twitter-follow-button\" title=\"Twitter Follow Button\" data-twttr-rendered=\"true\" style=\"width: 251px; height: 20px;\"><\/iframe><\/noscript>\n\t\t\t\t\t\t\t\t\t<\/p>\n<p>\t\t\t\tDetlef Johnson is the SEO for Developers Expert for Search Engine Land and SMX. He is also a member of the programming team for SMX events and writes the <a target=\"_blank\" rel=\"nofollow noopener\" href=\"https:\/\/searchengineland.com\/library\/features\/seo-for-developers\">SEO for Developers series on Search Engine Land<\/a>. Detlef is one of the original group of pioneering webmasters who established the professional SEO field more than 25 years ago. Since then he has worked for major search engine technology providers such as PositionTech, managed programming and marketing teams for Chicago Tribune, and advised numerous entities including several Fortune companies. Detlef lends a strong understanding of Technical SEO and a passion for Web development to company reports and special freelance services.\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<iframe data-lazy=\"true\" data-src=\"https:\/\/www.fiverr.com\/gig_widgets?id=U2FsdGVkX18x7XQvttUTrv1oEqmGNGTgvvCUiUoJ\/AP4z\/UyMz8lXGOLpu15jIMxBbTR0gmD5uBoFvhC4KWeALQRp3h\/X\/AwcVD0K8Wj9H\/ZzYKzcCNHosB9oS4SCJJFWiN85P9ICAc4OgCoE\/wHKIY7CDkf2\/DQ1vqGvk4smVe5cRDEmrLPCWi4FC8p40VUhSmWQ5udCm0zoJtorgWv3vbDQw0kKYkwn39ozAnQXDe+YvWMxkLFWA+O3TFwkJvdkIK+\/AUSnRssPKt5WHY0FhNOxnSPcLslEL4G4\/RfP95ve99U+kRnDy3X+KtzdQLY+u935ghON\/o3UE4IMv9oN6JX9RnxzL\/LRcOgnHigxStSGPKsZYtnz8RWNVT\/rOLAibqiWJadC5MYHRbekF3eg6FOGrQGkXYbsn0+a5aovnlLCbLwIqY9fcS17UX8J235iQ6cdmHNbrPeS84CMm34RA==&affiliate_id=1052423&strip_google_tagmanager=true\" loading=\"lazy\" data-with-title=\"true\" class=\"fiverr_nga_frame\" frameborder=\"0\" height=\"350\" width=\"100%\" referrerpolicy=\"no-referrer-when-downgrade\" data-mode=\"random_gigs\" onload=\" var frame = this; var script = document.createElement('script'); script.addEventListener('load', function() { window.FW_SDK.register(frame); }); script.setAttribute('src', 'https:\/\/www.fiverr.com\/gig_widgets\/sdk'); document.body.appendChild(script); \" ><\/iframe>\n<br \/><a href=\"https:\/\/searchengineland.com\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest-333815\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our guide to Core Web Vitals tactics using Cloudflare and WebpageTest, we outlined basic requirements for using Cloudflare as a reverse proxy for testing&#8230;<\/p>\n","protected":false},"author":1,"featured_media":6111,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-6110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-universe"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog<\/title>\n<meta name=\"description\" content=\"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what&#039;s new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog\" \/>\n<meta property=\"og:description\" content=\"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what&#039;s new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/\" \/>\n<meta property=\"og:site_name\" content=\"mailinvest.blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/freelanceracademic\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-24T20:55:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin@mailinvest.blog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin@mailinvest.blog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/\"},\"author\":{\"name\":\"admin@mailinvest.blog\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#\\\/schema\\\/person\\\/012701c4c204d4e4ebd34f926cfd31a4\"},\"headline\":\"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest\",\"datePublished\":\"2022-01-24T20:55:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/\"},\"wordCount\":1355,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/code-SS_634574354-1920x1080-1.jpg\",\"articleSection\":[\"Tech Universe\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/\",\"url\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/\",\"name\":\"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/code-SS_634574354-1920x1080-1.jpg\",\"datePublished\":\"2022-01-24T20:55:05+00:00\",\"description\":\"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what's new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#primaryimage\",\"url\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/code-SS_634574354-1920x1080-1.jpg\",\"contentUrl\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/code-SS_634574354-1920x1080-1.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/2022\\\/01\\\/24\\\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mailinvest.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#website\",\"url\":\"https:\\\/\\\/mailinvest.blog\\\/\",\"name\":\"mailinvest.blog\",\"description\":\"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis. mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what&#039;s new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.\",\"publisher\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mailinvest.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#organization\",\"name\":\"mailinvest\",\"url\":\"https:\\\/\\\/mailinvest.blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/default.png\",\"contentUrl\":\"https:\\\/\\\/mailinvest.blog\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/default.png\",\"width\":1000,\"height\":1000,\"caption\":\"mailinvest\"},\"image\":{\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/freelanceracademic\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mailinvest.blog\\\/#\\\/schema\\\/person\\\/012701c4c204d4e4ebd34f926cfd31a4\",\"name\":\"admin@mailinvest.blog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g\",\"caption\":\"admin@mailinvest.blog\"},\"sameAs\":[\"https:\\\/\\\/mailinvest.blog\",\"admin@mailinvest.blog\"],\"url\":\"https:\\\/\\\/mailinvest.blog\\\/index.php\\\/author\\\/adminmailinvest-blog\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog","description":"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what's new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/","og_locale":"en_US","og_type":"article","og_title":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog","og_description":"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what's new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.","og_url":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/","og_site_name":"mailinvest.blog","article_publisher":"https:\/\/www.facebook.com\/freelanceracademic\/","article_published_time":"2022-01-24T20:55:05+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg","type":"image\/jpeg"}],"author":"admin@mailinvest.blog","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin@mailinvest.blog","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#article","isPartOf":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/"},"author":{"name":"admin@mailinvest.blog","@id":"https:\/\/mailinvest.blog\/#\/schema\/person\/012701c4c204d4e4ebd34f926cfd31a4"},"headline":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest","datePublished":"2022-01-24T20:55:05+00:00","mainEntityOfPage":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/"},"wordCount":1355,"commentCount":0,"publisher":{"@id":"https:\/\/mailinvest.blog\/#organization"},"image":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#primaryimage"},"thumbnailUrl":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg","articleSection":["Tech Universe"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/","url":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/","name":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest - mailinvest.blog","isPartOf":{"@id":"https:\/\/mailinvest.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#primaryimage"},"image":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#primaryimage"},"thumbnailUrl":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg","datePublished":"2022-01-24T20:55:05+00:00","description":"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis.mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what's new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.","breadcrumb":{"@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#primaryimage","url":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg","contentUrl":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/code-SS_634574354-1920x1080-1.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/mailinvest.blog\/index.php\/2022\/01\/24\/evolving-core-web-vitals-tactics-using-cloudflare-and-webpagetest\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mailinvest.blog\/"},{"@type":"ListItem","position":2,"name":"Evolving Core Web Vitals tactics using Cloudflare and WebpageTest"}]},{"@type":"WebSite","@id":"https:\/\/mailinvest.blog\/#website","url":"https:\/\/mailinvest.blog\/","name":"mailinvest.blog","description":"Technology is forever changing, and there are always new pieces of technology to replace obsolete ones. Tons of people enjoy reading tech blogs on a daily basis. mailinvest.blog tracks all the latest consumer technology breakthroughs and shows you what&#039;s new, what matters and how technology can enrich your life. mailinvest.blog also provides the information, tools, and advice that helps when deciding what to buy.","publisher":{"@id":"https:\/\/mailinvest.blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mailinvest.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/mailinvest.blog\/#organization","name":"mailinvest","url":"https:\/\/mailinvest.blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mailinvest.blog\/#\/schema\/logo\/image\/","url":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/default.png","contentUrl":"https:\/\/mailinvest.blog\/wp-content\/uploads\/2022\/01\/default.png","width":1000,"height":1000,"caption":"mailinvest"},"image":{"@id":"https:\/\/mailinvest.blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/freelanceracademic\/"]},{"@type":"Person","@id":"https:\/\/mailinvest.blog\/#\/schema\/person\/012701c4c204d4e4ebd34f926cfd31a4","name":"admin@mailinvest.blog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/98ed217bd0f3d6a6dcae2d9b0c76e305b049a07275e315e1407e19ec8b08e139?s=96&d=mm&r=g","caption":"admin@mailinvest.blog"},"sameAs":["https:\/\/mailinvest.blog","admin@mailinvest.blog"],"url":"https:\/\/mailinvest.blog\/index.php\/author\/adminmailinvest-blog\/"}]}},"_links":{"self":[{"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/posts\/6110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/comments?post=6110"}],"version-history":[{"count":0,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/posts\/6110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/media\/6111"}],"wp:attachment":[{"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/media?parent=6110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/categories?post=6110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mailinvest.blog\/index.php\/wp-json\/wp\/v2\/tags?post=6110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}