# 304 — narration script Runtime 2:07. Timecodes are when each chapter starts; the film's animation is keyed to these cue times, so a recorded voice-over should keep each line near its timecode. ## 0:00 · The second visit - `0:01` Load a page twice, and watch the Network panel the second time. Some rows don't say 200. They say 304. - `0:10` Three oh four means Not Modified. It's the request you almost skipped. ## 0:17 · Is my copy still good? - `0:18` The first time, Demo Company sent the cat photo with two extra headers. One said: keep a copy, but check with me before you use it. The other, the ETag, is a fingerprint of the file. - `0:33` The second time, the browser asks a question instead of a demand. If none match this fingerprint, send it. The file hasn't changed, so the server answers three oh four: no body, just a few hundred bytes of headers. Forty-two thousand bytes stay home. - `0:53` Fun fact: the older version of the question uses a date. Last-Modified, then If-Modified-Since. The fingerprint is more exact. ## 1:04 · Three answers to "keep it?" - `1:05` Every response can say how long to keep it. No-store: don't keep a copy, download every time. - `1:13` Max-age zero, must-revalidate: keep it, but ask first. That's the three oh four. It still costs a round trip, but almost no bytes. - `1:25` A long max-age: keep it for a year and don't even ask. No request at all. That's only safe when the URL changes whenever the file does, so build tools put a fingerprint in the file name. ## 1:41 · Choose per file - `1:41` So choose per file. Pages that change: ask first. Fingerprinted scripts, styles and images: keep for a year. Private or one-time answers: don't store. - `1:55` Open Demo Company's cache page, fetch each card twice, and watch all three answers happen.