我应该在Web应用程序中嵌入CSS/JavaScript文件吗?

Max*_*ing 6 asp.net projects-and-solutions embedded-resource

我最近开始将JavaScript和CSS文件嵌入到我们的公共库DLL中,以使部署和版本化更加简单.我只是想知道是否有任何理由可能想要对Web应用程序执行相同的操作,或者最好将它们作为常规文件保留在Web应用程序中,并且仅使用嵌入式资源来共享组件?

嵌入它们会有什么好处吗?

Fri*_*ale 3

当然,如果任何知道自己在做什么的人都可以使用程序集 Reflector 并提取 JS 或 CSS。但这比仅仅使用 FireBug 之类的东西来获取这些信息需要做更多的工作。普通的最终用户不太可能愿意为了搞乱资源而陷入所有这些麻烦。任何对此类事情感兴趣的人都可能是恶意用户,而不是最终用户。如果用户能够在 DLL 上使用诸如程序集反射器之类的工具,那么您可能会遇到许多其他安全问题,因为此时您的服务器已经受到威胁。安全性并不是我决定嵌入资源的因素。

关键是要防止用户对这些资源做一些愚蠢的事情,例如认为不需要它们而删除它们或以其他方式篡改它们。

由于涉及的文件较少,因此打包应用程序以进行部署也更加容易。

确实,页面使用的DLL(类库)更大,但这并不会使页面变得更大。ASP.NET 生成需要发送到客户端(浏览器)的内容。发送给客户端的内容不会多于页面正常工作所需的内容。我不认为帮助提供这些页面的类库会对客户端和服务器之间发送的数据大小产生任何影响。

然而,Rjlopes 有一个观点,浏览器可能无法缓存嵌入的 JavaScript/CSS 资源。我必须检查一下,但我怀疑 Rjlopes 是正确的:每次向服务器进行全页回发时都必须下载 JavaScript/CSS 文件。如果事实证明这是真的,那么性能下降应该成为您做出决定的一个因素。

我仍然无法测试使用嵌入式资源、resex 和单个文件之间的性能差异,因为我一直忙于我的努力。希望我今天晚些时候会谈到它,因为我对此非常好奇,并且 Rjlopes 提出了浏览器缓存点。

  • 通过 ScriptManager 呈现的嵌入式 JS 文件确实会被缓存,并在整个应用程序中使用一致的 URL。我们在几个客户站点上使用它非常成功。 (2认同)