webサイトの最終更新日時を外部から確認できるのか調べてみた

はじめに
見てるサイトがいつ更新されたか知りたい場面があったので、どこを見ればサイトの最終更新日時を確認できるのか調べてみました。
結論としては、外部から正確な更新日時を取得するのは難しそうだった。
結論
HTTPレスポンスヘッダーの Last-Modified でサーバーがリソースの最終更新日時として返す情報を確認できると思ったが、CDNキャッシュの処理日時が返されるように見えた。

環境
- DevTools:ブラウザで視覚的に確認
- 検証用に作ったサイト:https://lastmodified-attr-on-header2.vercel.app/
Last-Modifiedヘッダーとは?
HTTPレスポンスヘッダーの一つ。
リソースの最終更新日時と推定する日時情報で、オリジンサーバーが返してくれる。
mdnには以下の記載があります。
HTTP の Last-Modified レスポンスヘッダーは、リソースが最後に変更されたとオリジンのサーバーが判断している日時を含みます。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Last-Modified
# Last-Modified: <曜日>, <日> <月> <年> <時>:<分>:<秒> GMT
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
日時は常にGMT(協定世界時)で表示。
GMTはUTCと時間は、算出方法が違うものの、結果の時間はほとんど同じものみたい。
ETagとの関係
また、mdnには次の記述もあります。
ETag ヘッダーよりも精度は低く、その代替手段になります。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Last-Modified
ファイルのバージョンを一意に識別するEtagほどの精度はなさそうだが、ETagが利用できない環境の場合、Last-Modifiedがフォールバックとして使用される。

ブラウザのDevToolsで確認
次の手順で確認した。
手順
- Webサイトにアクセス
- ChromeのDevToolsを開く(F12)
- Networkタブを選択
- ページをリロードして確認したいリクエストを選択
- Response Headersを確認
今回はWebサイトのコンテンツの更新日時を知りたかったので、documentタイプ(HTMLファイル)のLast-Modifiedを確認
documentリクエストとは?
HTML または XML を取得するためのリクエスト
参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Last-Modified
実際に検証用サイトで確認した結果
last-modified
につい先ほど1回アクセスした日時が記載されてることを確認。
Response Headers:
last-modified: Sun, 15 Jun 2025 06:20:21 GMT
~~~
content-type: text/html; charset=utf-8
cache-control: public, max-age=0, must-revalidate
server: Vercel
x-vercel-cache: HIT
実際の最終デプロイ日は下記の通りなので、想定とは異なる結果になった。
2025年5月17日 23:59:23 JST(Vercel管理画面で確認)

なぜこうなるのか
CDNによる影響なのではと考えている。
Vercelでホスティングしている上記の検証用サイトはCDN経由で配信されており、Last-ModifiedはCDNキャッシュの更新日時を示している可能性がある。
実際のデプロイ(5月17日)
↓
VercelのCDN(Edge Network)にキャッシュ
↓
定期的なキャッシュ更新・リバリデーション
↓
Last-Modified: 6月15日(CDNキャッシュ更新日時)
そのため今回はVecelでしか見てないが、devtoolやcurlでは外部からサイトの最終更新日は見れないのではないかと思いました。