是否可以使用javascript查找文件的上次修改时间?

时间:2011-04-21 15:54:18

标签: php javascript jquery

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

感谢。

3 个答案:

答案 0 :(得分:12)

如果服务器正在为该特定文件发送准确的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());
});

答案 1 :(得分:1)

简短的回答:除了AJAX +服务器端脚本(在你的情况下,jQuery + php),没办法

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

如果你要检查的m-time文件在客户端的计算机上,那么你运气不好。故意设计Javascript以防止访问客户端的文件。 (它只能访问客户端计算机上 的cookie,但是,因为浏览器(不是任何javascript)将这些加载到其工作环境中。)

答案 2 :(得分:0)

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

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