Astro 실험적 경로 캐시

Experimental Astro route caching

Astro 6은 서버 렌더 응답의 캐시 수명과 무효화를 경로에서 선언하는 실험 API를 제공합니다.

···
html
<section class="stage"><div class="heading">ROUTE CACHE <span class="hint">miss / hit / invalidate</span></div><div class="cache-flow"><div class="tile request">GET /news</div><div class="arrow">→</div><div class="cache-box">CACHE <b id="cache-state">MISS</b></div><div class="arrow">→</div><div class="tile renderer">RENDER</div></div><div class="caption" id="cache-caption">First request fills the cache</div></section>
css
.stage{width:min(94vw,780px);height:min(88vh,322px);padding:clamp(12px,3vmin,20px);border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 12px 36px #0001;display:flex;flex-direction:column;gap:clamp(7px,2vmin,14px);font:500 clamp(12px,3.5vmin,17px)/1.3 var(--font-sans,system-ui,sans-serif);overflow:hidden}.heading{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:750;color:var(--accent)}.hint{color:var(--muted);font-size:clamp(12px,3.2vmin,14px);font-weight:500}.caption{margin-top:auto;color:var(--muted);font-size:clamp(12px,3.2vmin,14px)}.row{display:flex;gap:clamp(5px,1.5vmin,12px);align-items:center}.tile{padding:clamp(6px,1.8vmin,13px);border:1px solid var(--line);border-radius:9px;background:var(--bg);text-align:center;min-width:0}.arrow{color:var(--accent);font-weight:800}.stage [data-on]{transition:background .3s,border-color .3s,opacity .3s,transform .3s}.stage .on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.cache-flow{flex:1;display:flex;align-items:center;justify-content:center;gap:clamp(3px,1.3vmin,12px)}.cache-flow .tile,.cache-box{flex:1;max-width:145px;min-width:0;min-height:70px;display:flex;flex-direction:column;align-items:center;justify-content:center}.cache-box{border:2px solid var(--accent);border-radius:9px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));font-weight:700}.cache-box b{color:var(--accent);margin-top:5px}.renderer{opacity:1;transition:opacity .3s}.stage[data-step="1"] .renderer{opacity:.2}.stage[data-step="2"] .cache-box{border-color:var(--accent-3)}.stage small,.stage button,.stage .cards b,.stage .phase b,.stage .pair b,.stage .tree-mini b{font-size:clamp(12px,3.2vmin,14px)!important}
js
const stage=document.querySelector(".stage"),state=document.getElementById("cache-state"),caption=document.getElementById("cache-caption"),states=["MISS","HIT","PURGE"],notes=["First request fills the cache","Stored response skips rendering","Invalidation forces fresh output"];let step=0;function tick(){stage.dataset.step=String(step);state.textContent=states[step];caption.textContent=notes[step];step=(step+1)%3}tick();let timer=setInterval(tick,1000);stage.addEventListener("pointerdown",()=>{clearInterval(timer);tick()})

Astro 6의 실험적 경로 캐시는 SSR 응답을 저장하고 경로에서 유효 기간과 태그를 지정하게 합니다. 캐시 적중이면 다시 렌더하지 않고 저장된 응답을 제공합니다.

공식 릴리스 시점의 내장 메모리 제공자는 주로 Node 어댑터에 적합하며, 다른 플랫폼 지원은 별도로 확인해야 합니다. 데모는 미스·히트·무효화 뒤 재생성을 순서대로 보여줍니다.

언제 쓰나

Astro SSR 응답을 반복 제공하고 싶을 때 실험 기능과 저장소 제공자의 지원 범위를 검토합니다.

페이지로 열기 ↗