Closed4

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

enumura1enumura1

はじめに

見てるサイトがいつ更新されたか知りたい場面があったので、どこを見ればサイトの最終更新日時を確認できるのか調べてみました。
結論としては、外部から正確な更新日時を取得するのは難しそうだった。

結論

HTTPレスポンスヘッダーの Last-Modified でサーバーがリソースの最終更新日時として返す情報を確認できると思ったが、CDNキャッシュの処理日時が返されるように見えた。

enumura1enumura1

環境

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がフォールバックとして使用される。

enumura1enumura1

ブラウザのDevToolsで確認

次の手順で確認した。

手順

  1. Webサイトにアクセス
  2. ChromeのDevToolsを開く(F12)
  3. Networkタブを選択
  4. ページをリロードして確認したいリクエストを選択
  5. 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管理画面で確認)
enumura1enumura1

なぜこうなるのか

CDNによる影響なのではと考えている。
Vercelでホスティングしている上記の検証用サイトはCDN経由で配信されており、Last-ModifiedはCDNキャッシュの更新日時を示している可能性がある。

実際のデプロイ(5月17日)
  ↓
VercelのCDN(Edge Network)にキャッシュ
  ↓
定期的なキャッシュ更新・リバリデーション
  ↓
Last-Modified: 6月15日(CDNキャッシュ更新日時)

そのため今回はVecelでしか見てないが、devtoolやcurlでは外部からサイトの最終更新日は見れないのではないかと思いました。

このスクラップは1ヶ月前にクローズされました