具有动态更新的实时标题 (AJAX+jQuery)
Live title with dynamic update (AJAX+jQuery)
我有一个网站,用户可以在网站上收到收件箱消息和通知。(就像在Facebook上一样,当你有通知时,你会在磁贴的开头看到(1)
目前我有一个 ajax 请求,它获取标题必须显示的数据。它的工作方式类似于魅力,但问题是此文件每 10 秒调用一次。如果用户有 10 个页面选项卡,则此文件将被调用 10x10=100 次。如果我的网站有数千个用户,您就会了解它将产生多少负载。
我虽然只在活动选项卡上运行 javascript,但我如何更新我网站所有打开的选项卡的标题?还有其他建议吗?
这是我的代码
var oldtitle=$(document).attr("title");
var checker=function(){
$.ajax({
url : 'live_title.php',
type : 'POST',
success : function(data) {
... code ....
... code ....
... code ....
if (sum>0) {
$(document).attr("title", "("+sum+") "+oldtitle);
}
}
});
}
setInterval(checker,20000);
checker();
缓存
机制似乎是正确的方法。
第一个想法:使用 HTTP 缓存
请务必将参数添加为查询字符串,并将当前时间戳舍入到前 10 秒。
确保您的 Web 服务器发送正确的标头,以便 HTTP 缓存正常工作。最好使用 GET 请求。
例:
$.ajax({
url : 'live_title.php',
type : 'GET',
success : function(data) {
// code
},
data: {t: Math.floor((+new Date())/10000)}
}
// we send a request similar to live_title.php?t=142608488
第二个想法:使用 window.localStorage 作为辅助本地缓存。
除了第一个想法之外:
var getCache = function(t) {
if (window.localStorage) {
var liveTitle = localStorage.getItem('liveTitle') || {};
return liveTitle[t] || null;
}
};
var setCache = function(t, data) {
if (window.localStorage) {
window.localStorage.setItem('liveTitle', {t:data});
}
}
var run = function() {
var t = Math.floor((+new Date())/10000);
var cache = getCache(t);
var success = function(data) {
/*code*/
};
if (cache) {
success(cache);
}
else {
$.ajax({
url : 'live_title.php',
type : 'GET',
success : function(data) {
setCache(t, data);
success(data);
},
data: {t: t}
}
}
}
我不认为你可以轻易做你想做的事。
此外,为了优化这一点,我建议使用缓存:
- 有一次,选项卡调用对消息进行计数的方法,执行查询并将结果缓存到简单文件或内存中
- 在接下来的 5 分钟内,每次 Tab 调用该方法时,都使用缓存,而不查询数据库
- 当 5 分钟过去后,再次执行查询,缓存它,依此类推。
像这样,在 100 个调用中,您只有 1 个大请求,其他请求就像请求 js 或 img 文件
相关文章:
- 在FrontEndphp-ajax-jquery中验证reCaptcha-google
- AJAX jquery json将数组发送到php
- 如何使用Ajax/jQuery设置cookie
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 如何使用Ajax JQuery.ech()获取JSON值
- 使用springform时,如何在ajax/jquery中获取复选框值
- JSP AJAX jQuery填充表问题
- Piping Value: Ajax + JQuery
- 使用javascript Without Ajax/Jquery在特定行中启用文本框
- 在AJAX jQuery加载()之后运行jQuery代码
- 具有动态更新的实时标题 (AJAX+jQuery)
- ajax/jQuery Youtube 播放列表推送
- AJAX jQuery Avatar Uploading
- 全局变量 - AJAX jQuery
- Ajax jquery mysqli update
- 获取剩余时间和上传文件速度 - ajax jquery/js
- 使用ajax/jquery绑定Json数据
- TypeError Obj.root是未定义的ajax jquery
- 当数据类型为XML时,如何将url参数传递给AJAX jquery
- 在初始表单提交后使用ajax/jQuery自动刷新,然后更改页面标题