惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Schneier on Security
I
InfoQ
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
O
OpenAI News
W
WeLiveSecurity
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Cloudbric
Cloudbric
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
V
Visual Studio Blog
PCI Perspectives
PCI Perspectives
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
D
DataBreaches.Net
B
Blog RSS Feed
N
News and Events Feed by Topic
N
News and Events Feed by Topic
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
Latest news
Latest news
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
V
V2EX
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
Help Net Security
Help Net Security

博客园 - 草屋主人

高性能队列Fqueue的设计和使用实践 软件系统开发中的数据交换协议 MySQL与NoSQL——SQL与NoSQL的融合 NoSQL架构实践(三)——以NoSQL为缓存 NoSQL架构实践(二)——以NoSQL为主 NoSQL架构实践(一)——以NoSQL为辅 移动互联网系统架构的特点 关系数据库还是NoSQL数据库 NoSQL开篇——为什么要使用NoSQL 利用FUSE把memcached当磁盘使用 使用node.js快速开发透明代理 velocity大会主题演讲内容“移动互联网内容平台的架构和性能优化” InfoQ百度技术沙龙"APP Engine技术应用"主题的总结记录 用于php二进制操作和socket二进制通讯的phpbuffer v0.1开源发布 iDataForum2010数据库技术论坛总结 O'Reilly Velocity性能和运维大会以及我的演讲主题 【译】适合dba和开发者的mysql最佳实践 如何用队列提升系统性能 基于memcached协议构建自定义协议
基于视觉的系统性能优化
草屋主人 · 2010-10-27 · via 博客园 - 草屋主人

        [文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-10-27]    

起因  

      最近公司一个专题,结合了电视台的直播,在直播的时候流量猛增。这个专题的尾部页面带有自动刷新某系统的动态数据的功能 ,在直播当晚,给某系统带了非常大的带宽压力。但是根据页面的结构,用户基本都停留在首屏,也就是说用户根本就没有看自动刷新的数据。页面结构如下图:

       上图中:红色方框表示用户打开的首屏区域,在直播当晚,首屏很可能会有一个在线直播窗口。下边的绿色框表示可能会自动刷新的区域。

基于视觉的系统性能优化

      在浏览器中,我们能看到的页面限于显示器的高度和宽度。剩余的部分需要拉动滚动条才能显示。一般在未显示的区域,会有一些自动刷新的ajax等技术来实时刷新页面,比如投票数据,某个相关主题的用户提交的最新数据等。如果用户的显示器并没有浏览到自动刷新区域,我们可以停止自动刷新的请求,已达到节省请求的目的,这在互联网的大型专题,web2.0应用中非常普遍。我们把这种基于用户浏览器的显示的优化叫做“基于视觉的系统性能优化(performance optimization base on view)

为什么要使用基于视觉的系统性能优化

      1.用户已经离开电脑(午餐,开会,等等),但是浏览器仍在打开了你的页面,但是并不在自动刷新的区域。比如微博的自动提示新微薄,关注等等。

      2.用户浏览器在某一屏,但是并未看自动刷新的区域。比如视频直播,视频,某些专题。

      3.某些页面的内容,并不在用户常看的那一屏,可以选择性考虑lazy load。

   基于以上的的情况,应该还有其他场景,使用基于视觉的系统性能优化,可以减少系统请求,避免不必要的资源浪费。

如何实现基于视觉的系统性能优化(performance optimization base on view)

      要实现基于视觉的系统性能优化,非常幸运的是,几乎所有的浏览器都可以通过javascript得到滚动条的属性和事件。通过滚动条的属性和页面的高度,某一个dom节点的位置,可以非常方便的实现一旦用户的浏览区域达到某个位置,就触发请求。像google reader的翻页,也是通过用户的浏览快达到一页的尾部时,自动触发下一页的请求。

总结

      用户的在线时间越来越长,普遍的电脑配置都很高和多标签浏览器让用户打开的页面越来越多,但是用户观看的只有一个页面,所以,结合页面的“分屏”特点和这些特点,可以在很大程度上做些优化,节约带宽也好,节约服务器资源也好,总之,在很多时候,也还是值得的。欢迎有兴趣的朋友,跟我在微博交流。