有没有办法在网站上获取文件的Last-Modified-Date?
这是我在那里的一个示例文件:http: //www.ymcadetroit.org/atf/cf/%7B2101903E-A11A-4532-A64D-9D823368A605%7D/Birmingham_Youth_Sports_Parent_Manual.pdf
小智 8
转到您想要了解的网站,等待它完全加载,然后转到地址栏并写下:
javascript:alert(document.lastModified)
Run Code Online (Sandbox Code Playgroud)
您将获得一个弹出窗口,说明上次修改时间.
HTTP意图使用Last-Modified头字段来声明最后一个修改日期.但服务器需要知道该日期.
在静态文件,其内容由服务器直接发送到客户端,而不是解释,否则(例如.html,.css,.js)它使用的文件的最后修改日期.但是对于动态生成内容的文件(PHP,Python等),脚本需要自己指定信息.但不幸的是,很多脚本都没有.
因此,如果存在Last-Modified标题字段,则可以使用该信息.但如果没有,则无法确定最后修改日期.
这是一些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;
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到这个问题已经有4年了,但是对网络的搜索证明了令人满意的答案仍然很少.彼得的答案是解决方案的一部分.当我遇到同样的问题时,这让我开始了.但其余的解决方案......
正如他所说,必须将Web服务器配置为发送最后修改日期...那么如何配置Web服务器?
假设您具有必要的控制级别,首先需要启用服务器端包含.有几种方法可以做到这一点 - 其中一种是"xbithack".一个很好的参考是http://httpd.apache.org/docs/current/howto/ssi.html.
假设你已经完成了这个,你需要在任何需要解析服务器端包含的html文件上设置执行位.这可以在类UNIX系统的命令行中完成:chmod u+x file.html或者在Mac上使用文件上的get-info(command-I)完成.
这使得片段实际放入您的文件中,如下所示:
This document last modified <!--#flastmod file="index.html" -->
由于我发现了许多不包含此内容的推荐,并且只是使用了javascript document.lastModified,我怀疑某些服务器会为您提供您想要的javascript版本,而有些服务器(包括托管我们的东西的服务器)却没有.