<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tags on Static Bunny</title><link>https://bunny-static.garrido.io/tags/</link><description>Recent content in Tags on Static Bunny</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><atom:link href="https://bunny-static.garrido.io/tags/index.xml" rel="self" type="application/rss+xml"/><item><title>Full page cache</title><link>https://bunny-static.garrido.io/full-page-cache/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>https://bunny-static.garrido.io/full-page-cache/</guid><description>&lt;p&gt;See the &lt;a href="https://garrido.io/notes/caching-html-in-cdn/"&gt;original post on my blog&lt;/a&gt; for context on how to setup edge rules in Bunny so that HTML is cached on Bunny&amp;rsquo;s CDN&amp;rsquo;s points of presence.&lt;/p&gt;
&lt;p&gt;This site&amp;rsquo;s HTML and XML are cached in Bunny&amp;rsquo;s European and North American edge endpoints. When the browser requests this page, the following scenarios happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;200&lt;/code&gt; is returned with the &lt;code&gt;cdn-cache: MISS&lt;/code&gt; header if the page is not cached in the closest edge endpoint.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;200&lt;/code&gt; is returned with the &lt;code&gt;cdn-cache: HIT&lt;/code&gt; header if the page is already cached in the closest edge endpoint.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;304&lt;/code&gt; is returned with the &lt;code&gt;cdn-cache: HIT&lt;/code&gt; header if the page is already cached in the closest edge endpoint, and the browser has already requested it before, and the cached page has not been modified since then.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The browser is instructed to always validate with the server, no browser cache is instructed otherwise the site owner cannot have changes propagated to browsers at will.&lt;/p&gt;
&lt;p&gt;For the sake of a counterexample, I&amp;rsquo;ve setup the rules so that &lt;a href="https://bunny-static.garrido.io/no-cache/"&gt;/no-cache/&lt;/a&gt; bypasses the rules. This page hits the origin, which is Bunny&amp;rsquo;s file storage endpoint in Frankfurt, Germany.&lt;/p&gt;
&lt;p&gt;You might be interested in my post on how to &lt;a href="https://garrido.io/notes/rclone-cache-invalidation-manifest/"&gt;automate cache invalidation using Rclone&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Redirects for canonical URLs</title><link>https://bunny-static.garrido.io/redirects-for-canonical-urls/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>https://bunny-static.garrido.io/redirects-for-canonical-urls/</guid><description>&lt;p&gt;See the &lt;a href="https://garrido.io/notes/bunny-edge-rules-for-html-canonical-urls/"&gt;original post on my blog&lt;/a&gt; for context on how to setup edge rules in Bunny such that only the &lt;a href="https://en.wikipedia.org/wiki/Canonical_link_element"&gt;canonical URL&lt;/a&gt; is served for a given page.&lt;/p&gt;
&lt;p&gt;For example, consider the &lt;a href="https://bunny-static.garrido.io/about/"&gt;about page&lt;/a&gt;. Without any configuration, Bunny will serve the page at the following URLs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/about/index.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/about&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/about/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The canonical link element for the about page specifies that &lt;code&gt;/about/&lt;/code&gt; is the path in the canonical URL:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;canonical&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://localhost:1313/about/&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can setup edge rules that redirect &lt;code&gt;/about/index.html&lt;/code&gt; and &lt;code&gt;/about&lt;/code&gt; to &lt;code&gt;/about/&lt;/code&gt;. These perform a &lt;code&gt;301&lt;/code&gt; permanent redirect, taking care to preserve query parameters:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about/index.html"&gt;/about/index.html&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about/index.html?a&amp;amp;b=1"&gt;/about/index.html?a=0&amp;amp;b=1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/?a=0&amp;amp;b=1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about"&gt;/about&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about?a=0&amp;amp;b=1"&gt;/about?a=0&amp;amp;b=1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/?a=0&amp;amp;b=1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about/"&gt;/about/&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://bunny-static.garrido.io/about/?a=0&amp;amp;b=1"&gt;/about/?a=0&amp;amp;b=1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/about/?a=0&amp;amp;b=1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For the sake of a counterexample, I&amp;rsquo;ve setup the rules so that &lt;code&gt;/no-redirects*&lt;/code&gt; bypasses the rules. As such, all three URLs serve the same page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bunny-static.garrido.io/no-redirects/index.html"&gt;/no-redirects/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bunny-static.garrido.io/no-redirects"&gt;/no-redirects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bunny-static.garrido.io/no-redirects/"&gt;/no-redirects/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>