首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scriptmanager删除javascript

Scriptmanager删除javascript
EN

Stack Overflow用户
提问于 2009-09-30 07:09:11
回答 1查看 1.5K关注 0票数 0

ASP.NET ScriptManager控件自动插入各种内联javascript,如PageRequest初始化。是否可以将其移除或移动到外部js文件?

而且,脚本管理器总是添加__DoPostback,即使没有在页面上使用,如何避免这种情况,或者将其移到外部文件中?

EN

回答 1

Stack Overflow用户

发布于 2009-10-09 21:55:05

首先,"__DoPostBack“是由可以导致回发的控件插入的,比如DropDownList,其中AutoPostBack属性设置为true。由于ScriptManager基本上拦截了传统的回发,所以我认为这就是它插入函数的原因。

-以下只是我在想.:)

现在,关于将所有东西移动到外部文件。这并不容易,但“可能”是可能的。问题是ASP.NET在运行时生成脚本,所以您不能静态地处理它。你需要考虑的是为什么你一开始就想这么做。事实上,大部分生成的脚本是动态的,这使得缓存变得相当困难。但是,如果确实需要,您应该同时查看HttpHandlers和HttpModules。

基本上,您需要以某种方式提取每个脚本标记(没有src-属性集)。这可以在HttpModule上对HttpContext的BeginRequest事件执行。现在,您需要提取所有必要的信息片段,并将其替换为可以作为替换服务的特定HttpHandler的引用。但是,要想发挥任何作用,就必须对现有脚本进行某种缓存。为此,您可能需要使用ASP.NET缓存。棘手的部分是比较现有缓存条目和新缓存条目,并确定是获取缓存版本(将HttpHandler指向现有条目)还是生成新条目。如果您有大量的脚本,这很可能是一个相当昂贵的操作。此外,您需要确定客户端是否可以自己缓存(电子标签等可能会派上用场)。重要的是客户端避免每次下载相同的不必要脚本(我相信这是您的最终目标)。

因此,概括地说:

  • 构建一个HttpModule来处理页面重写,并将提取的脚本放入某种缓存中(例如。ASP.NET缓存).
  • 为提取的脚本构建一个指向的HttpHandler (它应该从缓存中流内容)。应该将处理程序替换提取的内联scripts.
  • Create,这是一种确定缓存无效性的算法。我不知道在请求之间会发生什么样的变化。

顺便说一句。脚本外部化最多是很棘手的,所以您需要小心不要引入不可能修复的bug ;)

不是一个扩展的解决方案,但我自己也试过这样做,没有任何运气.主要是因为时间太少。当你被付钱去做一项任务时,这种优化是没有道理的。:(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1496519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档