我有一个 View 布局 (main.cshtml),我在其中调用外部 javascript 文件。我有渲染图(另一个 cshtml 文件)作为占位符包含在这个布局(main.cshtml)中。示例:两页: 1) http://localhost/home/ Body占位符有两个效果图 2) http://localhost/about/ Body占位符有两种效果图
主页和关于页面都使用相同的 main.cshtml,我不想每次从主页导航到关于或相反时都加载 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>
最佳答案
如果您担心每次访问您的页面时下载 exernalJS.js 的用户对服务器的带宽使用和负载,您的担忧可能已经通过 web browser caching 得到解决。 .基本上,Web 浏览器会在本地保存 html、css、js、图像文件等的副本,并在需要时重新加载这些文件,而不是跳回网络。
另一方面,如果 externalJS.js 的初始处理是您想要避免的,那么类似于 Ajax (Asynchronous Javascript and Xml) 的东西是你想要的。 Ajax 背后的想法是您编写 Javascript 来处理从网络获取新内容。因此,与其让用户点击 anchor 并让他们的浏览器下载一个全新的页面,不如设置一些内容供他们点击,然后 Javascript 会向服务器发送请求,服务器会返回一些 xml(或 html,或json) 和 Javascript 然后将新数据插入现有页面,而无需浏览器重新加载任何内容或更改页面。请注意,您可能希望使用 Javascript 将更改添加到浏览器的历史记录中,因为默认情况下不会发生这种情况。参见 here for an Ajax tutorial .
关于javascript - 如何将外部 javascript 加载限制为一次。 Sitecore 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756577/