页面切换请求接口优化
站群显示各站最新文章信息切换请求接口优化!
第一次制作出来的时候,发现每次点击切换则请求一次接口,不管是否请求过,导致可以频繁请求同一份数据,而且当前状态时再次点击还可以重复请求,因此在不太合理而且增加服务器压力并且不节流!
针对以上问题,主要优化为两点;
第一:当前状态是再次点击则不能重复请求数据;
第二:请求过的数据则记录下来,再次点击是从历史中获取,不再请求服务器接口。
通过调整后的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | var getInfo= function (){ var msg = new Object; var set = function (obj,msg){ var listHtml= "" ; var listInfo = JSON.parse(msg); for ( var i=0; i<listInfo.length; i++){ listHtml += '<li><span class="date">' +listInfo[i].PublishTime+ '</span><a href=' + listInfo[i].ContentRouteUrl + ' target="_blank" title="' + listInfo[i].Title + '">' + listInfo[i].Title + '</a></li>' } if (listHtml){ $( "#" +obj).html(listHtml) } else { $( "#" +obj).html( "<li class='noData'>暂无信息</li>" ); } }; var get= function (obj,siteid){ $( "#" +obj).html( "<li class='noData'>加载中…</li>" ); var result=msg[obj+siteid]; if (!result){ var parames={ Count:10, SiteId:siteid, DisplayDateTime: "yyyy-MM-dd" }; $.ajax({ url: apiUrl, type: 'post' , data: { partialViewName: "站点-最新文章列表-json格式" , parameters: JSON.stringify(parames) }, success: function (res) { result=res.html; msg[obj+siteid]=result; set(obj,result); } }); } else { set(obj,result); } }; return get; }(); $( ".js-tab li" ).click( function (){ var obj=$( this ).parent( "ul" ).attr( "data-id" ); var siteid=$( this ).attr( "data-site" ); if (siteid){ if (!$( this ).hasClass( 'on' )){ getInfo(obj,siteid); } } else { $( "#" +obj).html( "<li class='noData'>暂无信息</li>" ); } $( this ).siblings( "li" ).removeClass( "on" ); $( this ).addClass( "on" ); }); function setFisrtInfo(obj){ $(obj).each( function (index) { var tabObj=$( this ).find( ".js-tab" ); var obj=tabObj.attr( "data-id" ); var siteid=tabObj.children( "li" ).eq(0).attr( "data-site" ); tabObj.children( "li" ).eq(0).addClass( "on" ); //给tab第一项添加类名 getInfo(obj,siteid); }); } //默认加载第一项内容 $(document).ready( function () { setFisrtInfo( "#content .box" ); }); |
效果如下:注意请求的AjaxPartial数量,第一次点击切换是请求接口获取数据,第二次再点击该站点进行切换时,直接从缓存中获取数据,不需要重复请求接口;
用户登录
还没有账号?
立即注册