- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Asp.net-MVC
,当我发送请求时它返回一个 partial-view
。
public ActionResult AccountDetails()
{
return PartialView("~/Views/partials/Account/Details.cshtml");
}
然后我使用下面的代码在我的表单中加载部分内容。
var condition = true;
var pageNumber = 0;
for (var i = 1; i < 10; i++) {
$("#page_view" + i).addClass("d-none");
if (condition && $("#page_view" + i).html().trim() == "") {
pageNumber = i;
condition = false;
}
}
$("#page_view" + pageNumber).removeClass("d-none");
$.ajax({
url: url,
type: "GET",
async: true,
success: function (result) {
$("#page_view" + pageNumber).html(result);
}
});
在我的主 html 文件中,我只使用一个链接来获取页面并加载它:
<a href="javascript: load_main_form('Account/Details');">DetailsPage</a>
在这种方法中,问题是当我多次加载和关闭一个页面时,该页面的 Javascript 在每次加载时都存储在缓存中,并且某些函数或事件在每次加载时都会运行多次。
我使用 ajaxComplete
来获取它在缓存中存储了多少次。
如何清除缓存或重写上一个缓存?或者即使有更快的方法来做到这一点,我也会感谢您的分享。
最佳答案
我将逐步解决您的问题
缓存不会导致代码多次运行。缓存只影响代码的加载方式。如果您尝试多次加载一个 js,缓存只会影响浏览器查找该文件的位置,网络(如果未缓存)或本地缓存。您的浏览器永远不会仅仅因为在缓存中就运行任何代码,它会运行是因为您要求它执行(有意或无意)
很可能有 javascript 代码旨在在您正在加载的其中一个 View 中运行一次。因此,如果您有打算运行一次的代码,则必须将其放置在加载其余 View (通常称为布局或基础)的文件中
任何 View 中出现的任何 javascript 都必须特定于该 View 。因此,为了对其进行调试,转到任何导致问题的 View 并查看是否存在 javascript,如果存在,则搜索原点(可能来自布局,可能是该局部 View 内的另一个局部 View ,或某处)
现在终于
是的,你可以防止代码多次运行,我会解释如何,但我建议你首先修复你的项目的结构,并且只在结构不能改变的情况下使用它,否则就像涂上油漆一样裂缝的顶部
假设您有一些代码:
let myCounter = 0;
myCounter ++;
console.log(`Hey! I've run ${myCounter} times`);
然后在部分 View 中,更改代码并将其包装在一个函数中,并附上一条检查该函数是否已经运行的语句(给它一个名称,假设为初始化器,然后...)
!window.initializator && (initializator = true) && (function() {
let myCounter = 0;
myCounter++;
console.log(`Hey! I've run ${myCounter} times`);
})()
现在,无论浏览器执行多少次这段代码,它都不会多次运行里面的指令,因为它在全局范围内留下了一个变量,确保如果代码再次执行,代码将被跳过。
你也可以使用另一个对象而不是窗口(我强烈推荐,因为如果可以避免的话,你绝不能使用全局变量)但是我这样放这个例子是因为如果你不能控制流程你的代码,你不能确保有一个对象之前实例化。
关于javascript - 如何防止缓存导致的Javascript代码多次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71060672/
我阅读了有关 JSR 107 缓存 (JCache) 的内容。 我很困惑:据我所知,每个 CPU 都管理其缓存内存(无需操作系统的任何帮助)。 那么,为什么我们需要 Java 缓存处理程序? (如果C
好吧,我是 jQuery 的新手。我一直在这里和那里搞乱一点点并习惯它。我终于明白了(它并不像某些人想象的那么难)。因此,鉴于此链接:http://jqueryui.com/sortable/#dis
我正在使用 Struts 2 和 Hibernate。我有一个简单的表,其中包含一个日期字段,用于存储有关何时发生特定操作的信息。这个日期值显示在我的 jsp 中。 我遇到的问题是hibernate更
我有点不确定这里发生了什么,但是我试图解释正在发生的事情,也许一旦我弄清楚我到底在问什么,就可能写一个更好的问题。 我刚刚安装了Varnish,对于我的请求时间来说似乎很棒。这是一个Magneto 2
解决 Project Euler 的问题后,我在论坛中发现了以下 Haskell 代码: fillRow115 minLength = cache where cache = ((map fill
我正试图找到一种方法来为我网络上的每台计算机缓存或存储某些 python 包。我看过以下解决方案: pypicache但它不再被积极开发,作者推荐 devpi,请参见此处:https://bitbuc
我想到的一个问题是可以从一开始就缓存网络套接字吗?在我的拓扑中,我在通过双 ISP 连接连接到互联网的 HAProxy 服务器后面有 2 个 Apache 服务器(带有 Google PageSpee
我很难说出不同缓存区域 (OS) 之间的区别。我想简要解释一下磁盘\缓冲区\交换\页面缓存。他们住在哪里?它们之间的主要区别是什么? 据我了解,页面缓存是主内存的一部分,用于存储从 I/O 设备获取的
1.题目 请你为最不经常使用(LFU)缓存算法设计并实现数据结构。 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象 in
1.题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: ① LRUCache(int capacity) 以正整数作为容量 capacity
我想在访问该 View 时关闭某些页面的缓存。它适用于简单查询模型对象的页面。 好像什么时候 'django.middleware.cache.FetchFromCacheMiddleware', 启
documents为 ExePackage element state Cache属性的目的是 Whether to cache the package. The default is "yes".
我知道 docker 用图层存储每个图像。如果我在一台开发服务器上有多个用户,并且每个人都在运行相同的 Dockerfile,但将镜像存储为 user1_myapp . user2 将其存储为 use
在 Codeigniter 中没有出现缓存问题几年后,我发现了一个问题。我在其他地方看到过该问题,但没有适合我的解决方案。 例如,如果我在 View 中更改一些纯 html 文本并上传新文件并按 F5
我在 Janusgraph 文档中阅读了有关 Janusgraph Cache 的内容。关于事务缓存,我几乎没有怀疑。我在我的应用程序中使用嵌入式 janusgrah 服务器。 如果我只对例如进行读取
我想知道是否有来自终端的任何命令可以用来匹配 Android Studio 中执行文件>使缓存无效/重新启动的使用。 谢谢! 最佳答案 According to a JetBrains employe
我想制作一个 python 装饰器来内存函数。例如,如果 @memoization_decorator def add(a, b, negative=False): print "Com
我经常在 jQuery 事件处理程序中使用 $(this) 并且从不缓存它。如果我愿意的话 var $this = $(this); 并且将使用变量而不是构造函数,我的代码会获得任何显着的额外性能吗?
是的,我要说实话,我不知道varnish vcl,我可以解决一些基本问题,但是我不太清楚,这就是为什么我遇到问题了。 我正在尝试通过http请求设置缓存禁止,但是该请求不能通过DNS而是通过 Varn
在 WP 站点上加载约 4000 个并发用户时遇到此问题。 这是我的配置: F5 负载均衡器 ---> Varnish 4,8 核,32 Gb RAM ---> 9 个后端,4 个核,每个 16 RA
我是一名优秀的程序员,十分优秀!