6

我最近开始将 JavaScript 和 CSS 文件嵌入到我们的通用库 DLL 中,以简化部署和版本控制。我只是想知道是否有任何理由想要对 Web 应用程序做同样的事情,或者是否最好将它们作为常规文件保留在 Web 应用程序中,并且只将嵌入式资源用于共享组件?

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

4

6 回答 6

4

我不得不做出同样的决定一次。我选择将我的 JavaScript/CSS 资源嵌入到我的 DLL 中的原因是为了防止在应用程序部署后篡改这些文件(被购买了我的 Web 应用程序的好奇的最终用户)。

我怀疑和质疑 Easement 关于浏览器如何下载 JavaScript 文件的评论的有效性。我很确定嵌入的 JavaScript/CSS 文件在页面发送到浏览器之前由 ASP.NET 临时重新创建,以便浏览器能够下载和使用它们。我对此很好奇,我将进行自己的测试。我会让你知道它是怎么回事......

-弗林尼

于 2009-07-27T21:10:42.357 回答
3

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

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

打包应用程序以进行部署也容易得多,因为涉及的文件更少。

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

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

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

于 2009-07-28T13:51:24.633 回答
1

嵌入的原因:浏览器不会并行下载 JavaScript 文件。在下载文件之前,您有一个锁定条件。

反对嵌入的原因:您可能不需要所有的 JavaScript 代码。因此,您可能会不必要地增加带宽/处理。

于 2009-07-27T20:16:14.557 回答
1

关于浏览器缓存,据我所知,WebRecource.axd 上的响应显示“304 未修改”。所以,我猜,它们是从缓存中取出的。

于 2013-10-03T13:03:53.173 回答
1

我不得不做出同样的决定一次。我选择将我的 JavaScript/CSS 资源嵌入到我的 DLL 中的原因是为了防止在应用程序部署后篡改这些文件(被购买了我的 Web 应用程序的好奇的最终用户)。反对嵌入的原因:您可能不需要所有的 JavaScript 代码。因此,您可能会不必要地增加带宽/处理。

于 2013-10-03T13:06:14.307 回答
-2

您知道,如果有人想要篡改您的 JS 或 CSS,他们只需使用 Reflector 打开程序集,转到资源并编辑他们想要的内容(如果程序集已签名,可能需要做更多的工作)。

如果您在页面上嵌入了 js 和 css,您会使页面更大(每次请求下载更多 KB)并且浏览器无法缓存 JS 和 CSS 以供下一个请求。好消息是您的请求较少(如果您像我一样,至少有 2 个请求,并且结合了多个 js 和 css 和一个),而且 javascripts 存在连续下载的问题。

于 2009-07-27T22:11:24.857 回答