- 相关文章 (13)
- QBlog隐藏技巧 (2)
- 爱说说系列 (4)
- QBlog 开源发布 (3)
- QBlog版本发布 (8)
- QBlog 模板制作教程 (6)
- QBlog开发者视频教程 (6)
- 秋色园技术原理解析 (21)
- 现在还是ACCESS吗
- 日本超人気のスーパーコピーブランド激安通販専門店! ┏━━━━━2024年人気最高品質━━━━━┓ ◎━ 腕時計、バッグ、財布、アクセサリ ━◎最新入荷! 商品の数量は多い、品質はよい、 高品質のブランドコピーを超激安な価格で販売しています。 ★ 100%品質を保証する。 ★ 送料は無料です(日本全国)! 税関の没収する商品は再度無料にして発送します!
- 啊哈
- スーパーコピーブランド専門ショップ時計 バッグ 財布N級品販売通販 全品送料無料!! 弊社は価値をつけてルイヴィトンを販売して、シャネル 、グッチなど。 ◆2018年は最も新型に人気があって、新しい素材の商品到着! 人気ブランド品大注目 ◆信用の第1、風格は多くて、品質は良いです! ◆運賃の無料(日本全国)が予約購入することを期待しています! ◆弊社の商品は絶対的な自信があります。 ぜひ、見てくださいね!! 海外スーパーコピーのスーパーコピー バッグ、アクセサリー スーパーコピー時計、貴金属の(リサイクル品)のスーパーコピー販売買取
- ルイヴィトン 財布スーパーコピー ようこそ ルイヴィトン スーパーコピー販売商店へいらっしゃいませ! 真心込めて最高 レベルのスーパーコピールイヴィトン偽物ブランド品をお届けしています。 安全税関対策+ 素早い配送+随時の在庫補給+丁寧な対応+スーパーコピー販売業界最低価格に挑戦 ! 当店は業界最高品質に挑戦!全商品はプロの目にも分からないルイヴィトン 財布スーパーコピーです。 ルイヴィトン財布コピー、ルイヴィトン 財布 ブランド偽物など世界 有名なバックコピー商品が満載! 当店のスーパーコピー商品は他店よりも質が高く、金額も安くなっております。 ご購入する度、ご安心とご満足の届けることを旨にしております よろしくお願いします ありがとうございます (*^__^*)
- 可以
- 不错,博主是大神,膜拜中
- 44
- 顶起来!一页文字,几载求索
- ACESS 我也是深恶痛绝,但还是不得不用
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(31571)
- 调查:是否支持秋色园QBlog走进开源博客之路(30642)
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(28382)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(27768)
- Windows7下如何安装部署秋色园CYQBlog站点(20055)
- 如何安装部署秋色园CYQBlog站点(19390)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(19249)
- 秋色园QBlog技术原理解析:Module之基类生命周期-页面加载(七)(19109)
- 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)(19066)
- CYQ.IIS 无需要安装IIS运行QBlog网站(18747)
- 调查:是否支持秋色园QBlog走进开源博客之路(32)
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(23)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(13)
- QBlog开发者视频教程:开篇-开发基础配置与系统运行(一)(13)
- CYQ.IIS 无需要安装IIS运行QBlog网站(13)
- Windows7下如何安装部署秋色园CYQBlog站点(12)
- 开源博客CYQ.Blog 秋色园QBlog 源码下载[免费开放24个下载码](11)
- 如何安装部署秋色园CYQBlog站点(10)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(10)
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(10)
上一节:爱说说技术原理:前后台参数约定及逻辑代码 中,讲解了“爱说说”的后台简单的逻辑处理代码。
本节,看一下前端的逻辑及优化事项[爱说说:http://speak.cyqdata.com/ ]
前言说明:
1:前端没有使用JQ,采用原生的XmlHttp做为异步请求。
2:前端代码就不多贴了,直接查看页面源文件就能看到所有的代码了。
以下讲一下“爱说说”在这个过程中优化过的注意事项:
[PS:事隔这么久,好多都忘了,只能靠点回忆代码来写了]
一:基础优化
1:避免直接用控件循环加载html,而用变量组合html,最后一次给控件的innerHTML赋值:
不良用法:for(i in json.data){$('div').innerHTML+=json.data[i].Name;}
正规用法:var html;for(i in json.data){html+=json.data[i].Name;}$('div').innerHTML=html;
2:定义的对象或变量,用完后,赋null值:
二:逻辑优化
1:客户端基本请求策略:
1:首次请求,加载1页数据40条消息,后面可以点击显示更多,每次40条消息。
消息显示难点:40条中可能包含回复,而回复的主留言可能在40之外,因此,对于回复,如果找不到父ID,即主留言,临时存储到数组中,等用户点击更多时,再看看有没有父ID存在,有就挂下去补充,没有继续存储等待更多...如果重复的说。
2:定时请求,请求从消息的尾步开始,每次请求后拿取maxID,下次根据maxID请求后续内容。
2:客户端基本优化策略:
1:代码重用,函数封装,优化调用
2:定时器的策略,优化请求资源
{
loadCallBack(result,callByTimer);
if(callByTimer)//系统定时器
{
IdleTimes++;//设置空闲次数
switch(IdleTimes)
{
case 8://1分钟没发言,将会16秒刷新一次
case 16://3分钟没发言[又过了16*8秒],将会32秒刷新一次
case 24://7分钟没发言[又过了32*8秒],将会64秒刷新一次
handleTime=handleTime*2;//定时器时间加倍
clearTmer();//取消刷新
timer();//开始新的计时刷新
break;
case 75://1小时没反应,自动刷新。
location.href=location.href;
break;
}
}
else
{
IdleTimes=0;//用户发表信息,恢复定时器
if(handleTime!=8000)
{
handleTime=8000;//定时器时间还原
clearTmer();//取消刷新
timer();//开始新的计时刷新
}
}
}
PS:从这段代码看,策略是对于不聊天的人群,采用步步拉大请求时间,节省服务器请求资源。
3:聊天策略,优化加载,聊天流畅
原因:如果在打字的时候,刚好遇到消息回来并加载显示的过程,界面会变的相当的卡。
因此策略是:聊天时,停止消息加载,发布消息后,恢复消息加载。
具体:
光标定位到打字框时,设置标识
停止加载-》存储未加载的对象到数组中[到下次请求时一起显示]-》发表留言[恢复标识]
4:小技巧避开“点击”,引发音乐切换
原因:<a href="javascript:xxx()"...的方式的点击会引起iframe 的音乐链接重新加载,从而音乐自动切换了。
解决:<a href="###" onclick="xxx()"...换成这种方式即可以了。
5:适当避开快速聊天,限制“发布”按钮
发布消息时,将“发布”按钮置不可用,等下次消息回来时,再恢复“发布”按钮的可用状态,因此两次聊天的时间间隔是“1-8”秒之间。
相关文章: