你真的了解 lastModified 吗?

作者:chilleen 来源:ITPOW(原创) 日期:2006-3-8

lastModified 是 JavaScript 里面 document 的一个属性,用于表示网页的最后更新时间。

例如:
<script type="text/javascript" language="javascript">
<!--
document.write("本网页的最后更新时间为:" + document.lastModified);
//-->
</script>

它自动获取网页的最后保存时间并显示。

不过关于 lastModified 几个现象,我们不得不作解释。

一、在 FrontPage 等网页编辑器里预览时,显示的值不可靠。在 FrontPage 等网页编辑器里预览时,总是显示预览时的时间,而不是显示最后更新时间,同样双击文件直接打开,也可能会显示不可靠时间。我们必须使用 HTTP 协议来访问网页才能得到正确的 lasModified 值。

二、在 IE 和 NS 浏览器中,显示的结果不同。IE 中显示可能类似于:03/07/2006 19:24:54,而 NS 中显示可能类似于:Tue, 07 Mar 2006 11:24:54 GMT。除开时间格式不说,为什么二者在会相差 8 个小时呢?注意 NS 中有个 GMT,说明它使用的是 GMT 格式,而中国标准时间恰好比格林威治时间早 8 个小时,所以就有 8 个小时的时差了。题外话,这里我认为 NS 毫无亲切可言,用 GMT 时间干什么,难道我们平时问几点钟都说格林威治时间吗,我们都是说当地时间,IE 果然人性化。编者者: GMT 即格林威治标准时间,现在也称 UTC 即全球标准时间。

三、ASP 网页里使用 lastModified 不可靠。我们可以发现每次刷新页面时,最后更新时间总是刷新的时间。这是为什么呢?让我们看看 lastModified 的原理,根据 RFC 1945,HTTP/1.0协议,Last-Modified 是 header 中的一个字段,这就是前面现象一提到的,为什么在 FrontPage 里不能正确显示最后更新时间,因为没有使用 HTTP 协议访问。在 ASP 中要使 lastModified 有效,就得手动添加最后更新时间到 header。(另外,不知升级到 IIS6.0 是否可以解决。)

添加 header 用:<%Response.AddHeader "Last-modified", GMT 格式的时间%>,注意这里的 GMT 格式时间是传输时协议所使用的,与前面的浏览器用哪种方式显示时间没有关系。VBScript 语言里面没有将本地时间转换为 GMT 格式的时间的函数,所以使用起来非常不方便。

我不明白的是,我们得手动指定网页最后更新时间,先手动指定,然后通过 ASP 将值添加到 header,再利用 JavaScript 取该值,这岂不是画蛇添足,既然是手动指定该时间,何不直接将这个时间写在 HTML 里?

相关文章