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