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

标签 javascript asp.net-mvc sitecore

我有一个 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/

相关文章:

c# - 通过传递图像 url 谓词值使用 lucene 搜索获取 Sitecore 项目

javascript - 使用 Jquery 在另一个元素第一次出现之前插入元素/文本

javascript - 使用 menuPortalTarget 时如何修复 react 选择下拉菜单的样式

javascript - 在 vorpal Action 期间调用另一个函数

c# - 在 Asp.net MVC 应用程序中将信息传递给客户端而不刷新页面

c# - 具有多个模型的 Entity Framework 抛出错误,说明 "The model backing the <modelDbContext> context has changed..."

javascript - 如何在移动设备上禁用fancybox并直接显示大图

asp.net-mvc - MVC5 基于声明的身份验证 - 合适的声明项

sitecore - 将图像从服务器上传到 sitecore 媒体库

Sitecore 9,无法获取要渲染的 Controller 渲染