Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何仅使用Web服务器中的配置使浏览器缓存无效?_Asp.net_Iis_Browser Cache - Fatal编程技术网

Asp.net 如何仅使用Web服务器中的配置使浏览器缓存无效?

Asp.net 如何仅使用Web服务器中的配置使浏览器缓存无效?,asp.net,iis,browser-cache,Asp.net,Iis,Browser Cache,很长一段时间以来,我一直在更新服务器上的ASP.NET页面,但从未找到正确的方法来在CSS和图像等文件上显示更改 我知道如果在URL中添加了内容,浏览器会认为该文件是另一个文件: <img src="/images/myLogo.png?v=1"/> 或者更改其名称: <img src="/images/myLogo.v1.png"/> 不幸的是,它看起来并不正确。在一个例子中,如果我正在使用App\u主题,则此文件夹中的文件会自动插入页面,我无法轻松更改UR

很长一段时间以来,我一直在更新服务器上的
ASP.NET
页面,但从未找到正确的方法来在
CSS
图像等文件上显示更改

我知道如果在
URL
中添加了内容,浏览器会认为该文件是另一个文件:

<img src="/images/myLogo.png?v=1"/>

或者更改其名称:

<img src="/images/myLogo.v1.png"/>

不幸的是,它看起来并不正确。在一个例子中,如果我正在使用
App\u主题
,则此文件夹中的文件会自动插入页面,我无法轻松更改
URL

所以我的问题是:

当我在服务器上发布de
ASP.NET应用程序
时,向
IIS
发出文件已更改的信号(然后通知浏览器)的正确方式是什么?它不是自动的吗?我应该在
IIS
中更改一些配置,或者在代码中进行一些“修饰”吗

我已经在这里尝试了很多问题,比如、、甚至,但是没有一个问题实际上需要另一种方法,即您必须在代码中手动处理它,而不是在
IIS
ASP.NET
配置中

我能找到的最接近的地方是他们设置了过期时间,但不是基于文件被更新的事实。相反,他们使用数天或数小时来缓存这些文件,以便即使未做任何更改也能进行更新


我想知道
IIS
ASP.NET
是否提供了与此相关的内容,是否会自动发送到浏览器,告知文件已更改。是否可能/内置?

您必须更新浏览器端缓存的项的选项有:

  • 更改文件名
  • 添加url参数
  • 将其在缓存中放置有限的时间(如几个小时)
  • 比较创建日期和时间
  • 用eTag发出信号
  • 使用这三个选项可以避免对每个项目调用一个服务器,但第三个选项会在一段时间后再次加载它

    对于其他服务器,您必须对服务器进行一次调用,以查看是否需要再次加载它

    所以你不能拥有这里的一切,没有正确的方法,你需要选择对你来说最好的,你能做的。从客户端的角度来看,(1)和(2)选项的速度更快

    对您的问题的直接回答是使用eTag,或者文件创建的日期时间比较,但是如果您这样做,只需调用服务器,就可以获得返回的大小

    更多链接:




    你可以找到更多