<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>配置 on bouine</title><link>https://bouine.org/zh/docs/configuration/</link><description>Recent content in 配置 on bouine</description><generator>Hugo</generator><language>zh</language><atom:link href="https://bouine.org/zh/docs/configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>缓存策略</title><link>https://bouine.org/zh/docs/configuration/cache-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/cache-policy/</guid><description>&lt;h2 id="ttl-selection"&gt;TTL selection&lt;/h2&gt;
&lt;p&gt;bouine picks freshness in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;CDN-Cache-Control&lt;/code&gt; (RFC 9211 targeted header — overrides &lt;code&gt;Cache-Control&lt;/code&gt; for shared caches)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s-maxage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max-age&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Expires&lt;/code&gt; (valid dates only; syntactically invalid Expires values are ignored)&lt;/li&gt;
&lt;li&gt;Route &lt;code&gt;ttl_default&lt;/code&gt; (operator fallback when origin sends no freshness)&lt;/li&gt;
&lt;li&gt;Heuristic freshness from &lt;code&gt;Last-Modified&lt;/code&gt; (10% of &lt;code&gt;Date − Last-Modified&lt;/code&gt;, where allowed by status code)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the route has &lt;code&gt;ttl_override&lt;/code&gt; set, its value &lt;strong&gt;replaces&lt;/strong&gt; the result of
this waterfall entirely. See 

&lt;a class="link link--text" href="https://bouine.org/zh/docs/configuration/cache-policy/#ttl-override"&gt;TTL override&lt;/a&gt; below.&lt;/p&gt;</description></item><item><title>流式与实时响应</title><link>https://bouine.org/zh/docs/configuration/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/streaming/</guid><description>&lt;p&gt;bouine 从不进行不必要的响应体缓冲。本页描述三种流式行为，以及与
之交互的两项过载保护。&lt;/p&gt;
&lt;h2 id="server-sent-eventssse"&gt;Server-Sent Events（SSE）&lt;/h2&gt;
&lt;p&gt;bouine 将 Server-Sent Events 作为&lt;strong&gt;端到端的实时流&lt;/strong&gt;服务。携带
&lt;code&gt;Accept: text/event-stream&lt;/code&gt; 的请求（WHATWG 客户端契约——浏览器、
&lt;code&gt;EventSource&lt;/code&gt; 和 AI SDK 的行为）以无缓冲流的方式服务：永不缓存、
永不被 singleflight 合并到其他客户端的流上。&lt;/p&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;routes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ff79c6"&gt;match&lt;/span&gt;: { &lt;span style="color:#ff79c6"&gt;path_prefix&lt;/span&gt;: /chat/ }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;pool&lt;/span&gt;: llm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;cache&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;ttl_default&lt;/span&gt;: 60s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;无需任何路由级配置：&lt;code&gt;Accept&lt;/code&gt; 头即契约。基于 POST 的 SSE（AI API 的
主流形态——请求体后跟流式响应）同样适用，其

&lt;a class="link link--text" href="../cache-policy/#write-method-invalidation-postputdelete"&gt;写方法失效&lt;/a&gt;
语义保持不变：2xx/3xx 响应在&lt;strong&gt;收到响应头时&lt;/strong&gt;即清除受影响的缓存
条目，而非等待（无限的）响应体。&lt;/p&gt;</description></item><item><title>Storage tiers</title><link>https://bouine.org/zh/docs/configuration/storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/storage/</guid><description>&lt;p&gt;bouine uses a two-tier storage architecture: a fast in-memory &lt;strong&gt;hot tier&lt;/strong&gt; and an optional disk-backed &lt;strong&gt;warm tier&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="hot-tier-ram"&gt;Hot tier (RAM)&lt;/h2&gt;
&lt;p&gt;The primary cache store. Every cache hit is served from here.&lt;/p&gt;</description></item><item><title>静态文件服务</title><link>https://bouine.org/zh/docs/configuration/static-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/static-files/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;A route can serve files from a local directory instead of proxying to an
upstream pool. This eliminates the need for a separate origin server (nginx,
Caddy) when the content is already on the same machine as bouine — useful
for single-node CDN edges, sidecar deployments, and static asset routes.&lt;/p&gt;</description></item><item><title>TLS</title><link>https://bouine.org/zh/docs/configuration/tls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/tls/</guid><description>&lt;p&gt;bouine terminates TLS natively for HTTP/1.1. No external TLS proxy is needed.&lt;/p&gt;
&lt;h2 id="minimal-tls-config"&gt;Minimal TLS config&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;listen&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;https&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;:443&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;admin&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;:9000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;tls&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;certs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ff79c6"&gt;cert_file&lt;/span&gt;: /etc/bouine/tls/cert.pem
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;key_file&lt;/span&gt;: /etc/bouine/tls/key.pem&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="multiple-certificates-sni"&gt;Multiple certificates (SNI)&lt;/h2&gt;
&lt;p&gt;Serve different certificates per hostname:&lt;/p&gt;</description></item><item><title>Clustering</title><link>https://bouine.org/zh/docs/configuration/cluster-modes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/cluster-modes/</guid><description>&lt;p&gt;Cluster mode lets multiple bouine pods share cache reads, broadcast invalidations, and reduce origin load.&lt;/p&gt;
&lt;h2 id="choosing-a-mode"&gt;Choosing a mode&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;listen&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;cluster&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#34;:8443&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;cluster&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;mode&lt;/span&gt;: strong &lt;span style="color:#6272a4"&gt;# &amp;#34;strong&amp;#34; (default) | &amp;#34;eventual&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Use this decision guide:&lt;/p&gt;</description></item><item><title>Helm chart reference</title><link>https://bouine.org/zh/docs/configuration/helm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/helm/</guid><description>&lt;p&gt;The Helm chart deploys bouine as a StatefulSet with headless Service for gossip peer discovery. Source: 

&lt;a class="link link--text" href="https://github.com/bouine-cache/bouine/tree/main/deploy/helm/bouine" rel="external"&gt;&lt;code&gt;deploy/helm/bouine/&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="install"&gt;Install&lt;/h2&gt;



&lt;div class="expressive-code"&gt;
 &lt;figure class="frame is-terminal not-content"&gt;
 &lt;figcaption class="header"&gt;
 &lt;span class="title"&gt;&lt;/span&gt;
 &lt;/figcaption&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo add bouine https://charts.bouine.org
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm install bouine bouine/bouine &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --namespace bouine --create-namespace &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set &lt;span style="color:#f1fa8c"&gt;&amp;#34;config.upstream_pools[0].name=app&amp;#34;&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set &lt;span style="color:#f1fa8c"&gt;&amp;#34;config.upstream_pools[0].targets[0]=app.default.svc:8080&amp;#34;&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set &lt;span style="color:#f1fa8c"&gt;&amp;#34;config.routes[0].pool=app&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;To install from a local checkout, replace &lt;code&gt;bouine/bouine&lt;/code&gt; with the chart
directory &lt;code&gt;deploy/helm/bouine&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>实验性功能</title><link>https://bouine.org/zh/docs/configuration/experimental/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bouine.org/zh/docs/configuration/experimental/</guid><description>&lt;p&gt;Experimental features are opt-in capabilities that bypass some of bouine&amp;rsquo;s standard processing paths for improved performance. They are gated behind the &lt;code&gt;experimental&lt;/code&gt; config section and default to off.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Experimental features may change or be removed between releases. Test thoroughly before enabling in production.&lt;/p&gt;</description></item></channel></rss>