我们目前正在开发一个ASP.NET MVC应用程序,该应用程序将部署在企业内部网上,并在公共互联网上提供略微修改的面向客户的版本。
我们正在使用许多外部JavaScript库(例如jQuery),并且已经讨论了引用库的问题 - 我们应该从外部源(例如通过Google加载jQuery方法)引用它们还是保留我们的本地拥有版本并从那里引用?
如果我们从那里引用,项目经理有点担心对Google(或任何人)有“依赖”,并认为拥有我们自己的库副本会让我们更加独立。另一方面,我听说让其他人托管图书馆有很多好处 - 例如,他们为我们处理版本控制,谷歌不会很快去任何地方......
(为了讨论的目的,假设我们托管的内部网具有外部访问权限 - 显然,如果事实证明它不是我们做出的决定!)
因此。这有关系吗?如果是这样,我们应该做什么以及为什么?
(我很欣赏这是主观的 - 但是从任何有经验或想法的人那里得到建议是非常有用的。不确定这是否是社区维基的候选人,让我知道我是否应该放它在那里,我知道将来!)
谢谢:)
答案 0 :(得分:2)
应用程序对您的内部用户是否至关重要?如果“互联网瘫痪”,您的业务会受到影响,因为内部用户无法访问应用程序吗?风险远远超过其他任何事情。
此外,如果有变化或其他情况,您是否不想管理'升级'?
答案 1 :(得分:1)
通常使用托管库的原因是性能。我浏览器每个主机只会下载有限数量的文件。因此,使用托管库将从其他主机加载文件,因此与其他文件并行。
第二个原因是这些文件通常被压缩并且正确设置了缓存头。这些文件通常存储在CDN中,这意味着您的用户将从最接近他们的主机下载文件。
但所有这些原因在内联网环境中并不那么重要。
答案 2 :(得分:0)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"/>
if( window.$ ) {
// jquery script goes here
} else {
var elmScript = document.createElement('script');
elmScript .src = 'jQuery.js'; // path to jquery
elmScript .type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild( elmScript );
}
</script>
答案 3 :(得分:0)
尽管由于您的代码分散在多个站点(其中一些您无法控制)而产生的复杂性问题,从多个域中提取内容(例如额外的dns查询)也会产生轻微的性能损失。 )。对于一个公共网站,很多用户都是初次使用者,将代码缓存起来可能会有一些好处,但除此之外,我真的没有看到这一点。
答案 4 :(得分:0)
这样做的主要(唯一?)理由是出于性能原因,正如@ Kau-Boy已经提到过的那样。 JQuery是一个相对较小的库(它为您提供的),它将由您的外部用户的浏览器/代理/ ISP在本地缓存。所以除了小的延迟增益外,它并没有给你任何东西。
如果您发现自己添加了许多外部Javascript文件,那么您应该重新考虑整体设计策略。选择一个好的通用库(我个人认为jQuery是无与伦比的 - 这是主观的部分)并从里到外学习它。除了奇怪的插件之外,您不应该添加更多的库,无论如何都应该逐页包含这些库。
顺便提一下其他人的一些非常好的答案。