无需从服务器下载即可获取XML文件的版本
本文关键字:XML 获取 文件 版本 服务器 下载 | 更新日期: 2023-09-27 18:06:57
如果服务器上有XML文件。是否有一种方法来获得它的版本或最后修改日期,而无需下载文件并从中读取它们?
基本上我要做的就是检查文件的版本是否比我PC上的新。下载它,如果不是,就不要下载。
我现在下载并检查它的版本。但我不想浪费时间下载,如果它是相同的版本或有相同的最后修改日期。
至少有两种方法。
第一个是对文件执行HEAD请求,而不是GET请求。HEAD请求将返回文件名、最后修改日期、内容长度和其他一些内容。但是它不下载文件。您可以查看最后修改日期,如果它比您现有的版本更新,可以下载。
另一种方法是执行GET请求并将HttpWebRequest
对象的IfModifiedSince
属性设置为当前拥有的文件的时间戳。如果服务器上的文件较新,则会下载它。否则,您将获得状态码304(未修改)。
您可以创建一个c#(或任何语言)通用处理程序(或脚本或页面),它接受一个参数FileName (XML文件的),并将最后修改的日期写入输出。然后,如果你喜欢这个日期,你就开始下载
下面是一个通用处理程序的例子(注意,它可能仍然需要一些错误捕获):public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string fileName = context.Request.QueryString.Get("fileName");
FileInfo fileInfo = new FileInfo(Server.MapPath(".") + "/" + fileName);
context.Response.Write(fileInfo.LastWriteTime.ToString());
}
Ruby On Rails中有一种技术可以实现您所要求的优化。
您可以在文件名的末尾添加上次编辑的时间戳xmlname_[timestamp].xml编辑文件名。当客户端需要文件时,如果它具有相同的文件名,则不下载它。如果您的应用程序位于浏览器中,那么当客户端需要该文件时,它将不会通过浏览器下载浏览器缓存中的新版本。
希望有所帮助
如果服务器上有XML文件。是否有一种方法来获得它的版本或最后修改日期,而无需下载文件并从中读取它们?
Not as such…
基本上我要做的就是检查文件的版本是否比我PC上的新。下载它,如果不是,就不要下载。
听起来你想要标准的HTTP缓存控制。客户端可以发送If-Modified-Since请求或检查ETags。
详细信息请参见mnot缓存教程
您考虑过使用ETag作为缓存机制吗?它是HTTP/1.1规范的一部分,一个强大的ETag可能是你正在寻找的(假设你可以处理HTTP头)
您还可以使用If-Modified-Since请求头根据最后已知的修改日期进行条件查询。