【问题标题】:ASP.NET AJAX JavaScript files served from a static location从静态位置提供的 ASP.NET AJAX JavaScript 文件
【发布时间】:2010-01-05 09:45:57
【问题描述】:

我意识到这将是一个相当小众的要求,并且几乎肯定会引发一些“WTF”,但这里是......

在 ASP.NET Webforms 应用程序中,我需要从本地客户端计算机提供静态内容,以尽可能减少前期带宽需求(安全策略已禁用所有浏览器缓存)。这个想法是从本地文件系统上的某个位置提供 CSS、图像和 JavaScript 文件,该位置由 Web 应用程序内的文件系统链接引用(是的,我知道,WTF 的丰富,但就是这样)。应用程序本身实际上是一个 Intranet 应用程序,它在客户端外部托管,但受 IP 范围以及标准用户名/密码安全性的限制。所以它几乎是一个混合的 Internet/Intranet 应用程序,但我们可以轻松地将文件包推出到客户端计算机。我建议我们期望也不要求公共客户端下载文件包。在本地文件系统等方面,我们在一定程度上可以控制客户端计算机,但我们无法更改缓存策略

我们正在使用 UpdatePanel 控件来执行部分页面更新,这显然意味着我们需要 Microsoft AJAX JavaScript 文件。目前,这些由 IIS/ASP.NET 中的标准资源处理程序提供(作为标准)。理想情况下,我希望能够从客户端机器获取这些 JS 文件并静态引用它们,而不再通过 AXD 为它们提供服务。

我的问题是:

  • 这可能吗?
  • 如果可能的话,我们应该怎么做?

为了尝试抢占某些 WTF 的需求,该需求源于尝试以尽可能少的时间和精力来满足需求同时开发出更合适的解决方案。我知道我们可以减轻负载,我们可以切换到 jQuery AJAX 更新,我们可以重写 MVC 中的前端等。但我的问题与我们可以使用我们的 现有快速部署什么有关> 应用架构。

提前非常感谢:)

【问题讨论】:

  • 我会很高兴,但我已经看过太多次了,现在笑不出来了。您的临时解决方案将比您想象和希望的寿命更长。我发誓建筑越丑,人们就越能忍受它。

标签: asp.net ajax static webforms


【解决方案1】:

洛娜,

也许您的安全团队快疯了。服务端生成的动态 HTML 和服务端生成的动态 JS 有什么区别?

这没有任何意义。你应该试着说服他们。

【讨论】:

  • 非常感谢您的回答。然而它根本与安全无关,我们需要尽可能减少应用程序的前期加载时间。有政策规定台式机不缓存浏览器内容。我们已经完成了一些测试,并通过在发布模式下部署脚本,并启用 IIS 压缩,我们可以将它们降低到大约 40kb。然而,每个站点都有一条有争议的、非常低的带宽线路。从字面上看,每个字节都很重要。自从我们使用 UpdatePanels 以来,我意识到具有讽刺意味,但尽管 Bernhard 有疑虑,但这是一个临时解决方案。
  • 为什么不能在客户端缓存东西?当您使用 jQuery 或其他 JS 框架开发新版本时,也许可以“暂时”删除此策略。不过,这个政策看起来很奇怪,没有任何意义。更新面板!= 性能。告诉我们更多关于每个字节都很重要的环境。我很好奇。
  • 该组织已将浏览器缓存作为公司范围的策略禁用,并且不会为此应用程序重新启用它。应用程序本身(显然)不是为这种环境设计的,因此我们的目的是尝试在本地 JS 内容中找到一些东西,同时我们使用 jQuery 或 MS AJAX 框架重写前端而不使用更新面板。我完全理解 UpdatePanel != 性能,不幸的是他们不会改变他们的缓存策略。该环境是一个分布在极低速度、竞争线路上的分支网络。
  • 抱歉,Tucaz,我已编辑问题以更准确地反映情况。我们没有“完全控制客户端机器配置”。我已经对其进行了修改,以反映我们只能控制本地文件系统这一事实。
【解决方案2】:

页面和视图状态数据的平均大小是多少。您可能需要将视图状态存储在 sqlserver 中,而不是每次都将其发送到客户端浏览器。

【讨论】:

  • 非常感谢您的回复。 ViewState 被禁用,平均页面大小非常小,大约 5kb - 8kb 左右。真正的问题是 CSS 和 JS 等资源的前期加载时间,因为它们没有被缓存。
猜你喜欢
  • 2014-01-26
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 2018-07-11
  • 2013-05-28
  • 2012-02-11
相关资源
最近更新 更多