{"id":18775,"date":"2020-02-26T12:10:15","date_gmt":"2020-02-26T17:10:15","guid":{"rendered":"https:\/\/www.boldgrid.com\/support\/?p=18775"},"modified":"2024-02-22T09:58:47","modified_gmt":"2024-02-22T14:58:47","slug":"configuring-browser-caching-in-w3-total-cache","status":"publish","type":"post","link":"https:\/\/www.boldgrid.com\/support\/w3-total-cache\/configuring-browser-caching-in-w3-total-cache\/","title":{"rendered":"Configuring WordPress Browser Caching using W3 Total Cache"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<?xml encoding=\"utf-8\" ?><html><body><p>Browser caching is extremely important for improving your <a href=\"http:\/\/boldgrid.com\/w3-total-cache\/\">WordPress performance<\/a> and speed, and it is recommended that you enable it in nearly all situations. The good news is that it is very easy to enable for WordPress with W3 Total Cache. Browsers are already parsing HTTP headers for your website, so we can add some information to these headers that declare how long the assets should be held on to locally, or if the browser should download a newer copy.<\/p>\n<p>When users visit your site, their browser will examine the HTTP headers being passed to determine if it should store a local copy of the assets. Not only will your site load faster for users since they are loading local copies of your stylesheets, javascript, images, fonts, and etc, but these assets will not have to be served from your hosting plan when a user navigates through your site.<\/p>\n<div class=\"boldgrid-section\" style=\"margin-top: 60px;\">\n<div class=\"container w3tc-radius\" style=\"border-width: 0px; background-image: url('https:\/\/www.boldgrid.com\/wp-content\/uploads\/2023\/07\/upsell-darker-alt.png'); background-size: cover; background-position: 50% 5%;\" data-image-url=\"https:\/\/www.boldgrid.com\/wp-content\/uploads\/2023\/07\/upsell-darker-alt.png\">\n<div class=\"row upsell-column\" style=\"padding-top: 2em; padding-bottom: 2em; color: #ffffff;\">\n<div class=\"col-lg-1 col-md-1 col-sm-12 col-xs-12 hidden-sm\"><\/div>\n<div class=\"col-lg-5 col-md-6 col-xs-12 col-sm-7\">\n<p class=\"\" style=\"color: #ffffff; line-height: 40px; margin-top: 0;\">Speed up your WordPress website with Browser Caching and <strong>W3 Total Cache Pro<\/strong><\/p>\n<\/div>\n<div class=\"col-lg-6 col-md-5 col-sm-5 col-xs-12 text-center align-column-center\">\n<p class=\"\" style=\"border-width: 0px;\"><a class=\"button-w3tc-white\" style=\"border: 2px solid #30BEC4; font-size: 18px; padding: 15px 30px;\" href=\"https:\/\/www.boldgrid.com\/w3-total-cache\/#pricing\">View Plans<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 id=\"browser-cache-settings\">Browser Cache Settings<\/h2>\n<p>Here we will review the Browser Cache &gt; General Settings section in&nbsp;<a class=\"external-link\" href=\"https:\/\/www.boldgrid.com\/w3-total-cache\/\" target=\"_blank\" rel=\"noopener\" aria-label-position=\"top\" aria-label=\"https:\/\/www.boldgrid.com\/w3-total-cache\/\">W3 Total Cache for WordPress<\/a>&nbsp;and examine what each of the available settings do.<\/p>\n<h3 id=\"general\">General<\/h3>\n<h4 id=\"set-last-modified-header\">Set Last-Modified header<\/h4>\n<p><strong>Default value<\/strong>: Enabled<\/p>\n<p>The &ldquo;Set Last-Modified header&rdquo; option in W3 Total Cache lets you decide whether or not your server includes a special &ldquo;Last-Modified&rdquo; timestamp when delivering web content. When you turn this option on, the server adds information about the last time the content was changed to its responses. This is handy for web browsers and proxies because they use this timestamp to figure out if they can keep using a stored (cached) version of the content or if they need to grab a fresh one. Essentially, it helps improve website speed and performance by managing how cached content is handled based on when it was last modified.<\/p>\n<p>For more information on the Last-Modified header, please see <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Last-Modified\">mozilla.org&rsquo;s documentation<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-122602 size-full\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/last-modified.png\" alt=\"\" width=\"802\" height=\"443\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/last-modified.png 802w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/last-modified-300x166.png 300w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/last-modified-768x424.png 768w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/p>\n<div>\n<h4 data-heading=\"Set expires header\" id=\"set-expires-header\">Set expires header<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>The &ldquo;Set Expires Header&rdquo; option in W3 Total Cache lets you explicitly tell browsers and proxies how long they can keep a cached version of your web content before they need to check with your server again. Instead of relying on the server&rsquo;s &ldquo;Last-Modified&rdquo; timestamp, you set a specific expiration date, like a countdown timer, for each resource. Imagine this as a built-in freshness label, telling the browser how long it can serve a cached version before checking for updates.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-123605 alignnone\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142607.png\" alt=\"\" width=\"627\" height=\"335\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142607.png 627w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142607-300x160.png 300w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/p>\n<div class=\"\">\n<h4 data-heading=\"Set cache control header\" id=\"set-cache-control-header\">Set cache control header<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>The &ldquo;Set Cache-Control Header&rdquo; option in W3 Total Cache empowers you to control the caching directives sent by your server along with web content responses. When enabled, this option allows your server to include a &ldquo;Cache-Control&rdquo; header in its responses, specifying directives that govern how the content should be cached, stored, and re-validated by browsers and proxies.<\/p>\n<\/div>\n<div>\n<p><strong>How It Works:<\/strong><\/p>\n<\/div>\n<div>\n<ol>\n<li data-line=\"0\">Server sends resources with Cache-Control headers, providing specific caching instructions.<\/li>\n<li data-line=\"1\">Browsers follow these instructions, caching resources accordingly.<\/li>\n<li data-line=\"2\">Browsers send conditional requests to the server only when necessary, based on the directives.<\/li>\n<li data-line=\"3\">Server responds with updates or validation, ensuring content freshness and efficient caching.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-123607 alignnone\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142537.png\" alt=\"\" width=\"627\" height=\"335\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142537.png 627w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240125142537-300x160.png 300w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/p>\n<div>\n<h4 data-heading=\"Set entity tag (ETag)\" id=\"set-entity-tag-etag\">Set entity tag (ETag)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>The &ldquo;Set Entity Tag (ETag)&rdquo; option in W3 Total Cache provides you with the ability to determine whether your server includes a unique &ldquo;Entity Tag&rdquo; in its responses when delivering web content. When this option is activated, the server appends an ETag to its responses, serving as a mechanism for identifying changes in content. Web browsers and proxies leverage this ETag information to determine whether their cached version of the content is still valid or if they need to retrieve a fresh copy. In essence, the Set Entity Tag option plays a crucial role in managing cached content by facilitating a more granular approach to determining when content has been modified. This ensures that users receive the most up-to-date content while minimizing unnecessary data transfers and enhancing overall website responsiveness.<\/p>\n<p>It is suggested to enable ETags while&nbsp;<strong>Set expires header<\/strong>&nbsp;is active, along with&nbsp;<strong>Prevent caching of objects after settings change<\/strong>&nbsp;as these combined will force browsers to reload assets when they are updated. This prevents users from seeing old content after changes are made.<\/p>\n<div class=\"\">\n<h4 data-heading=\"Set W3 Total Cache header\" id=\"set-w3-total-cache-header\">Set W3 Total Cache header<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting can be used to set an optional HTTP &ldquo;X-Powered-By&rdquo; header that websites can include in responses to assist in identifying requests and files optimized by W3 Total Cache. This is useful for troubleshooting as this header can help you identify which files or requests are being cached.<\/p>\n<p>Some caching systems and CDNs might use the X-Powered-By header as part of their cache validation process. They might check for changes in the header&rsquo;s value to determine if a cached version of a resource is still valid or needs to be refreshed. If the header changes, it could signal a change in the underlying software, potentially affecting cached content.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-123604 alignnone\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240116130257-1.png\" alt=\"\" width=\"943\" height=\"606\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240116130257-1.png 943w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240116130257-1-300x193.png 300w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/Pasted-image-20240116130257-1-768x494.png 768w\" sizes=\"auto, (max-width: 943px) 100vw, 943px\" \/><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 id=\"\"><\/h4>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(gzip) compression\" id=\"enablehttpgzip-compression\">Enable&nbsp;HTTP&nbsp;(gzip) compression<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>Gzip compression plays a crucial role in enhancing both caching and website performance. When enabled, your server &ldquo;zips up&rdquo; HTML, CSS, and JavaScript files before sending them to the user&rsquo;s browser. This reduces their size by up to 70%, resulting in significantly smaller data transfers. With this option enabled, less data needs to be transferred between the server and the user&rsquo;s browser, which translates to less strain on your server and improved bandwidth efficiency. This benefit becomes increasingly impactful as your website traffic grows.<\/p>\n<\/div>\n<div>\n<p>Using a popular blog with frequent content updates as an example, enabling gzip compression could reduce the size of its homepage from 1MB to 300KB. With caching activated, this compressed version gets stored in the browser&rsquo;s cache. During a return visit, the browser retrieves the cached version instantly, leading to a much faster loading experience compared to downloading the full 1MB version again.<\/p>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(brotli) compression\" id=\"enablehttpbrotli-compression\">Enable&nbsp;HTTP&nbsp;(brotli) compression<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>While gzip has long been a staple in performance optimization, Brotli compression is emerging as a cutting-edge partner in caching and speed. Developed by Google, it offers even more impressive compression capabilities, often achieving a 10-20% reduction in file size compared to gzip. This translates to smaller files, faster transfers, and enhanced caching benefits. While Brotli compression is more powerful than gzip, the Brotli compression process is slower making gzip preferable if you host a large amount of dynamic content that cannot be cached.<\/p>\n<p>The brotli PHP extension must be installed on your server in order to use this option. If you would like to use this feature and are unable to enable it, reach out to your host for further assistance.<\/p>\n<\/div>\n<\/div>\n<h4 id=\"prevent-caching-of-objects-after-settings-change\">Prevent caching of objects after settings change<\/h4>\n<p><strong>Default value<\/strong>: Disabled<\/p>\n<p>The &ldquo;Prevent caching of objects after settings change&rdquo; option in W3 Total Cache is designed to ensure that changes to your caching settings take effect immediately. When this option is enabled, any time you make adjustments to your caching configurations, a new query string is generated and added to the objects (like images or stylesheets) on your website. This new query string acts as a signal to servers and browsers that the content has been modified, prompting them to fetch the updated version rather than relying on cached copies.<\/p>\n<p>When this feature is enabled, an &ldquo;Update media query string&rdquo; button becomes available on your Browser Cache settings page to reset the query string.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-122609\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/update-media-query-string.png\" alt=\"\" width=\"717\" height=\"324\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/update-media-query-string.png 717w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/update-media-query-string-300x136.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/p>\n<p><strong>Real World Example<\/strong><\/p>\n<p>Let&rsquo;s consider the example URL: <code>https:\/\/example.org\/image.png<\/code><\/p>\n<p>Suppose you have the &ldquo;Prevent caching of objects after settings change&rdquo; option enabled in W3 Total Cache. Now, if you make changes to your caching settings, such as adjusting compression or expiration times, the plugin will automatically generate a new query string and append it to the object&rsquo;s URL.<\/p>\n<p>Before settings change: <code>https:\/\/example.org\/image.png<\/code><\/p>\n<p>After settings change: <code>https:\/\/example.org\/image.png?x25139<\/code><\/p>\n<p>In this example, the <code>?x25139<\/code> is the new query string automatically added after the settings change. Browsers and servers recognize this change, ensuring that when users revisit the site, they fetch the updated image rather than using the previous cached version. This dynamic approach helps in quickly applying and reflecting changes across your website&rsquo;s content in response to modifications in caching settings.<\/p>\n<div class=\"\">\n<h4 data-heading=\"Remove query strings from static resources\" id=\"remove-query-strings-from-static-resources\">Remove query strings from static resources<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting aims to improve website performance and caching efficiency by removing query strings (the extra bits of text added to the end of URLs after a question mark) from static resources like images, CSS, and JavaScript files. When enabled, the setting rewrites URLs of static resources to remove query strings. For example,&nbsp;<code>example.com\/image.jpg?v=123<\/code>&nbsp;becomes&nbsp;<code>example.com\/image.jpg<\/code>.<\/p>\n<\/div>\n<div>\n<p>Browsers and proxy servers often consider URLs with query strings as unique resources, even if the content is identical. This can lead to unnecessary re-downloads, slowing down page loads. Removing query strings allows these resources to be cached more effectively, reducing the number of requests to the server and improving website performance.<\/p>\n<div class=\"\">\n<h4 data-heading=\"Prevent caching exception list\" id=\"prevent-caching-exception-list\">Prevent caching exception list<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;NULL<\/p>\n<\/div>\n<div>\n<p>This setting provides granular control over caching behavior by allowing you to specify URLs or URL patterns that should bypass caching. You can add multiple addresses\/patterns by separating each item with a new line. It acts as a safeguard to ensure certain sensitive or dynamic content is always served fresh from the server, even when caching is enabled. When a visitor requests a URL matching an entry on the exception list, the server will handle the request directly, generating a fresh response every time.<\/p>\n<\/div>\n<div>\n<p><strong>Common Use Cases:<\/strong><\/p>\n<\/div>\n<div>\n<ul class=\"has-list-bullet\">\n<li data-line=\"0\">\n<div class=\"list-bullet\"><strong>Sensitive Data:<\/strong>&nbsp;Prevent caching of URLs containing personal information, login pages, shopping carts, or other sensitive content to protect user privacy and security.<\/div>\n<\/li>\n<li data-line=\"1\">\n<div class=\"list-bullet\"><strong>Dynamic Content:<\/strong>&nbsp;Exclude URLs that display frequently changing content (e.g., live feeds, real-time dashboards, chat widgets) to ensure users always see the latest information.<\/div>\n<\/li>\n<li data-line=\"2\">\n<div class=\"list-bullet\"><strong>Custom Functionality:<\/strong>&nbsp;Bypass caching for URLs that rely on specific user interactions or browser states to function correctly, preventing caching-related issues.<\/div>\n<\/li>\n<li data-line=\"3\">\n<div class=\"list-bullet\"><strong>Troubleshooting:<\/strong>&nbsp;Temporarily add URLs to the list for testing or troubleshooting purposes to isolate caching-related problems.<\/div>\n<\/li>\n<\/ul>\n<div class=\"\">\n<h4 data-heading=\"Don't set cookies for static files\" id=\"dont-set-cookies-for-static-files\">Don&rsquo;t set cookies for static files<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>The Set-Cookie header is a piece of information sent by a website server to your browser when you visit a webpage. It acts like a small instruction manual, telling your browser to store specific information about your visit on its local hard drive. This information can be anything from your login details to your preferred language to items you&rsquo;ve added to your shopping cart.<\/p>\n<\/div>\n<div>\n<p>This setting aims to optimize website performance and reduce unnecessary data transfers by preventing cookies from being attached to static files like images, CSS, and JavaScript files. When enabled, the server won&rsquo;t send the Set-Cookie header for requests involving static files. Each request that doesn&rsquo;t carry cookies means less data sent between the browser and server, leading to faster page loads and less bandwidth usage. Additionally, browsers and CDNs can cache static files more effectively without needing to consider cookie-based variations, reducing server load and enhancing performance.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Do not process 404 errors for static objects with WordPress\" id=\"do-not-process-404-errors-for-static-objects-with-wordpress\">Do not process 404 errors for static objects with WordPress<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>By default, WordPress processes all 404 errors, even for static files like images, CSS, and JavaScript files. This can involve loading core WordPress files, which adds overhead and potentially slows down page loads. This setting bypasses WordPress for 404 errors related to static objects, letting the server handle them directly. Server-level 404 handling is often quicker than WordPress-level processing, leading to faster error responses and potentially improving overall user experience.<\/p>\n<\/div>\n<div>\n<p>If enabled, you may get 404 responses for some files generated on-the-fly by other plugins. You can use the 404 exception list setting to prevent these responses.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"404 error exception list\" id=\"404-error-exception-list\">404 error exception list<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong><\/p>\n<\/div>\n<div>\n<pre><code>robots\\.txt\r\n[a-z0-9_\\-]*sitemap[a-z0-9_\\.\\-]*\\.(xml|xsl|html)(\\.gz)?\r\n<\/code><\/pre>\n<\/div>\n<div>\n<p>This field allows you to specify URLs or URL patterns that should not trigger a 404 error message, even if those resources don&rsquo;t actually exist on your website. It&rsquo;s a way to manage specific exceptions to the normal 404 handling behavior for finer control over error responses. When a visitor requests a URL that matches an entry in the exception list, the server won&rsquo;t generate a standard 404 error page, preventing errors for non-existent files and resources. If certain URLs are expected to return a 404 status for functionality purposes, you can add them to the list to avoid unintended error messages.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Rewrite&nbsp;URL&nbsp;structure of objects\" id=\"rewriteurlstructure-of-objects\">Rewrite&nbsp;URL&nbsp;structure of objects<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<p>When enabled, this setting dynamically alters the URLs of protected files by appending unique query strings or identifiers to them. This makes each URL appear distinct to the browser, even if the underlying file remains the same. This added complexity makes it more challenging for certain intermediate caches, known to sometimes ignore query strings, to effectively cache your protected content.<\/p>\n<p><strong>When Enabled:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-123922\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_55_21-image.png\" alt=\"\" width=\"686\" height=\"86\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_55_21-image.png 686w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_55_21-image-300x38.png 300w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/p>\n<p><strong>When Disabled:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-123921\" src=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_56_46-image.png\" alt=\"\" width=\"670\" height=\"88\" srcset=\"https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_56_46-image.png 670w, https:\/\/www.boldgrid.com\/support\/wp-content\/uploads\/2020\/02\/2024-02-01-14_56_46-image-300x39.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/p>\n<h3 data-heading=\"CSS&nbsp;&amp;&nbsp;JS\" id=\"cssjs\">CSS&nbsp;&amp;&nbsp;JS<\/h3>\n<div>\n<div>\n<h4 data-heading=\"Set Last-Modified header\" id=\"set-last-modified-header-cssjs\">Set Last-Modified header (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-last-modified-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>If you&rsquo;re minifying or combining multiple CSS and JS files, the &ldquo;Last-Modified&rdquo; header might not accurately reflect individual file changes within the combined file. This could lead to browsers using outdated cached versions until the entire combined file is updated.<\/p>\n<\/div>\n<div>\n<p>CSS and JS files often undergo frequent changes, even for minor adjustments. This means the &ldquo;Last-Modified&rdquo; header might be updated more often for these files, potentially leading to more server requests to check for updates.<\/p>\n<\/div>\n<h4 data-heading=\"Set expires header\" id=\"set-expires-header-cssjs\">Set expires header (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>With this setting enabled, when a browser requests a CSS or JS file the server includes an &ldquo;Expires&rdquo; header in the response, setting a future expiration date based on the specified lifetime. The browser stores the file in its cache and reuses it for subsequent visits to the same website or pages that use the same file, as long as the expiration date hasn&rsquo;t passed. Once the expiration date is reached, the browser requests a fresh copy of the file from the server, ensuring it has the latest version.<\/p>\n<\/div>\n<div>\n<p>This results in fewer requests to the server for these files, this means less strain on your server resources, potentially improving overall website performance.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Expires header lifetime\" id=\"expires-header-lifetime-cssjs\">Expires header lifetime (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;31536000 seconds ( 1 year )<\/p>\n<\/div>\n<div>\n<p>With the &ldquo;Set expires header&rdquo; enabled, this setting controls how long browsers are instructed to cache CSS and JavaScript files before requesting them from the server again. It does this by adding an &ldquo;Expires&rdquo; header to HTTP responses for these files, indicating the date and time when the cached version should be considered expired.<\/p>\n<\/div>\n<div>\n<p>You can specify a duration for the cache lifetime measured in seconds, then when a browser requests a CSS or JS file the server includes an &ldquo;Expires&rdquo; header in the response, setting a future expiration date based on the specified lifetime.<\/p>\n<\/div>\n<div>\n<ul class=\"has-list-bullet\">\n<li data-line=\"0\">\n<div class=\"list-bullet\"><strong>Balancing Freshness and Performance:<\/strong>&nbsp;Choose a cache lifetime that balances the need for updated content with the performance benefits of caching.<\/div>\n<\/li>\n<li data-line=\"1\">\n<div class=\"list-bullet\"><strong>File Updates:<\/strong>&nbsp;If you make frequent changes to your CSS or JS files, a shorter cache lifetime might be necessary to ensure users see the latest versions.<\/div>\n<\/li>\n<\/ul>\n<div>\n<h4 data-heading=\"Set cache control header\" id=\"set-cache-control-header-cssjs\">Set cache control header (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting specifically targets CSS and JavaScript files, allowing you to fine-tune caching for these critical page elements. When enabled, this option allows your server to include a &ldquo;Cache-Control&rdquo; header in its responses, specifying directives that govern how CSS and JS resources should be cached, stored, and revalidated by browsers and proxies. The global setting offers a broad approach, while this setting provides granular control for these crucial performance-affecting resources. Using both settings is common, with the global setting defining a base framework and the CSS\/JS setting tailoring behavior for specific file types.<\/p>\n<\/div>\n<div>\n<ul class=\"has-list-bullet\">\n<li data-line=\"0\">\n<div class=\"list-bullet\">Enhances control over individual CSS and JS file caching, which can significantly impact page load times.<\/div>\n<\/li>\n<li data-line=\"1\">\n<div class=\"list-bullet\">Enables setting longer cache durations for static CSS\/JS files to further improve performance.<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<div>\n<div class=\"heading-collapse-indicator collapse-indicator collapse-icon\"><\/div>\n<h4 data-heading=\"Cache Control policy\" id=\"cache-control-policy-cssjs\">Cache Control policy (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;<code>cache with max-age (\"public, max-age=EXPIRES_SECONDS\")<\/code><\/p>\n<\/div>\n<div>\n<p>The &ldquo;Cache Control policy&rdquo; setting under the CSS &amp; JS section offers different pre-defined configurations for the &ldquo;Set Cache Control Header&rdquo; setting, simplifying the process of applying appropriate caching strategies for your JavaScript and CSS files. Here&rsquo;s how it works:<\/p>\n<\/div>\n<div>\n<p><strong>Pre-defined Policies:<\/strong><\/p>\n<\/div>\n<div>\n<ul class=\"has-list-bullet\">\n<li data-line=\"0\">\n<div class=\"list-bullet\"><strong>Default:<\/strong>&nbsp;Uses&nbsp;<code>max-age=31536000, public<\/code>&nbsp;directive, caching files for 1 year and enabling sharing in public caches. Suitable for static files that rarely change.<\/div>\n<\/li>\n<li data-line=\"1\">\n<div class=\"list-bullet\"><strong>Aggressive:<\/strong>&nbsp;Applies&nbsp;<code>max-age=7200, public<\/code>&nbsp;directive, caching files for 2 hours. Aims for faster updates at the expense of higher server load.<\/div>\n<\/li>\n<li data-line=\"2\">\n<div class=\"list-bullet\"><strong>Long Expiry:<\/strong>&nbsp;Sets&nbsp;<code>max-age=2592000000, public<\/code>, caching files for 30 years. Ideal for rarely updated files in low-traffic websites.<\/div>\n<\/li>\n<li data-line=\"3\">\n<div class=\"list-bullet\"><strong>No Cache:<\/strong>&nbsp;Uses&nbsp;<code>no-cache, no-store, must-revalidate<\/code>&nbsp;directive, forcing browsers to always revalidate with the server before using the file. Best for dynamically changing files where freshness is paramount.<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<div>\n<p><strong>Impact on CSS and JS Files:<\/strong><\/p>\n<\/div>\n<div>\n<p>Choosing the right policy directly influences how browsers cache these files, impacting page load times, server load, and content freshness. Selecting an appropriate policy can significantly optimize performance for your specific scenarios.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Set entity tag (ETag)\" id=\"set-entity-tag-etag-cssjs\">Set entity tag (ETag) (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>When this option is activated, the server appends an ETag to its responses, serving as a mechanism for identifying changes in CSS and JS files. For frequently accessed CSS and JS files, ETags can significantly improve performance by reducing requests and download sizes. When files remain unchanged, browsers reuse cached versions based on matching ETags, leading to faster page rendering. This is particularly beneficial for static elements like layout styles and core JavaScript libraries.<\/p>\n<\/div>\n<div>\n<p>When a browser requests a resource that was previously requested, it sends its existing ETag in the request header. The server compares the received ETag with the current resource&rsquo;s ETag. If the tags match, the server sends a &ldquo;304 Not Modified&rdquo; response, informing the browser the cached version is still valid. This avoids unnecessary re-downloads, saving bandwidth and improving page load times.<\/p>\n<div>\n<h4 data-heading=\"Set W3 Total Cache header\" id=\"set-w3-total-cache-header-cssjs\">Set W3 Total Cache header (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-w3-total-cache-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(gzip) compression\" id=\"enable-http-gzip-compression-cssjs\">Enable HTTP (gzip) compression (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpgzip-compression\">here<\/a> for further information.<\/p>\n<p>CSS and JS files often contain repetitive patterns and whitespace, making them highly compressible with gzip. Using gzip with these files often results in reductions of 70-80%, which significantly reduces download times and improves page load speeds. Gzip works best with minified CSS and JS files. Minification further shrinks file sizes by removing unnecessary characters and formatting.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(brotli) compression\" id=\"enable-http-brotli-compression-cssjs\">Enable HTTP (brotli) compression (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpbrotli-compression\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Prevent caching of objects after settings change\" id=\"prevent-caching-of-objects-after-settings-change-cssjs\">Prevent caching of objects after settings change (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<p>This setting appears in multiple locations, please check <a href=\"https:\/\/www.boldgrid.com\/support\/w3-total-cache\/configuring-browser-caching-in-w3-total-cache\/#prevent-caching-of-objects-after-settings-change\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Remove query strings from static resources\" id=\"remove-query-strings-from-static-resources-cssjs\">Remove query strings from static resources (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#remove-query-strings-from-static-resources\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>If your CSS or JS files rely on query strings for versioning or cache-busting, removing them might hinder those mechanisms.<\/p>\n<div>\n<h4 data-heading=\"Disable cookies for static files\" id=\"disable-cookies-for-static-files-cssjs\">Disable cookies for static files (CSS\/JS)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#dont-set-cookies-for-static-files\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<h3 data-heading=\"HTML&nbsp;&amp;&nbsp;XML\" id=\"html--xml\">HTML &amp; XML<\/h3>\n<\/div>\n<div>\n<h4 data-heading=\"Set Last-Modified header\" id=\"set-last-modified-header-htmlxml\">Set Last-Modified header (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-last-modified-header\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Set expires header\" id=\"set-expires-header-htmlxml\">Set expires header (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-expires-header\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Expires header lifetime\" id=\"expires-header-lifetime-htmlxml\">Expires header lifetime (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;3600 seconds<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#expires-header-lifetime-cssjs\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>HTML\/XML files often contain dynamic elements such as user-specific content, session data, and other frequently updated information. Overly aggressive caching can lead to outdated content.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Set cache control header\" id=\"set-cache-control-header-htmlxml\">Set cache control header (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-cache-control-header\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Cache Control policy\" id=\"cache-control-policy-htmlxml\">Cache Control policy (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;<code>cache with max-age (\"public, max-age=EXPIRES_SECONDS\")<\/code><\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#cache-control-policy-cssjs\">here<\/a> for further information.<\/p>\n<p>To ensure that this setting will function properly, make sure that you have Page Caching enabled.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Set entity tag (ETag)\" id=\"set-entity-tag-etag-htmlxml\">Set entity tag (ETag) (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<p>This setting appears in multiple locations, please check <a href=\"#set-entity-tag-etag\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>Relying solely on ETags for caching these files might lead to inconsistencies or outdated content being served if the ETag doesn&rsquo;t accurately reflect the current page state.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Set W3 Total Cache header\" id=\"set-w3-total-cache-header-htmlxml\">Set W3 Total Cache header (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-w3-total-cache-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(gzip) compression\" id=\"enablehttpgzip-compression-htmlxml\">Enable&nbsp;HTTP&nbsp;(gzip) compression (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpgzip-compression\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>HTML and XML are predominantly text-based, making them ideal candidates for gzip compression, as it excels at compressing text-heavy content.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(brotli) compression\" id=\"enablehttpbrotli-compression-htmlxml\">Enable&nbsp;HTTP&nbsp;(brotli) compression (HTML\/XML)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpbrotli-compression\">here<\/a> for further information.<\/p>\n<div class=\"\">\n<h3 data-heading=\"Media &amp; Other Files\" id=\"media--other-files\">Media &amp; Other Files<\/h3>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Set Last-Modified header\" id=\"set-last-modified-header-media\">Set Last-Modified header (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<p>This setting appears in multiple locations, please check <a href=\"#set-last-modified-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>Enabling the header for static media like rarely-updated images can be beneficial for efficient caching. Browsers and proxies can check the &ldquo;Last-Modified&rdquo; timestamp to avoid unnecessary re-downloads, improving page load times.<\/p>\n<div>\n<h4 data-heading=\"Set expires header\" id=\"set-expires-header-media\">Set expires header (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-expires-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Expires header lifetime\" id=\"expires-header-lifetime-media\">Expires header lifetime (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;31536000 seconds<\/p>\n<p>This setting appears in multiple locations, please check <a href=\"#expires-header-lifetime-cssjs\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<p>Long cache durations for constantly updated media might cause issues. Choose appropriate durations based on update frequency and desired freshness.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Set cache control header\" id=\"set-cache-control-header-media\">Set cache control header (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-cache-control-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div>\n<h4 data-heading=\"Cache Control policy\" id=\"cache-control-policy-media\">Cache Control policy (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;<code>cache with max-age (\"public, max-age=EXPIRES_SECONDS\")<\/code><\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#cache-control-policy-cssjs\">here<\/a> for further information.<\/p>\n<\/div>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Set entity tag (ETag)\" id=\"set-entity-tag-etag-media\">Set entity tag (ETag) (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-entity-tag-etag\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Set W3 Total Cache header\" id=\"set-w3-total-cache-header-media\">Set W3 Total Cache header (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#set-w3-total-cache-header\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(gzip) compression\" id=\"enablehttpgzip-compression-media\">Enable&nbsp;HTTP&nbsp;(gzip) compression (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpgzip-compression\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Enable&nbsp;HTTP&nbsp;(brotli) compression\" id=\"enablehttpbrotli-compression-media\">Enable&nbsp;HTTP&nbsp;(brotli) compression (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#enablehttpbrotli-compression\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Prevent caching of objects after settings change\" id=\"prevent-caching-of-objects-after-settings-change-media\">Prevent caching of objects after settings change (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"https:\/\/www.boldgrid.com\/support\/w3-total-cache\/configuring-browser-caching-in-w3-total-cache\/#prevent-caching-of-objects-after-settings-change\">here<\/a> for further information.<\/p>\n<\/div>\n<div class=\"\">\n<h4 data-heading=\"Remove query strings from static resources\" id=\"remove-query-strings-from-static-resources-media\">Remove query strings from static resources (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Disabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"#remove-query-strings-from-static-resources\">here<\/a> for further information.<\/p>\n<div>\n<h4 data-heading=\"Disable cookies for static files\" id=\"disable-cookies-for-static-files-media\">Disable cookies for static files (Media)<\/h4>\n<\/div>\n<div>\n<p><strong>Default value:<\/strong>&nbsp;Enabled<\/p>\n<\/div>\n<div>\n<p>This setting appears in multiple locations, please check <a href=\"https:\/\/www.boldgrid.com\/support\/w3-total-cache\/configuring-browser-caching-in-w3-total-cache\/#dont-set-cookies-for-static-files\">here<\/a> for further information.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Browser caching is extremely important for improving your WordPress performance and speed, and it is recommended that you enable it in nearly all situations. The good news is that it is very easy to enable for WordPress with W3 Total Cache. Browsers are already parsing HTTP headers for your website, so we can add some [&hellip;]<\/p>\n","protected":false},"author":529,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"bgseo_title":"Configuring WordPress Browser Caching using W3 Total Cache by BoldGrid","bgseo_description":"Browser caching is extremely important for improving site performance, and it is recommended that you enable it in nearly all situations. The following W3 Total Cache guide will walk you through what it is, and what options you should enable to ensure maximum performance for your WordPress website. ","bgseo_robots_index":"index","bgseo_robots_follow":"follow","footnotes":""},"categories":[745,692],"tags":[],"class_list":["post-18775","post","type-post","status-publish","format-standard","hentry","category-browser-cache","category-w3-total-cache"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/posts\/18775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/users\/529"}],"replies":[{"embeddable":true,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/comments?post=18775"}],"version-history":[{"count":38,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/posts\/18775\/revisions"}],"predecessor-version":[{"id":125524,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/posts\/18775\/revisions\/125524"}],"wp:attachment":[{"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/media?parent=18775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/categories?post=18775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.boldgrid.com\/support\/wp-json\/wp\/v2\/tags?post=18775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}