首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何刷新#include文件 - 它们在IIS7/ASP.NET上进行缓存

在IIS7/ASP.NET上,#include文件可能会被缓存,导致在更新这些文件后,用户仍然看到的是旧的内容。为了解决这个问题,可以尝试以下方法来刷新这些文件的缓存:

  1. 修改Web.config文件:在Web.config文件中,可以添加或修改以下配置来禁用或控制缓存:
代码语言:xml<system.webServer>
复制
 <staticContent>
   <clientCache cacheControlMode="DisableCache" />
  </staticContent>
</system.webServer>

这将禁用所有静态文件的缓存。如果只想禁用#include文件的缓存,可以在Web.config文件中添加以下配置:

代码语言:xml<system.webServer>
复制
 <staticContent>
   <clientCache cacheControlMode="DisableCache" />
  </staticContent>
  <handlers>
    <add name="IncludeHandler" path="*.include" verb="*" type="System.Web.StaticFileHandler" preCondition="integratedMode" />
  </handlers>
</system.webServer>

这将为所有扩展名为.include的文件禁用缓存。

  1. 在代码中添加缓存控制:在ASP.NET应用程序中,可以通过在代码中添加缓存控制来禁用或控制缓存。例如,可以在Global.asax文件中添加以下代码:
代码语言:csharp
复制
protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
    HttpContext.Current.Response.Cache.SetNoStore();
}

这将为所有请求禁用缓存。如果只想禁用#include文件的缓存,可以在Global.asax文件中添加以下代码:

代码语言:csharp
复制
protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.Path.EndsWith(".include"))
    {
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        HttpContext.Current.Response.Cache.SetNoStore();
    }
}

这将仅为扩展名为.include的文件禁用缓存。

  1. 使用脚本或工具:可以使用脚本或工具来自动刷新#include文件的缓存。例如,可以使用PowerShell脚本来删除IIS缓存:
代码语言:powershell
复制
Import-Module WebAdministration
$siteName = "Default Web Site"
$appPoolName = "DefaultAppPool"

# Stop the application pool
Stop-WebAppPool -Name $appPoolName

# Delete the temporary files
Remove-Item "C:\inetpub\temp\IIS Temporary Compressed Files\$siteName" -Recurse -Force
Remove-Item "C:\inetpub\temp\ASP Compiled Templates\$siteName" -Recurse -Force

# Start the application pool
Start-WebAppPool -Name $appPoolName

这将删除IIS缓存中的临时文件,并重新启动应用程序池。

请注意,这些方法可能会影响性能和响应时间。在实际应用中,建议根据具体情况选择合适的方法来刷新#include文件的缓存。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • ASP.NET底层封装HttpModule实例---FormsAuthentication类的分析

    HttpModule是用来注册HttpApplication事件的,实现IHttpModule接口的托管代码模块可以访问该请求管道的所有事件。那么对于我们最常用的ASP.NET Forms身份验证模块是如何底层封装处理的呢? 今天过了一遍ASP.NET生命周期,以前的时候喜欢做各种应用,小程序等,渐渐地就觉得真没意思,因为只要你懂点基本的语法,会用相关的库亦或是框架就行,如果出错就是些许的细节错误,严格来说这不锻炼人,这有点像是温水煮青蛙,当然不能说这不好,这可以帮我们熟练地掌握框架的使用,增加熟练度及相关基础的应用,但是就个人而言老觉得缺点什么...后来想想,我要做的其实就是让别人用我开发的框架,库,我想研究的是框架底层的架构而不是用框架。于是过了一遍生命周期,处了IIS处理请求部分实在不懂之外,对ASP.NET处理请求还是更熟练了,对于不懂得我不会去刻意强求懂,毕竟自己的技术深度,广度摆在那,日后到了时候自然会懂。IIS7较之于之前的版本,其扩增了一个集成模式。IS 7.0 集成管道是一种统一的请求处理管道,它同时支持本机代码和托管代码模块。实现 IHttpModule 接口的托管代码模块可访问该请求管道中的所有事件。例如,托管代码模块可用于 ASP.NET 网页(.aspx 文件)和 HTML 页(.htm 或 .html 文件)的 ASP.NET Forms 身份验证。即使 IIS 和 ASP.NET 将 HTML 页视为静态资源,情况也是如此。 从功能上讲,HttpModule之于ASP.NET,就好比ISAPI Filter之于IIS一样。IIS将接收到的请求分发给相应的ISAPI Extension之前,注册的ISAPI Filter会先截获该请求。ISAPI Filter可以获取甚至修改请求的内容,完成一些额外的功能。与之相似地,当请求转入ASP.NET管道后,最终负责处理该请求的是与请求资源类型相匹配的HttpHandler对象,但是在Handler正式工作之前,ASP.NET会先加载并初始化所有配置的HttpModule对象。HttpModule在初始化的过程中,会将一些功能注册到HttpApplication相应的事件中,那么在HttpApplication整个请求处理生命周期中的某个阶段,相应的事件会被触发,通过HttpModule注册的事件处理程序也得以执行。 所有的HttpModule都实现了IHttpModule接口,下面是IHttpModule的定义。其中Init方法用于实现HttpModule自身的初始化,该方法接受一个HttpApplication对象,有了这个对象,事件注册就很容易了。 ASP.NET提供的很多基础构件(Infrastructure)功能都是通过相应的HttpModule实现的,下面类列出了一些典型的HttpModule:     OutputCacheModule:实现了输出缓存(Output Caching)的功能;     SessionStateModule:在无状态的HTTP协议上实现了基于会话(Session)的状态;     WindowsAuthenticationModule + FormsAuthenticationModule + PassportAuthentication- Module:实现了3种典型的身份认证方式:Windows认证、Forms认证和Passport认证;     UrlAuthorizationModule + FileAuthorizationModule:实现了基于Uri和文件ACL(Access Control List)的授权。 抱着吹毛求疵的学习态度,我研究了一下Forms认证的源码(其实也不是源码,利用reflector查出来的)

    01

    IIS8.5 布署 WEB API的程序时,遇到的问题

    ##IIS7/8 HTTP Error 500.19 错误 0x80070021  IIS7.0/8.0的错误HTTP Error 500.19 - Internal Server Error ,错误代码为0x80070021,大概原因为IIS7.0的安全设定相比前版本有很大的变更。IIS7.0的安全设置文件在%windir%\system32\inetsrv \config\applicationHost.config,这里定义所有Web程序的安全设置,在各个Web程序的web.config可以去覆盖 这些设置,但默认情况下是不容许覆盖的。 所以首先修改applicationHost.config文件,打开handlers和modules的权限,即由Deny改为Allow,如 下: <configuration> <configSections> <sectionGroup name="system.webServer"> ......

    ......
    ...... 另外如果IIS7.0是在VS安装之后安装的话,那么需要添加IIS7.0对ASP.NET文件的支持,否则会出现aspx文件无法识别的MIME 错误,或者以上问题。 方法:打开和关闭系统功能---》Internet信息服务--》万维网服务---》应用程序开发功能—》勾选asp.net 一般后面这种情况较多! ##应用池没有.net4.5的原因 正常建立部署网站,可问题是安装习惯,你得让我选.net framework 4.5的框架啊,可是见鬼的是没有啊 .NET 4.5 is an in-place replacement for .NET 4.0, When .NET 4.5 is installed it effectively replaces .NET 4.0 on the machine. .NET 4.0 gets overwritten by a new version of .NET 4.5 which - according to Microsoft - is supposed to be 100% backwards compatible. 我们简单的理解就是,4.5本质上还是4.0,属于递增式的更新,所以对IIS 来说看到的只有4.0而已,看看如下的4.5 DLL库中的版本号就知道了

    03
    领券