(망함) Caddy, astro와 Nix의 환장 콜라보
요약
새 글을 쓰고 당당하게 배포를 했는데 홈페이지가 업데이트… 안돼? 계속 예전글이 최신으로 나와? 캐시를 날려야만 새 글이 보인다구?
브라우저 관점
홈페이지를 새로고침 했는데 서버에서 304 not modified를 보내준다. 어라? 예전 캐시를 그냥 쓰면 되겠네? - 문제의 시작
왜? 서버는 304를 보냈는가
보니까 갱신 체크를 modified time + file size로 하나 본데, modified time이 1970-01-01 00:00:01 (그러니까, unix epoch 타임 + 1초) 이어서 시간 검사는 무용지물이 되었고 파일 크기만 남았다. 즉 우연히 홈페이지 파일 크기가 동일하면 제대로 업데이트가 안된다는 상황
왜? epoch time이 되었는가
알고보니 nix에서 빌드하면서 모조리 epoch로 리셋을 해버린다. 따로 설정할 방법도 없는듯
그럼 어떻게 해?
보시다시피 뻘글 하나 더 써서 크기가 달라지길 비는 수밖에… 아니면
파일명에 내용물 hash를 붙이는 방법이 있을텐데 index.html
에 적용할 순
없으니…
그럼 어떻게 해? ver 2
그 이후에도 여전히 갱신 문제가 생겨서 좀 더 파보니,
- 아마 파일 크기로 ETag 만드는건 file_server에선 아예 안하는듯?
- 따라서 오직 modified-time만 쓰는데, 이제 아예 epoch였으면 go http 서버에서 걸러줬을 텐데 epoch + 1초라서 Go 구현에서도 안거르고 보내고 있는듯?
- Caddy 설정에서 특정 헤더를 제거하는 기능이 있으니 그걸로 아예 Last-Modified 헤더를 제거하는 게 낫겠다는 듯?
일단은 Last-Modified를 제거해둔 상황. 엄연히 캐시를 쓰는게 좋은데 이것때문에 못쓴다니 고통스럽다.