检测五分钟标记
Detect Five Minute Mark
我们使用一个图形系统,该系统使用SNMP每隔五分钟检索一次要绘制图形的数据。例如,12:00、12:05、12:10等等。我们将图形作为图像检索。问题是浏览器喜欢使用缓存的图像,在删除缓存之前,我们无法获得新的图像。我想做的是生成一个随机标签,将其附加到图像上,使其具有唯一性,因此不使用缓存的图像。我们能够在每次检索图像时生成一个随机标签,但这导致所有请求都会占用大量服务器,响应时间也会变慢。我现在试图做的是生成一个新标签,前提是:
a) 自从用户检索到图像以来已经超过了四分钟(5+)(因为必须经过五分钟的标记),
b) 从检索到图像不到五分钟,但从上次检索到图像已经过去了五分钟。例如,如果一个人在12:04检索图像,他或她在第一次测试五分钟后才能获得新的图像,但如果他或她试图在12:06检索图像,第二次测试将识别出12:05通过。
我尝试使用cookie,并在每次生成新标签时将cookie设置为新标签。在页面加载时,它将加载带有cookie值的RandomTag变量。点击后,将确定自RandomTag变量中的时间以来是否已经过去了五分钟,或者自上次生成标签以来是否已经过了五分钟标记,如果已经过,则生成新标签,并用新标签设置cookie;否则标签将保持不变。
有人能检查一下这个,看看是否有问题吗?我试过这个代码,它让我的页面挂起了。我不知道我错过了什么。另外,如果你有更简单的方法,请告诉我。
下面是我的代码示例:
<body onload="checkCookie()">
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function checkCookie() {
randomTag = getCookie("timeTag");
}
function tagGet() {
timeNow = new Date().getTime();
timeDif = timeNow - randomTag;
minNow = timeNow.getMinutes();
minLast = randomTag.getMinutes();
minDif = minNow - minLast;
if (timeDif > 29999) { //If 5+ minutes have passed
randomTag = timeNow;
setCookie("timeTag", timeNow, 365);
}
else if (timeDif < 30000) { //If less than 5 minutes have passed
if (minDif > 0) { //If at least 1 minute has passed since last random tag generation
for (y = 0; y < minDif; y++) { //Check to see if a five minute mark has passed by decrementing the current minute mark and comparing it to a five minute mark
for (z = 0; z < 60; z += 5) { //Increment by five minute marks for comparison ... 0, 5, 10, etc
if (minNow == z) { //If the minute mark now matches a five minute mark
randomTag = timeNow;
setCookie("timeTag", timeNow, 365);
}
minNow--; //Decrement minute mark now for comparing next minute mark
}
}
}
}
}
<a href="#" onClick="tagGet()">#</a> //This is generic
设置全局变量lastImage,并在请求图像时将其设置为Date()。
如果Date()>=lastImage+(5*60*1000),则仅检索新图像。
您可以在url末尾使用Date()作为唯一标识符,以避免缓存。
好的。我找到了一个非常简单的解决方案。基本上,我只需要将当前时间四舍五入到最后五分钟,就可以将变量设置为等于最后五分钟!真傻。答案就在这里,只是我减去了2.5,而不是加了2.5,因为我想找到最后五分钟的标记:Javascript:Round Time UP最接近5分钟
- 如何检测是否有溢出
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 如何使用密码检测网络中的状态连接
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 动态插入的表:JQuery未检测到最后一行
- 检测页面上某个元素中选择(突出显示)或单击的内容
- jQuery检测浏览器是否支持Zoom
- 检测iframe是否跨域的愚蠢方法
- 检测图像分辨率
- 如何检测第三方广告服务器请求
- AngularJS-检测到n分钟内没有任何操作并进入默认状态
- 检测五分钟标记
- ASP.Net 每五分钟弹出一次网络表单提醒
- 如何使用javascript每五分钟显示一条消息
- 在一个时钟中以五分钟为间隔绘制指示器