304-未修改-Modified-–-IIS状态码-Not (304不合格会怎么样)

教程大全 2025-07-18 22:14:45 浏览

IIS状态码 – 304 Not Modified(未修改)

在互联网上浏览网页时,我们经常会遇到各种状态码。这些状态码是由 服务器 返回给浏览器的一种响应,用于告知浏览器当前请求的情况。其中,IIS状态码中的304 Not Modified(未修改)是一个常见的状态码。

什么是304 Not Modified(未修改)状态码?

当浏览器向服务器发送请求时,服务器会检查请求的资源是否发生了变化。如果资源没有发生变化,服务器就会返回304 Not Modified(未修改)状态码,告诉浏览器可以使用缓存的版本。

通常情况下,浏览器在第一次请求资源时会将资源缓存到本地,以便在后续的请求中直接使用缓存的版本,从而提高网页加载速度。当浏览器再次请求相同的资源时,会通过发送一个条件请求到服务器,询问资源是否发生了变化。

IIS状态码

为什么使用304 Not Modified(未修改)状态码?

使用304 Not Modified(未修改)状态码可以有效减少网络流量和服务器负载,提高网页加载速度。当浏览器使用缓存的版本时,不需要重新下载资源,节省了带宽和服务器资源。

示例代码

下面是一个示例代码,演示了如何在服务器端判断资源是否发生了变化,并返回304 Not Modified(未修改)状态码:

if (request.Headers["If-Modified-Since"] != null){DateTime lastModified = GetLastModified(); // 获取资源的最后修改时间DateTime ifModifiedSince = DateTime.Parse(request.Headers["If-Modified-Since"]);if (lastModified <= ifModifiedSince){response.StatusCode = 304;response.StatusDescription = "Not Modified";return response;}}

总结

304 Not Modified(未修改)是一种常见的IIS状态码,用于告知浏览器可以使用缓存的版本。通过使用该状态码,可以减少网络流量和服务器负载,提高网页加载速度。同时,使用条件请求和304 Not Modified(未修改)状态码可以确保浏览器始终使用最新的资源。

如果您正在寻找可靠的香港服务器,树叶云是您的首选。我们提供高性能的香港服务器,可满足您的各种需求。点击这里了解更多信息。


modified是什么意思'

modified: [ modifaid ] v. 修改(重建) adj. 修改的(重建的) 例句与用法: 1. The policy was agreed by the committee, but only in a modified form.那项政策经修改后才获得委员会同意。 2. Easily altered or modified to fit conditions; adaptable.能适应的容易改动或修改来适应情况的;能适应的 3. The heating system has recently been modified to make it more efficient.最近供暖设备已稍加改动以提高效率. 4. The car has been modified for racing.这辆汽车已改装为赛车.

如何用JS 获取本地文件夹的文件列表

一、功能实现核心:FilesystemObject对象要在java-script中实现文件操作功能,主要就是依靠FileSystemobject对象。 二、FileSystemObject编程使用FileSystemObject对象进行编程很简单,一般要经过如下的步骤:创建FileSystemObject对象、应用相关方法、访问对象相关属性。 (一)创建FileSystemObject对象创建FileSystemObject对象的代码只要1行:varfso=newActiveXObject();上述代码执行后,fso就成为一个FileSystemObject对象实例。 (二)应用相关方法创建对象实例后,就可以使用对象的相关方法了。 比如,使用CreateTextFile方法创建一个文本文件:varfso=newActiveXObject();varf1=(c:\\,true);(三)访问对象相关属性要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:GetDrive负责获取驱动器信息,GetFolder负责获取文件夹信息,GetFile负责获取文件信息。 比如,指向下面的代码后,f1就成为指向文件c:\的句柄:varfso=newActiveXObject();varf1=(c:\\);然后,使用f1访问对象的相关属性。 比如:varfso=newActiveXObject();varf1=(c:\\);alert(Filelastmodified:+);执行上面最后一句后,将显示c:\的最后修改日期属性值。 但有一点请注意:对于使用create方法建立的对象,就不必再使用get方法获取对象句柄了,这时直接使用create方法建立的句柄名称就可以:varfso=newActiveXObject();varf1=(c:\\,true);alert(Filelastmodified:+);三、操作驱动器(Drives)使用FileSystemObject对象来编程操作驱动器(Drives)和文件夹(Folders)很容易,这就象在Windows文件浏览器中对文件进行交互操作一样,比如:拷贝、移动文件夹,获取文件夹的属性。 (一)Drives对象属性Drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性:lTotalSize:以字节(byte)为单位计算的驱动器大小。 lAvailableSpace或FreeSpace:以字节(byte)为单位计算的驱动器可用空间。 lDriveLetter:驱动器字母。 lDriveType:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或者RAM盘。 lSerialNumber:驱动器的系列码。 lFileSystem:所在驱动器的文件系统类型,取值为FAT、FAT32和NTFS。 lIsReady:驱动器是否可用。 lShareName:共享名称。 lVolumeName:卷标名称。 lPath和RootFolder:驱动器的路径或者根目录名称。 (二)Drive对象操作例程下面的例程显示驱动器C的卷标、总容量和可用空间等信息:varfso,drv,s=;fso=newActiveXObject();drv=((c:\\));s+=DriveC:+-;s+=+\n;s+=TotalSpace:+/1024;s+=Kb+\n;s+=FreeSpace:+/1024;s+=Kb+\n;alert(s);四、操作文件夹(Folders)涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。 Folder对象操作例程:下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:varfso,fldr,s=;//创建FileSystemObject对象实例fso=newActiveXObject();//获取Drive对象fldr=(c:\\);//显示父目录名称alert(Parentfoldernameis:+fldr+\n);//显示所在drive名称alert(Containedondrive++\n);//判断是否为根目录if()alert(Thisistherootfolder.);elsealert(Thisfolderisntarootfolder.);alert(\n\n);//创建新文件夹(C:\\Bogus);alert(CreatedfolderC:\\Bogus+\n);//显示文件夹基础名称,不包含路径名alert(Basename=+(c:\\bogus)+\n);//删除创建的文件夹(C:\\Bogus);alert(DeletedfolderC:\\Bogus+\n);五、操作文件(Files)对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。 下面分别详细介绍。 (一)创建文件一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(textstream)。 第一种是使用CreateTextFile方法。 代码如下:varfso,f1;fso=newActiveXObject();f1=(c:\\,true);第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。 代码如下:varfso,ts;varForWriting=2;fso=newActiveXObject();ts=(c:\\,ForWriting,true);第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。 代码如下:varfso,f1,ts;varForWriting=2;fso=newActiveXObject();(c:\\);f1=(c:\\);ts=(ForWriting,true);(二)添加数据到文件当文件被创建后,一般要按照“打开文件->填写数据->关闭文件”的步骤实现添加数据到文件的目的。 打开文件可使用FileSystemObject对象的OpenTextFile方法,或者使用File对象的OpenAsTextStream方法。 填写数据要使用到TextStream对象的Write、WriteLine或者WriteBlankLines方法。 在同是实现写入数据的功能下,这3者的区别在于:Write方法不在写入数据末尾添加新换行符,WriteLine方法要在最后添加一个新换行符,而WriteBlankLines则增加一个或者多个空行。 关闭文件可使用TextStream对象的Close方法。 (三)创建文件及添加数据例程下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用:varfso,tf;fso=newActiveXObject();//创建新文件tf=(c:\\,true);//填写数据,并增加换行符(Testing1,2,3.);//增加3个空行(3);//填写一行,不带换行符(Thisisatest.);//关闭文件();(四)读取文件内容从文本文件中读取数据要使用TextStream对象的Read、ReadLine或ReadAll方法。 Read方法用于读取文件中指定数量的字符;ReadLine方法读取一整行,但不包括换行符;ReadAll方法则读取文本文件的整个内容。 读取的内容存放于字符串变量中,用于显示、分析。 方法或者属性描述BuildPath()生成一个文件路径CopyFile()复制文件CopyFolder()复制目录CreateFolder()创建新目录CreateTextFile()生成一个文件DeleteFile()删除一个文件DeleteFolder()删除一个目录DriveExists()检验盘符是否存在Drives返回盘符的集合FileExists()检验文件是否存在FolderExists检验一个目录是否存在GetAbsolutePathName()取得一个文件的绝对路径GetBaseName()取得文件名GetDrive()取得盘符名GetDriveName()取得盘符名GetExtensionName()取得文件的后缀GetFile()生成文件对象GetFileName()取得文件名GetFolder()取得目录对象GetParentFolderName取得文件或目录的父目录名GetSpecialFolder()取得特殊的目录名GetTempName()生成一个临时文件对象MoveFile()移动文件MoveFolder()移动目录OpenTextFile()打开一个文件流//目录下所有文件集合//文件属性Case0Str=普通文件。 没有设置任何属性。 Case1Str=只读文件。 可读写。 Case2Str=隐藏文件。 可读写。 Case4Str=系统文件。 可读写。 Case16Str=文件夹或目录。 只读。 Case32Str=上次备份后已更改的文件。 可读写。 Case1024Str=链接或快捷方式。 只读。 Case2048Str=压缩文件。 只读。 //创建时间//上次访问时间//上次修改时间//文件路径//文件名称//文件类型//文件大小(单位:字节)//父目录//根目录

EF中Add和Attach两种添加数据方法的区别

最近在开发一个项目,在实现某个模块数据的插入操作时(底层数据库的交互采用的是EF),发现无论如何数据都不能插入成功,把数据拷贝出来放到数据库中执行Sql语句时却能正确插入,下面给出代码片段public int InsertWithFundInfo(F_WithFunding_Info withinfo){int res = 0;using (var context = new RenRenChaoContext()){context.F_WithFunding_(withinfo);return res = ();}}核心也就是两段代码,就是不知道问题出在了哪里。 后来想起EF插入数据还有一个Add方法,于是抱着侥幸的心理试了试,结果竟然成功了。 public int InsertWithFundInfo(F_WithFunding_Info withinfo){int res = 0;using (var context = new RenRenChaoContext()){context.F_WithFunding_(withinfo);//context.F_WithFunding_(withinfo); return res = ();}在网上搜了一番,发现虽然两者都可以用来插入数据,不过还是有一些细微的差别。 在讲解差别之前,我们先来看下命名空间下的描述实体所处状态的枚举类型EntityState: // 摘要://实体对象的状态。 [Flags]public enum EntityState{// 摘要:// 对象存在,但未由对象服务跟踪。 在创建实体之后、但将其添加到对象上下文之前,该实体处于此状态。 通过调用 ()// 方法从上下文中移除实体后,或者使用 // 加载实体后,该实体也会处于此状态。 Detached = 1,//// 摘要:// 自对象加载到上下文中后,或自上次调用 () 方法后,此对象尚未经过修改。 Unchanged = 2,//// 摘要:// 对象已添加到对象上下文,但尚未调用 () 方法。 对象是通过调用// (,)// 方法添加到对象上下文中的。 Added = 4,//// 摘要:// 使用 () 方法从对象上下文中删除了对象。 Deleted = 8,//// 摘要:// 对象已更改,但尚未调用 () 方法。 Modified = 16,}这五种状态分别是:Detached-游离;UnChanged-没有变化;Added-添加;Deleted-删除;Modified-编辑。 Detached状态下的Entity不会被上下文(context)所捕获(track)。 当SavaChanged()方法执行期间,他会查看当前Entity的EntityState的值,决定是去新增(Added)、修改(Modified)、删除(Deleted)、什么也不做(UnChanged)。 ()Attach在 微软的中文翻译中是附加,不同于Add方法的添加,她是将一个处于Detached的Entity附加到上下文,而附加到上下文后的这一Entity的State为UnChanged。 传递到Attach方法的对象必须具有有效的EntityKey值。 如果该对象不具有有效的EntityKey值,请使用AttachTo方法指定实体集的名称。 2、Add()MSDN的解释:Add方法将对象将一个对象添加到集合中,添加到EntityCollection并创建两个对象之间的关系。 当源对象附加到ObjectContext实例时,方法也将对象添加到ObjectContext当调用SaveChanges时,此操作转换为插入到数据源中的操作。 自我理解:ObjectContext类的Add()方法的作用就是将一个Entity的State修改为Added,这样在SavaChanged()方法就会将实体新增到数据库当中这样,在上面的程序中通过调用Attach()方法只能把对象添加到了对象上下文中(此时对象的状态已经是Unchanged的),执行SaveChange()方法并不能真正添加到数据库中去。 要想真正执行还需要添加一个修改实体状态的代码。 (withinfo,);调用Add()方法时其实已经隐藏了修改实体的状态为Added的这个操作,执行SaveChange()方法就可以进行新增的操作。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐