You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript获取服务器托管文件的lastModified日期?

这个需求完全可实现,你之前遗漏的核心逻辑是:同域托管的静态文件响应头默认会携带Last-Modified字段,存储服务器侧记录的文件最后修改时间,不需要拉取完整文件内容就能获取到。

核心实现要点
  • 优先使用HEAD方法发起请求,服务器只会返回响应头、不会返回文件内容,大幅减少不必要的流量开销
  • 通过fetch返回的Response对象的headers属性,即可读取到Last-Modified字段值,该值为标准GMT时间字符串,可以直接传入Date对象做格式化
  • 若遇到极少数静态服务不支持HEAD请求的场景,可以降级使用普通GET请求,拿到响应头后不需要读取响应体内容,不会阻塞时间信息的获取
  • 该方案的前提是托管服务器没有主动移除Last-Modified响应头,Nginx、Apache、对象存储、静态页面托管平台默认都会返回该字段,不需要额外配置
可直接运行的实现代码
<!DOCTYPE html>
<html>
<script>
async function printFileMtime() {
  // 优先发HEAD请求拿响应头
  let response = await fetch("myfile.txt", {
    method: "HEAD",
    cache: "no-store"
  });

  // 兼容不支持HEAD请求的服务,降级为GET
  if (response.status === 405 || !response.ok) {
    response = await fetch("myfile.txt", {
      cache: "no-store"
    });
  }

  const mtimeStr = response.headers.get("last-modified");
  if (!mtimeStr) {
    console.log("当前服务器未返回文件最后修改时间字段,请检查服务端配置");
    return;
  }

  const mtime = new Date(mtimeStr);
  // 直接打印本地时区格式的修改时间,可按需自定义格式化逻辑
  console.log("myfile.txt最后修改时间:", mtime.toLocaleString());
}

printFileMtime();
</script>
</body>
</html>
特殊场景说明

如果你的服务器主动配置了移除Last-Modified响应头,纯前端静态代码就无法拿到文件修改时间了,需要调整服务端配置保留该字段,或者单独写后端接口返回对应文件的修改时间。

内容的提问来源于stack exchange,提问作者EuRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:33:24