{"id":29326298,"date":"2020-11-06T06:00:29","date_gmt":"2020-11-06T06:00:29","guid":{"rendered":"https:\/\/www.readwhere.com\/blog\/?p=29326298"},"modified":"2020-12-03T05:42:36","modified_gmt":"2020-12-03T05:42:36","slug":"8-important-tips-for-asynchronous-loading","status":"publish","type":"post","link":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/","title":{"rendered":"8 Important Tips to Improve Site Performance with Asynchronous Loading"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Comparing Synchronous and Asynchronous loading is essential for performance optimization. As both of them are deciding factors of a quick or delayed response time, let us discuss the same in-depth. In Synchronous loading, browser\/server perform operations ( eg: fetch, manipulate, render, etc) in a sequence from top to bottom. It blocks further execution until the current operation finishes in order to complete the request.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This affects overall performance like a delayed response, per request resource blocking,\u00a0 on browser overall page performance etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The two key factors that decide the site performance are:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><strong>Good user experience<\/strong><\/li>\n<li style=\"font-weight: 400;\"><strong>\u00a0Performance optimization<\/strong><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Here comes the concept of Asynchronous loading.<\/span><\/p>\n<h2><span style=\"font-size: 16px;\"><b>What is Asynchronous loading?<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">In layman terms, Asynchronous loading deals with identifying operations we can load independently that can be loaded in parallel. Along with this, also load the things later which is not immediately needed. It will not block the most meaningful data to load due to other operations.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We at Readwhere, have several sections and types of data on a news page. It comes with trending news and current news data with other data like ads and analytics. It also includes some background files, theming assets, libraries, fonts, and other rich media resources like images videos, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So here are the methodologies related to asynchronous loading we added to boost our overall server\/browser-side performance.<\/span><\/p>\n<p><a href=\"https:\/\/mobi.readwhere.com\/\"><strong>Readwhere CMS makes your site performance better with the best tech trends. Try out!<\/strong><\/a><\/p>\n<p><span style=\"font-weight: 400;\">If you implement these techniques too, it will show a positive impact on your site performance as well.<\/span><\/p>\n<h2><span style=\"font-size: 16px;\"><b>Server-side Asynchronous loading:<\/b><\/span><\/h2>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-29326299\" src=\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading-300x200.png\" alt=\"server side asynchronous loading\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading-300x200.png 300w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading-1024x683.png 1024w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading-768x512.png 768w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading-272x182.png 272w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Server-side-loading.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<ol>\n<li>\n<h2><span style=\"font-size: 16px;\"><b>Move out operations that can be avoided in the request-response life cycle.<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Find out the tasks that can be moved out from the request-response lifecycle. For example, on some requests, we need to update some logs or send some notifications. Such activities can be performed using workers. Let\u2019s say, you wish to send a welcome email on login, this job can be assigned to a worker.<\/span><\/p>\n<ol start=\"2\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b> In case the data is too much, send it in chunks:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">On a request, you might need to respond with large data like video files or some big size data. Utilizing some techniques to serve data in chunks or parts is the hack in such cases. For serving a big video file you can use a stream to serve the file. Streams are objects that let you read data from a source or write data to a destination in a continuous fashion.<\/span><\/p>\n<ol start=\"3\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b>Process data in parallel when possible for asynchronous loading:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">At times current news data or trending news data is required from a request. Both are not dependent on each other. So, you can use threads\/ async-await or other available methods in different programming languages to load data in parallel.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When both data is (i.e News data and Trending data ) available, you can combine and send back the response. It will dramatically improve the overall response time as well as resource utilization and improved per time request serve capacity.<\/span><\/p>\n<h2><span style=\"font-size: 16px;\"><b>Browser side Asynchronous loading:<\/b><\/span><\/h2>\n<p><img decoding=\"async\" class=\"wp-image-29326300\" src=\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading-300x200.png\" alt=\"browser side asynchronous loading\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading-300x200.png 300w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading-1024x683.png 1024w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading-768x512.png 768w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading-272x182.png 272w, https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/browser-side-loading.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">When we request web-page on a browser, it consists of a head and a body. When the page loads in a browser, the browser starts reading the HTML from top to bottom. A web-page contains external resources like scripts, style-sheets, images\/video links, iframe, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Let&#8217;s take a look at some points regarding the browser for asynchronous loading of the web-page.<\/span><\/p>\n<ol>\n<li>\n<h2><span style=\"font-size: 16px;\"><b> Lazy load off-screen images for asynchronous loading:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Images are heavy resources and it affects overall loading. So what we do we add one default\/placeholder image to all the images sources? Our main motto is to not affect the page structure at all. When a user scrolls to the image, one can load it in the background and replace it with a placeholder image. So the page only loads the images currently user is looking at and it improves initial page load time as well as user experience.\u00a0<\/span><\/p>\n<ol start=\"2\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b> Loading data after initial document loads is helpful:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">When a page loaded from top to bottom on a browser, you can use JavaScript event listeners.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can prioritise data and load in a waterfall or in parallel using JavaScript events and promises. Like DOMContentLoaded event tells that initial HTML page is loaded.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now one can simply schedule other data loads like adding some analytics, initiate user event actions, render ads, render widgets etc.<\/span><\/p>\n<ol start=\"3\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b> For large length data,\u00a0 Load data from the server in parts and load on the scroll:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Let\u2019s say you want to show a lot of data which is more than 2-3 fold of a device screen. Just use scroll event and load data as user scroll using AJAX. It overall reduces the initial page load size as well as only data is loaded when it is needed on the screen. It saves our resources if the user doesn\u2019t scroll the request will not send to serve more. This is called infinite scrolling.<\/span><\/p>\n<ol start=\"4\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b>Data or library which is required after some action can be loaded on the user action:\u00a0<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">In order to show some information on the info button, click and also used chart library on the information. When a user clicks, you can then only dynamically load the chart library and the information from the server.<\/span><\/p>\n<ol start=\"5\">\n<li>\n<h2><span style=\"font-size: 16px;\"><b>Use the async keyword to load assets in parallel with other resources to support asynchronous loading:<\/b><\/span><\/h2>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">While an HTML page is loading, there can be assets like some Library scripts which you won&#8217;t immediately require to the subsequent resources. One can add \u2018async\u2019 to the script tag.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It will load the script in parallel with other resources.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In conclusion, these are some of the listed things that Readwhere uses on the server and browser-side code to perform jobs asynchronously. It improves the overall performance of the product.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So, why don\u2019t you try any of these techniques? You can divide your data, load when you need so and load parallel if not interdependent.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Also, let us know what are the techniques that you use to achieve performance optimization for your site.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comparing Synchronous and Asynchronous loading is essential for performance optimization. As both of them are deciding factors of a quick or delayed response time, let us discuss the same in-depth&#8230;.<\/p>\n","protected":false},"author":3,"featured_media":29326301,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[33],"class_list":["post-29326298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-web","tag-tech-updates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>8 Important Tips to Improve Site Performance with Asynchronous Loading -<\/title>\n<meta name=\"description\" content=\"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"8 Important Tips to Improve Site Performance with Asynchronous Loading -\" \/>\n<meta property=\"og:description\" content=\"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/\" \/>\n<meta property=\"og:site_name\" content=\"Readwhere Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-06T06:00:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-03T05:42:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Neha Gore\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neha Gore\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/\",\"url\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/\",\"name\":\"8 Important Tips to Improve Site Performance with Asynchronous Loading -\",\"isPartOf\":{\"@id\":\"https:\/\/www.readwhere.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png\",\"datePublished\":\"2020-11-06T06:00:29+00:00\",\"dateModified\":\"2020-12-03T05:42:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/854eb40e61f8ea262f50c17bf7634f7d\"},\"description\":\"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage\",\"url\":\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png\",\"contentUrl\":\"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png\",\"width\":1200,\"height\":800,\"caption\":\"Asynchronous_Loading_Tips\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.readwhere.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"8 Important Tips to Improve Site Performance with Asynchronous Loading\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/#website\",\"url\":\"https:\/\/www.readwhere.com\/blog\/\",\"name\":\"Readwhere Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.readwhere.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/854eb40e61f8ea262f50c17bf7634f7d\",\"name\":\"Neha Gore\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c5f167cf3d09a2da0110801c8043e515018bb54db91f7008e3b8cfc34eb0a820?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c5f167cf3d09a2da0110801c8043e515018bb54db91f7008e3b8cfc34eb0a820?s=96&d=mm&r=g\",\"caption\":\"Neha Gore\"},\"url\":\"https:\/\/www.readwhere.com\/blog\/author\/neha-gore\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"8 Important Tips to Improve Site Performance with Asynchronous Loading -","description":"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.","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:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/","og_locale":"en_US","og_type":"article","og_title":"8 Important Tips to Improve Site Performance with Asynchronous Loading -","og_description":"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.","og_url":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/","og_site_name":"Readwhere Blog","article_published_time":"2020-11-06T06:00:29+00:00","article_modified_time":"2020-12-03T05:42:36+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png","type":"image\/png"}],"author":"Neha Gore","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Neha Gore","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/","url":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/","name":"8 Important Tips to Improve Site Performance with Asynchronous Loading -","isPartOf":{"@id":"https:\/\/www.readwhere.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage"},"image":{"@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage"},"thumbnailUrl":"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png","datePublished":"2020-11-06T06:00:29+00:00","dateModified":"2020-12-03T05:42:36+00:00","author":{"@id":"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/854eb40e61f8ea262f50c17bf7634f7d"},"description":"Get better site performance with these asynchronous loading techniques. Load tags with this JavaScript method for better performance.","breadcrumb":{"@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#primaryimage","url":"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png","contentUrl":"https:\/\/www.readwhere.com\/blog\/wp-content\/uploads\/2020\/11\/Asynchronous_loading.png","width":1200,"height":800,"caption":"Asynchronous_Loading_Tips"},{"@type":"BreadcrumbList","@id":"https:\/\/www.readwhere.com\/blog\/8-important-tips-for-asynchronous-loading\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.readwhere.com\/blog\/"},{"@type":"ListItem","position":2,"name":"8 Important Tips to Improve Site Performance with Asynchronous Loading"}]},{"@type":"WebSite","@id":"https:\/\/www.readwhere.com\/blog\/#website","url":"https:\/\/www.readwhere.com\/blog\/","name":"Readwhere Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.readwhere.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/854eb40e61f8ea262f50c17bf7634f7d","name":"Neha Gore","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.readwhere.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c5f167cf3d09a2da0110801c8043e515018bb54db91f7008e3b8cfc34eb0a820?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5f167cf3d09a2da0110801c8043e515018bb54db91f7008e3b8cfc34eb0a820?s=96&d=mm&r=g","caption":"Neha Gore"},"url":"https:\/\/www.readwhere.com\/blog\/author\/neha-gore\/"}]}},"_links":{"self":[{"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/posts\/29326298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/comments?post=29326298"}],"version-history":[{"count":4,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/posts\/29326298\/revisions"}],"predecessor-version":[{"id":29326362,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/posts\/29326298\/revisions\/29326362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/media\/29326301"}],"wp:attachment":[{"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/media?parent=29326298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/categories?post=29326298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.readwhere.com\/blog\/wp-json\/wp\/v2\/tags?post=29326298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}