【问题标题】:Last Modified Date of a file on a web site网站上文件的最后修改日期
【发布时间】:2010-11-05 07:24:17
【问题描述】:

有没有办法获取网站上文件的最后修改日期?

即这是我在那里的一个示例文件: http://www.ymcadetroit.org/atf/cf/%7B2101903E-A11A-4532-A64D-9D823368A605%7D/Birmingham_Youth_Sports_Parent_Manual.pdf

【问题讨论】:

  • 你能澄清一下吗?需要什么时间?客户端程序?服务器上的东西?浏览器脚本?
  • @MartinThoma:这是较早的帖子 - 它是相反的方式......
  • 我认为年龄无关紧要:meta.stackoverflow.com/q/315472/562769 - 旧的可以标记为新的副本。对我来说,这有助于意识到关闭重复并不意味着侮辱/惩罚。这只是一种组织形式。最重要的是答案。
  • 对于等效的Java代码,参考这个post

标签: html http


【解决方案1】:

只有纯 HTML,你不能。

您可以使用 PHP、ASP 或任何其他服务器端语言。

【讨论】:

    【解决方案2】:

    我相信必须将 Web 服务器配置为在 HTTP 标头中发送最后修改日期,这当然是一种方式。查看本文档的第 14.29 节最后修改:

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

    【讨论】:

      【解决方案3】:

      这里有一些 C# 代码:

      public DateTime GetLastModifyTime(string url)
      {
              WebRequest request = WebRequest.Create(url);
              request.Credentials = CredentialCache.DefaultNetworkCredentials;
              request.Method = "HEAD";
      
              using (WebResponse response = request.GetResponse())
              {
                  string lastModifyString = response.Headers.Get("Last-Modified");
                  DateTime remoteTime;
                  if (DateTime.TryParse(lastModifyString, out remoteTime))
                  {
                      return remoteTime;
                  }
      
                  return DateTime.MinValue;
              }
      }
      

      【讨论】:

        【解决方案4】:

        HTTP 打算用Last-Modified header field 声明最后修改日期。但是服务器需要知道那个日期。

        在其内容直接发送到客户端且服务器不以其他方式解释的静态文件(例如.html、.css、.js)上,它使用该文件的最后修改日期。但是对于动态生成内容的文件(PHP、Python 等),脚本需要自己指定该信息。但不幸的是,许多脚本不这样做。

        因此,如果存在Last-Modified 标头字段,您可以使用该信息。但如果不是,则无法确定最后修改日期。

        【讨论】:

          【解决方案5】:

          我知道这个问题已经有 4 年的历史了,但网络搜索证明令人满意的答案仍然很少。彼得的回答是解决方案的一部分。当我有同样的问题要解决时,这让我开始了。但剩下的解决方案......

          正如他所说,必须将网络服务器配置为发送上次修改日期......那么您如何配置网络服务器?

          假设您有必要的控制级别,您首先需要启用服务器端包含。有几种方法可以做到这一点 - 其中之一是“xbithack”。一个很好的参考是http://httpd.apache.org/docs/current/howto/ssi.html。

          假设您已完成此操作,您需要在任何需要解析服务器端包含的 html 文件上设置执行位。这可以在类 UNIX 系统的命令行中完成:chmod u+x file.html 或在 Mac 上对文件使用 get-info (command-I)。

          这让 sn-p 实际放入您的文件中,如下所示:

          This document last modified <!--#flastmod file="index.html" -->

          由于我发现了很多很多不包含此内容的建议,并且只是使用了 javascript document.lastModified,我怀疑有些服务器可以通过 javascript 版本为您提供所需的内容,而有些(包括托管我们的东西的服务器) ) 不要。

          【讨论】:

            【解决方案6】:

            我不是标题专家,但相信您正在寻找这个:

            有一种方法可以检查文件的修改日期: View HTTP headers in Google Chrome?

            在此处检查(Chrome 的开发者工具/网络/选定文件/标题)“If-Modified-Since”变量。

            到目前为止,这已帮助我实现了您的要求,即获取文件的修改日期。

            【讨论】:

            • 虽然该链接可能会提供问题的答案,但如果您可以在答案中提供解决方案的基本部分并提供适当的归属,那就更好了。否则,如果链接损坏或页面内容发生更改,您的回答可能会变得无效或无用。
            【解决方案7】:

            要从客户端获取最后修改日期,您可以使用 JavaScript 使用 lastModified 属性访问 HTML DOM。

            lastModified 属性从与所有 Web 请求一起发送的头部获取信息。该值可以由开发人员在 Web 服务器端手动设置,因此它可能无法反映负责交付内容的文件的实际最后修改日期。

            示例

            <!DOCTYPE html>
            <html>
            <body>
              
            <b>document.lastModified : </b>
            <script>document.write( document.lastModified );</script>
            
            </body>
            </html>

            在 JavaScript 中检索 this 的具体命令是 document.lastModified,可以很容易地转换为 Date 对象,如下所示:

            var x = new Date(document.lastModified);
            

            更多信息可以在我用作参考的网站上找到w3 schools : HTML DOM lastModified Property

            【讨论】:

            • 我认为这被否决的唯一原因是“太短”。仅从客户端来看,这绝对是最优雅的方法,并且可以在 here on w3schools 找到该命令可行的证明 - 对此进行一些编辑以使解决方案更可行。
            【解决方案8】:

            去你想了解的网站,等待它完全加载,然后去地址栏写这个:

            javascript:alert(document.lastModified)
            

            您会看到一个弹出窗口,说明上次修改的时间。

            【讨论】:

            • 如果我在这个页面上尝试,它会告诉我当前时间 - 所以如果我在 URL 栏中输入两次它会给出两个不同的时间,这不可能是真的,因为该文件只加载了一次!
            【解决方案9】:

            您可以执行以下操作来获取 Last-Modified: https://superuser.com/a/991895

            使用卷曲:

            curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
            

            使用 wget:

            wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified
            

            【讨论】:

              【解决方案10】:

              在php中:

              print getlastmod();
              print gmdate('D, d M Y H:i:s', getlastmod());
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2016-01-20
                • 2020-05-12
                • 2019-02-26
                • 2011-11-25
                • 2010-09-17
                • 1970-01-01
                相关资源
                最近更新 更多