如何将外部javascript加载限制为一次。Sitecore实现
我有一个视图布局(main.cshtml),在这里我调用一个外部javascript文件。我有渲染(另一个cshtml文件),它们作为占位符包含在此布局(main.cshtml)中。示例:两页: 1) 有两个主体占位符的渲染 2) 有两个主体占位符的渲染 home和about页面都使用相同的main.cshtml,我不想每次从home导航到about时都加载externalJS.js,反之亦然。即;externalJS.js应该为整个应用程序加载一次。我能做到吗如何将外部javascript加载限制为一次。Sitecore实现,javascript,asp.net-mvc,sitecore,Javascript,Asp.net Mvc,Sitecore,我有一个视图布局(main.cshtml),在这里我调用一个外部javascript文件。我有渲染(另一个cshtml文件),它们作为占位符包含在此布局(main.cshtml)中。示例:两页: 1) 有两个主体占位符的渲染 2) 有两个主体占位符的渲染 home和about页面都使用相同的main.cshtml,我不想每次从home导航到about时都加载externalJS.js,反之亦然。即;externalJS.js应该为整个应用程序加载一次。我能做到吗 <!DOCTYPE
<!DOCTYPE html>
<html>
<head>
<title>Main</title>
</head>
<body>
<div data-role="page" class="pageWrapper">
<header data-role="header" class="header">
@Html.Sitecore().Placeholder("Header")
</header>
<div class="wrapper" data-role="main">
@Html.Sitecore().Placeholder("Body")
</div>
<div data-role="footer" role="contentinfo" class="ui-footer ui-bar-inherit">
@Html.Sitecore().Placeholder("Footer")
</div>
</div>
<script src="../../js/externalJS.js"></script>
</body>
</html>
主要
@Html.Sitecore()占位符(“标题”)
@Html.Sitecore()占位符(“正文”)
@Html.Sitecore()占位符(“页脚”)
如果您担心每次用户访问您的某个页面时下载exernalJS.js时服务器上的带宽使用和负载,您的担心可能已经通过以下方式解决了。基本上,web浏览器在本地保存html、css、js、图像文件等的副本,并在需要时重新加载,而不是跳回网络
另一方面,如果externalJS.js的初始处理是您想要避免的,那么类似的东西就是您想要的。Ajax背后的思想是编写Javascript来处理从网络获取新内容。因此,与用户点击锚并让他们的浏览器下载一个全新的页面不同,您可以设置一些东西让他们点击,然后Javascript将向服务器发送请求,服务器将返回一些xml(或html,或json)然后Javascript会将新数据插入到现有页面中,而无需浏览器重新加载任何内容或更改页面。请注意,您可能希望使用Javascript将更改添加到浏览器的历史记录中,因为默认情况下不会发生这种情况。请参阅> P>使用SITECORE实现的技术可以称为<强>捆绑> <强>,因为它完全按照您的要求进行,甚至更多。这是构建Sitecore的ASP.NET的一项功能 当前大多数主流浏览器将每个主机名的同时连接数限制为6个。这意味着,在处理六个请求时,浏览器将对主机上的其他资产请求进行排队。捆绑包可以将多个样式/脚本合并到一个“文件”中以解决此问题 请注意带有长哈希戳的v参数-即版本戳,以便在捆绑包中的相同脚本/样式组合中保持不变。只要它保持不变,浏览器就会缓存它,并且通常第一次只请求一次,而不管调用哪个页面
<link href="/Styles/css?v=Za3K5TEVXIEtbh2FEp3kzkdlpWT7iVdGKSiEj6SVOaI1" rel="stylesheet"/>
捆绑包中还附带了一种称为缩小的技术—您不仅可以将多个脚本“提示”到一个具有特定版本戳的组合文件中,还可以最小化(压缩)该文件以减少传输带宽—在高流量网站上非常方便
以下是一些有用的链接,将解释如何使用Sitecore实现捆绑和缩小: