K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

[导入]关于asp.net中的etag和LastModified等header的设置

    研究了下etag,看了网上的说明才大致知道这是一个用来标示一个文件的字符串,也是作为断点续传的标准,我曾进很大的程度上怀疑我的.vga文件不可用于这个有联系,现在总算知道不是。
    在.net中设置etag当然不能简单的调用appendHeader来添加,因为那样不能保证文件被改动后etag的变化(如果文件变动了而etag不变化,用户下载下来的文件就可能前一半是旧的,后一半是新的,那样就乱了),幸好,在asp.net中,提供了一个SetETagFromFileDependencies()方法可以让我们很方便的设置etag。
    首先必须指定本次输出(response)所依赖的文件,当这些文件中的一个变化之后,我们可能要认为后面的输出也会变化,所以也就应该让etag变化,这个过程ASP.NET中都提供了,而且用起来很方便
 //首先指定对文件的依赖,如果依赖多个文件,可以依次添加,也可以通过AddFileDependencies()一次添加多个
 Response.AddFileDependency(fileSpec);
 
//调用函数自动设置etag

 Response.Cache.SetETagFromFileDependencies();
 
//调用函数自动设置最后更新时间

 Response.Cache.SetLastModifiedFromFileDependencies();

就是这么简单,当依赖文件中的任何一个变化的时候,etag和LastModified都会变化。
    当etag设置好之后,就可以开始考虑断点续传的问题了。如果etag没有在header中设置好的话,浏览器或下载软件会认为服务器不支持断点续传。

posted on 2005-03-21 16:36  K_Reverter  阅读(772)  评论(0编辑  收藏  举报