[导入]关于asp.net中的etag和LastModified等header的设置
研究了下etag,看了网上的说明才大致知道这是一个用来标示一个文件的字符串,也是作为断点续传的标准,我曾进很大的程度上怀疑我的.vga文件不可用于这个有联系,现在总算知道不是。
在.net中设置etag当然不能简单的调用appendHeader来添加,因为那样不能保证文件被改动后etag的变化(如果文件变动了而etag不变化,用户下载下来的文件就可能前一半是旧的,后一半是新的,那样就乱了),幸好,在asp.net中,提供了一个SetETagFromFileDependencies()方法可以让我们很方便的设置etag。
首先必须指定本次输出(response)所依赖的文件,当这些文件中的一个变化之后,我们可能要认为后面的输出也会变化,所以也就应该让etag变化,这个过程ASP.NET中都提供了,而且用起来很方便
就是这么简单,当依赖文件中的任何一个变化的时候,etag和LastModified都会变化。
当etag设置好之后,就可以开始考虑断点续传的问题了。如果etag没有在header中设置好的话,浏览器或下载软件会认为服务器不支持断点续传。
在.net中设置etag当然不能简单的调用appendHeader来添加,因为那样不能保证文件被改动后etag的变化(如果文件变动了而etag不变化,用户下载下来的文件就可能前一半是旧的,后一半是新的,那样就乱了),幸好,在asp.net中,提供了一个SetETagFromFileDependencies()方法可以让我们很方便的设置etag。
首先必须指定本次输出(response)所依赖的文件,当这些文件中的一个变化之后,我们可能要认为后面的输出也会变化,所以也就应该让etag变化,这个过程ASP.NET中都提供了,而且用起来很方便
//首先指定对文件的依赖,如果依赖多个文件,可以依次添加,也可以通过AddFileDependencies()一次添加多个
Response.AddFileDependency(fileSpec);
//调用函数自动设置etag
Response.Cache.SetETagFromFileDependencies();
//调用函数自动设置最后更新时间
Response.Cache.SetLastModifiedFromFileDependencies();
Response.AddFileDependency(fileSpec);
//调用函数自动设置etag
Response.Cache.SetETagFromFileDependencies();
//调用函数自动设置最后更新时间
Response.Cache.SetLastModifiedFromFileDependencies();
就是这么简单,当依赖文件中的任何一个变化的时候,etag和LastModified都会变化。
当etag设置好之后,就可以开始考虑断点续传的问题了。如果etag没有在header中设置好的话,浏览器或下载软件会认为服务器不支持断点续传。
posted on 2005-03-21 16:36 K_Reverter 阅读(774) 评论(0) 编辑 收藏 举报