Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将外部javascript加载限制为一次。Sitecore实现_Javascript_Asp.net Mvc_Sitecore - Fatal编程技术网

如何将外部javascript加载限制为一次。Sitecore实现

如何将外部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

我有一个视图布局(main.cshtml),在这里我调用一个外部javascript文件。我有渲染(另一个cshtml文件),它们作为占位符包含在此布局(main.cshtml)中。示例:两页: 1) 有两个主体占位符的渲染 2) 有两个主体占位符的渲染

home和about页面都使用相同的main.cshtml,我不想每次从home导航到about时都加载externalJS.js,反之亦然。即;externalJS.js应该为整个应用程序加载一次。我能做到吗

    <!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实现捆绑和缩小: