【问题标题】:Is it possible with javascript to find file's last modified time?是否可以使用 javascript 查找文件的最后修改时间?
【发布时间】:2011-04-21 15:54:18
【问题描述】:

有可能吗?现在,我已经完成了实时聊天,在 jquery 的帮助下,我连接到 .php 文件并检查上次修改时间,如果不是像以前那样,我检索消息。如果可以在 javascript 中使用,我可能会节省大量资源。

谢谢。

【问题讨论】:

  • 如果可以使用 jQuery,那么可以使用普通的旧 Javascript。你能分享一下你用 jQuery 做了什么吗?
  • 但是客户端实际上从来没有收到过 php 文件,他们真的收到了运行该文件的输出。我怀疑客户能否确定这一点,但我会感兴趣地关注这个问题。
  • @Jonathan:我使用 jQuery 的 ajax 并为此使用 .php 文件。
  • 我正在考虑使用 ajax 来获取 getResponseHeader('Last-modified')

标签: php javascript jquery


【解决方案1】:

如果服务器正在为该特定文件发送准确的 Last-Modified 标头,则绝对有可能:

var getMTime = function(url, callback) {
  var xhr = XMLHttpRequest();
  xhr.open('HEAD', url, true); // use HEAD - we only need the headers
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      var mtime = new Date(xhr.getResponseHeader('Last-Modified'));
      if (mtime.toString() === 'Invalid Date') {
        callback(); // dont want to return a bad date
      } else {
        callback(mtime);
      }
    }
  }
  xhr.send();
};

getMTime('url here', function(mtime) {
  if (mtime) console.log('the mtime is:' + mtime.toISOString());
});

【讨论】:

  • var xhr = XMLHttpRequest(); 在 chrome 中对我来说失败了,所以我用 $.ajax 做到了,并且该方法在那里有效。 +1 只需要稍作修改的有用答案。
【解决方案2】:

简短回答:除了 AJAX + 服务器端脚本(在你的情况下,jQuery + php)之外别无他法

作为客户端脚本,javascript 在客户端计算机上运行,​​因此如果您要检查其 m-time 的文件在服务器上,那么使用 AJAX 和服务器端脚本是正确的。没有其他方法行得通。

如果您要检查其 m-time 的文件在客户端的计算机上,那么您就不走运了。 Javascript 旨在防止访问客户端的文件。 (它只能访问 位于客户端计算机上的 cookie,因为浏览器(不是任何 javascript)会将它们加载到其工作环境中。)

【讨论】:

  • 这不再是真的,您可以使用 HTML5 中的新 FileReader API 访问本地文件。您需要用户为您选择文件,但是,您不能只是开始嗅探他们的系统。
  • 啊,确实如此。我没想到编码器会检查这样一个文件的元数据。
【解决方案3】:

也许可以使用 HTTP ETag 标头来检查页面是否已更改。第一个响应包含 ETag,您的客户端将其用于以下请求。如果页面未被修改,您的 PHP 服务器端代码将发送 304。

http://en.wikipedia.org/wiki/HTTP_ETag

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2011-12-31
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多