在asp.net中使用Http模块配置ETag

2023-12-08

我正在通过 seo 优化和 yslow 来优化我们公司的网站。 但在 yslow 中,ETAGS 是 F 。 我浏览了数十个网站和教程,最好的选择是使用 HTTP 模块。 我已经这样做并尝试了几个模块,但没有显示结果。也许语法中的某些内容是错误的,或者我注册错误。有人说最好使用 app_PostReleaseRequestState 而不是 OnPreSendRequestHeaders 因为堆中崩溃。我使用过两者都没有结果。 这里是 : 文件名为 etag,位于 app-code 文件夹中

网络配置:

<system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
        <add type="CompressionModule" name="CompressionModule"/>
            <add type="ETags" name="ETags"/>
        <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
    </system.webServer>

这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ETags
/// </summary>

    public class ETags : IHttpModule
    {
        public void Dispose() { }
        public void Init(HttpApplication app)
        {
            app.PostReleaseRequestState += new EventHandler(app_PostReleaseRequestState);

        }
        void app_PostReleaseRequestState(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("ETag");
            HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
            HttpContext.Current.Response.Headers.Remove("X-Powered-By");
        }
        //public void Init(HttpApplication context)
        //{
        //    context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        //}

        //void OnPreSendRequestHeaders(object sender, EventArgs e)
        //{
        //    HttpContext.Current.Response.Headers.Remove("ETag");
        //    HttpContext.Current.Response.Headers.Remove("Server");
        //    HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
        //    HttpContext.Current.Response.Headers.Remove("X-Powered-By");
        //}
    }

感谢您的回答。


首先,您可以删除服务器中的服务器标签!不要让他一次又一次地放置它,然后你将其移除。

您甚至可以在 web.config 上使用customHeaders:

<httpProtocol>
    <customHeaders>
        <remove name="X-Powered-By" />
        <remove name="X-UA-Compatible" />
        <remove name="ETag" />
    </customHeaders>
</httpProtocol>        

ETag 或实体标签是标记页面然后在代码中查看页面是否已更改且需要更新的方法。如果您看到 ETag,那么您的代码的某些部分将被添加用于此检查,我认为您必须保持原样,因为您破坏了程序的这种逻辑。

如果服务器放置此标签来标记图像或类似项目,您可以通过添加更多的静态内容来避免大多数此标签,这也可以在 iis 或 web.config 上完成。

<staticContent>
    <clientCache cacheControlMaxAge ="8.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

所以我认为你制作的模块对于这个想法来说是不必要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在asp.net中使用Http模块配置ETag 的相关文章

随机推荐

  • 可以用innerHTML插入脚本吗?

    我尝试使用以下命令将一些脚本加载到页面中innerHTML on a div 该脚本似乎已加载到 DOM 中 但从未执行过 至少在 Firefox 和 Chrome 中 有没有办法让脚本在插入时执行innerHTML 示例代码 Should
  • 空手道 - 如何导入 json 数据

    我想将一些 JSON 数据导入到我的测试中 为了记录我应该这样做 def data read classpath init data json 我已经使用以下内容创建了 JSON 文件 name ehsan 这是我的代码 Backgroun
  • 在 DirectShow 中预览相机并捕获静态图像 - 在 VB.net 中

    我正在尝试在 Visual Studio 2008 中编写一个程序 该程序将访问网络摄像头 在屏幕上显示预览 然后在按下按钮时保存静态快照 jpg 稍后我将把它与数据库集成 但我不应该对那部分有问题 经过一些研究后 看起来 DirectSh
  • 正则表达式从代码中删除方法

    使用正则表达式 我尝试从以下代码中删除所有方法 函数 不考虑 全球范围 但是 我无法使其与方法的所有内部内容匹配
  • 请求多个 API 并在 SQLITE 上存储多个表的最佳方式

    问题是 如何在sqlite上存储 我的意思是如何在 2 个表上存储 2 个 API 数据 我有多个 API 来获取和存储缓存中的数据 目前 我一项一项地做 如下所示 按下按钮 await HelperDatabase1 storeRegis
  • 在 App Engine 上设置 Memcached 以进行 Django 会话缓存

    当设置 Django 使用 Memcached 进行缓存时 在我的例子中 我想使用会话缓存 settings py we set CACHES default BACKEND django core cache backends memca
  • Swift:数组排序未正确完成

    我用它来对 Swift 数组中的组件进行排序 myArray myArray sorted 0 localizedCaseInsensitiveCompare 1 NSComparisonResult OrderedAscending 但是
  • 如何在 x86_64 上的前 4GB 内“malloc”

    平台 Mac OS X郎 Obj C C 是否有可能以某种方式使 malloc 在进程地址空间的前 4GB 内分配内存 我正在模拟 i386 堆栈 需要保证地址位于允许的 32 位范围内 使用 mmap MAP FIXED 需要在任何 ma
  • 如何在 Verilog 中定义带参数的模块?

    我想定义一个add有一个参数的模块 但我对新实例的声明进展不顺利 我想定义这个模块的一个实例 module add parameter wd 1 input wire wd 1 0 a b output wire wd 1 0 o assi
  • 将自定义对象的 ArrayList 写入文件

    我有一个 ArrayList 其中包含自定义服务对象 我想将整个 ArrayList 写入一个文件 然后能够读取它 我尝试了 Gson 但它给了我一个 IllegalStateException Expected BEGIN ARRAY b
  • 将可见性绑定到 DataContext

    我有一个值转换器 可以将 null 转换为 Visibility Collapsed 现在我尝试在用户控件中使用它 以便当 DateContext 为 null 时整个控件会崩溃 该控件如下所示
  • 对多个列使用 CROSS APPLY

    使用 SQL Server 第 3 天 我正在尝试将 2 列分隔数据合并为表值函数的一个输出 这是我的数据 我希望处理数据并将其放入以下格式的表中 我目前trying使用这个 CROSS APPLY SQL 语句 但我不知道我在做什么 US
  • AngularJS - 将 ngTouch 重定向与 ngRoute 一起使用不适用于 href 和 ng-click 属性

    我使用 ngRoute 浏览应用程序 我使用如下链接 a href page2 Link a 由于我使用 ngTouch 导航不适用于触摸设备 我用 Android 手机和 Chrome 的设备模拟器尝试过 在桌面上一切正常 当我删除 ng
  • VSTO WPF ContextMenu.MenuItem 单击未引发的 TaskPane 外部

    当光标位于任务窗格之外时 不会引发上下文菜单项的单击事件 我不知道如何让它发挥作用 90 的情况下 单击是在任务窗格之外进行的 打开上下文菜单时 子菜单通常显示在任务窗格之外 见下图 在这种情况下 不会引发上下文菜单中的单击事件 我完全不知
  • 在scrapy框架python中为start_urls列表中的url构建正则表达式

    我对 scrapy 很陌生 之前也没有使用过正则表达式 以下是我的spider py code class ExampleSpider BaseSpider name test code allowed domains www exampl
  • 为什么同步睡眠函数没有通过在 Promise 中实现异步? [复制]

    这个问题在这里已经有答案了 我正在尝试了解 Promise 以及 JavaScript 如何与其队列和事件循环等一起工作 我认为如果我将一个慢速同步函数放入一个承诺中 该慢速同步函数将被委托给后台 我可以使用 then完成后处理它 func
  • 优化(几乎最小化)jqueryui 菜单的宽度

    我有一个Jqueryui菜单这是在运行时生成的 AJAX 它是生成的 HTML is ul li li li the system li li the agenda li ul 首先 li li 是故意的行分隔符 其他列表项都包含单个单词
  • 从图像 numpy 生成一批克隆

    我有一个numpy数组 图像 称为a这个尺寸 3 128 192 现在我想创建一个 numpy 数组 其中包含n的副本a其尺寸如下 n 3 128 192 是否存在一个 numpy 函数可以在不使用循环指令的情况下帮助我解决这个问题 只需使
  • 在 iPhone 中的 Facebook 上分享捆绑包中的图像和链接

    我想从我的 iPhone 应用程序分享图像 链接等到 Facebook 我的应用程序链接 位置 名称和描述已成功发布 但我无法分享图像 请按照我的代码 UIImage image UIImage imageNamed sample png
  • 在asp.net中使用Http模块配置ETag

    我正在通过 seo 优化和 yslow 来优化我们公司的网站 但在 yslow 中 ETAGS 是 F 我浏览了数十个网站和教程 最好的选择是使用 HTTP 模块 我已经这样做并尝试了几个模块 但没有显示结果 也许语法中的某些内容是错误的