{"id":21497,"date":"2017-03-20T17:01:19","date_gmt":"2017-03-20T17:01:19","guid":{"rendered":"http:\/\/lazy_loading_for_optimal_performance"},"modified":"2025-02-24T15:25:41","modified_gmt":"2025-02-24T23:25:41","slug":"lazy_loading_for_optimal_performance","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance","title":{"rendered":"Lazy Loading for Optimal Performance"},"content":{"rendered":"<p><!-- [if gte mso 9]&gt;--><\/p>\n<p><!-- [if gte mso 9]&gt;--><\/p>\n<p><!--StartFragment--><\/p>\n<p class=\"MsoNormal\">Who doesn&#8217;t love some striking imagery to drive your point home? Whether you&#8217;re selling a product or service, trying to communicate complex ideas, or simply captivate the emotions of your users, pictures can do that. Everyone knows they work, and everyone loves them.<\/p>\n<p class=\"MsoBodyText\">Well, everyone except the actual web servers. Thankfully, they have not yet gained sentience, so we don&#8217;t have to worry about their feelings. Even so, there is a cost to having images take up around <a href=\"http:\/\/mobile.httparchive.org\/interesting.php\" target=\"_blank\" rel=\"noopener\"><span style=\"color: windowtext;text-decoration: none\">70% of all bandwidth<\/span><\/a>.<\/p>\n<p class=\"MsoBodyText\">It costs us in terms of storage space, sure. More importantly, it cost both servers and users in terms of bandwidth and data caps.<\/p>\n<p class=\"MsoBodyText\">A long time ago (in Internet Years) browser developers figured out they could load and render pages faster if they started loading more than one external resource at a time. So they did. Now, while scripts and CSS are still downloading, your browser will usually try to grab all of the images, too.<\/p>\n<p class=\"MsoBodyText\">That way, in theory, it&#8217;s all ready to go as soon as the CSS and JS tell the browser what to do with all of those images. Well, it&#8217;s ready to go sooner, in any case.<\/p>\n<p class=\"MsoBodyText\">\n<p class=\"MsoBodyText\">But what if the user doesn&#8217;t scroll all the way down the page? What if they never see many or most of those images? That&#8217;s wasted data on both ends.<\/p>\n<p class=\"MsoBodyText\">This is where we turn to <a title=\"Lazy Loading: Choosing the Best Option\" href=\"https:\/\/cloudinary.com\/blog\/lazy_loading_choosing_the_best_option\" target=\"_blank\" rel=\"noopener\">lazy loading<\/a>.<\/p>\n<h2><a name=\"how-this-works\"><\/a>How this works<\/h2>\n<p class=\"MsoNormal\">For the uninitiated, lazy loading is simply waiting to load the images until the user gets to them. Only the necessary images are ever loaded, saving potential gigabytes upon gigabytes of bandwidth. The more users your site has, the more you save.<\/p>\n<p class=\"MsoBodyText\">Don&#8217;t take it from me. Take it from Chris Coyier of <a href=\"https:\/\/css-tricks.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: windowtext;text-decoration: none\">CSS-Tricks<\/span><\/a> fame.<\/p>\n<p class=\"MsoNormal\">On a high traffic site, say 2 million of 5 million users visit a blog post with a lot of images on it, but never scroll down. Below the fold, there is 750k of images. That\u2019s going to save you a boatload of bandwidth (1.5 million megabytes\u2026)<\/p>\n<p class=\"MsoNormal\">But even that is just a quote, though it comes from a pretty smart guy. If you want a real-world example, look at this post-mortem by <a href=\"https:\/\/nystudio107.com\/blog\/image-optimization-project-results\" target=\"_blank\" rel=\"noopener\"><span style=\"color: windowtext;text-decoration: none\">NYStudio+107<\/span><\/a>. They used lazy loading (and a few other important techniques, but we&#8217;re focused on lazy loading right now) to drop from a page load time of 107.8 seconds to 2.8 seconds.<\/p>\n<p class=\"MsoBodyText\">It&#8217;s not a proof-of-concept either. It&#8217;s a real-world site they built. Incidentally, the blog post itself uses lazy-loading, so there&#8217;s another example.<\/p>\n<h2><a name=\"ok-thats-awesome-lets-do-it\"><\/a>Ok, that&#8217;s awesome! Let&#8217;s do it!<\/h2>\n<p class=\"MsoNormal\">Okay, but there are a few things to think about:<\/p>\n<ul>\n<li>This is only useful if you have a lot of images below the fold. If you just have a hero image and then a bunch of text&#8230; it&#8217;s not worth it. Consider your content.<\/li>\n<li>Lazy loading is not a built-in browser feature. It has to be done with JavaScript. Adding lazy loading will increase the overall complexity of any project. This will cost in terms of development time and testing.<\/li>\n<li>Doing it wrong may result in users not seeing images at all.<\/li>\n<\/ul>\n<p class=\"Compact\" style=\"margin-left: 24.0pt;text-indent: -24.0pt\">Now, if you have all of that covered, and you still want to do this, here are a couple of tips:<\/p>\n<ul>\n<li>\u00a0<span style=\"text-indent: -32px\">Load images just before they enter the viewport whenever possible. It won&#8217;t always work, but it&#8217;s the ideal.<\/span><\/li>\n<li><span style=\"text-indent: -32px\">Since the above tip won&#8217;t always work, you&#8217;re going to need to reserve space for the images. If you don&#8217;t, you may see the rest of the layout jumping around, and that&#8217;s never cool.<\/span><\/li>\n<li><span style=\"text-indent: -32px\">You can use background colors, loading animations, or even tiny image previews to let users know that something will be loading in that extra space.<\/span><\/li>\n<li><span style=\"text-indent: -32px\">Have a fallback solution. Always have a fallback solution.<\/span><\/li>\n<\/ul>\n<p class=\"MsoNormal\">Again, it would be better if they never saw it, but these things happen.<\/p>\n<h2><a name=\"tools\"><\/a>Tools<\/h2>\n<p class=\"MsoNormal\">We would never end an article like this without telling you where to start. The library I&#8217;d recommend is called <a href=\"https:\/\/github.com\/aFarkas\/lazysizes\" target=\"_blank\" rel=\"noopener\"><span style=\"color: windowtext;text-decoration: none\">lazysizes<\/span><\/a>. It supports both responsive and normal images, and can also work with other elements like iframes.<\/p>\n<p class=\"MsoBodyText\">Even better, it can automatically generate the appropriate &#8220;sizes&#8221; attribute for your responsive images on the fly. So you&#8217;ll never have to set those manually again.<\/p>\n<p class=\"MsoBodyText\">It&#8217;s designed to be fast, extendable, and play nice with other JS libraries. It&#8217;s also designed to never hide content from search engines, so it shouldn&#8217;t impact your SEO.<\/p>\n<h2><a name=\"conclusion\"><\/a>Conclusion<\/h2>\n<p class=\"MsoNormal\">It&#8217;s time to get lazy, people! (I couldn&#8217;t resist.)<\/p>\n<p class=\"MsoBodyText\">The only real downside is the JavaScript dependency. In the future, you may be able to skip the JS, once the <span style=\"color: windowtext;text-decoration: none\">IntersectionObserver API<\/span> is implemented in all browsers. Right now, only Chrome and Opera support it fully, and out of the box.<\/p>\n<p class=\"MsoBodyText\">That small issue aside, this technique could save you, and your site, a lot of data. Data is money, for both you and your users.<\/p>\n<h2>Want to Learn More About Lazy-Loading?<\/h2>\n<ul>\n<li><a title=\"Lazy Loading: Choosing the Best Option\" href=\"https:\/\/cloudinary.com\/blog\/lazy_loading_choosing_the_best_option\" target=\"_blank\" rel=\"noopener\">Lazy Loading: Choosing the Best Option<\/a><\/li>\n<li><a href=\"https:\/\/cloudinary.com\/blog\/how_to_get_killer_page_performance_with_angular_lazy_loading\" target=\"_blank\" rel=\"noopener\">How to Get Killer Page Performance With Angular Lazy Loading<\/a><\/li>\n<li><a href=\"https:\/\/cloudinary.com\/blog\/lazy_load_react_and_boost_page_performance_for_your_apps\" target=\"_blank\" rel=\"noopener\">Lazy-Load React and Boost Page Performance for Your Apps<\/a><\/li>\n<li><a href=\"https:\/\/cloudinary.com\/blog\/lazy_loading_javascript_for_high_speed_webpage_performance\" target=\"_blank\" rel=\"noopener\">Lazy-Loading JavaScript for High-Speed Webpage Performance<\/a><\/li>\n<li><a href=\"https:\/\/cloudinary.com\/blog\/progressive_web_apps_architecture_and_examples\" target=\"_blank\" rel=\"noopener\">Progressive Web Apps: Architecture and Examples<\/a><\/li>\n<\/ul>\n<p><!--EndFragment--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Who doesn&#8217;t love some striking imagery to drive your point home? Whether you&#8217;re selling a product or service, trying to communicate complex ideas, or simply captivate the emotions of your users, pictures can do that. Everyone knows they work, and everyone loves them. Well, everyone except the actual web servers. Thankfully, they have not yet [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":21498,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,186,324],"class_list":["post-21497","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-lazy-loading","tag-website-speed"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Lazy Loading for Performance<\/title>\n<meta name=\"description\" content=\"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lazy Loading for Optimal Performance\" \/>\n<meta property=\"og:description\" content=\"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-20T17:01:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-24T23:25:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation-gif?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"330\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Lazy Loading for Optimal Performance\",\"datePublished\":\"2017-03-20T17:01:19+00:00\",\"dateModified\":\"2025-02-24T23:25:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\"},\"wordCount\":878,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA\",\"keywords\":[\"Guest Post\",\"Lazy Loading\",\"Website Speed\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\",\"url\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\",\"name\":\"Lazy Loading for Performance\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA\",\"datePublished\":\"2017-03-20T17:01:19+00:00\",\"dateModified\":\"2025-02-24T23:25:41+00:00\",\"description\":\"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA\",\"width\":600,\"height\":330},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lazy Loading for Optimal Performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Lazy Loading for Performance","description":"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.","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:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance","og_locale":"en_US","og_type":"article","og_title":"Lazy Loading for Optimal Performance","og_description":"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.","og_url":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance","og_site_name":"Cloudinary Blog","article_published_time":"2017-03-20T17:01:19+00:00","article_modified_time":"2025-02-24T23:25:41+00:00","og_image":[{"width":600,"height":330,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation-gif?_i=AA","type":"image\/gif"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance"},"author":{"name":"","@id":""},"headline":"Lazy Loading for Optimal Performance","datePublished":"2017-03-20T17:01:19+00:00","dateModified":"2025-02-24T23:25:41+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance"},"wordCount":878,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA","keywords":["Guest Post","Lazy Loading","Website Speed"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance","url":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance","name":"Lazy Loading for Performance","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA","datePublished":"2017-03-20T17:01:19+00:00","dateModified":"2025-02-24T23:25:41+00:00","description":"Lazy loading simply waits to load images when the user gets to them. Only the necessary images are ever loaded, saving bandwidth.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA","width":600,"height":330},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/lazy_loading_for_optimal_performance#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Lazy Loading for Optimal Performance"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649725272\/Web_Assets\/blog\/Lazy_Loading_Blog_Animation\/Lazy_Loading_Blog_Animation.gif?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21497"}],"version-history":[{"count":4,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21497\/revisions"}],"predecessor-version":[{"id":37000,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21497\/revisions\/37000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21498"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}