我最近开始将
JavaScript和CSS文件嵌入到我们的公共库DLL中,以使部署和版本化更加简单.我只是想知道是否有任何理由可能想要对Web应用程序执行相同的操作,或者最好将它们作为常规文件保留在Web应用程序中,并且仅使用嵌入式资源来共享组件?
嵌入它们会有什么好处吗?
解决方法
当然,如果知道自己在做什么的人可以使用程序集Reflector并提取JS或CSS.但是,除了使用像FireBug这样的信息来获取这些信息之外,还有很多工作要做.一个普通的最终用户不太可能只是为了弄乱资源而去解决所有这些麻烦.任何对此类事物感兴趣的人都可能是恶意用户,而不是最终用户.如果用户能够在DLL上使用像汇编反射器这样的工具,那么你可能在安全方面遇到了很多其他问题,因为到那时你的服务器已经被破坏了.安全性不是我决定嵌入资源的因素.
关键是要防止用户使用这些资源做一些愚蠢的事情,比如删除他们认为他们不需要或以其他方式篡改他们.
将应用程序打包以进行部署也更容易,因为涉及的文件较少.
确实,页面使用的DLL(类库)更大,但这并不会使页面更大. ASP.NET生成需要发送到客户端(浏览器)的内容.没有更多内容发送到客户端,而不是页面工作所需的内容.我没有看到帮助提供这些页面的类库如何对客户端和服务器之间发送的数据大小产生任何影响.
但是,Rjlopes有一个观点,浏览器可能无法缓存嵌入的JavaScript / CSS资源.我将不得不检查它,但我怀疑Rjlopes是正确的:每次对服务器进行整页回发时都必须下载JavaScript / CSS文件.如果证明这是真的,那么这种性能影响应该是您决定的一个因素.
我仍然无法测试使用嵌入式资源,resex和单个文件之间的性能差异,因为我一直忙于努力.希望我今天晚些时候能够做到这一点,因为我对此非常好奇并且浏览器缓存点Rjlopes已经提出.