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

推荐订阅源

Know Your Adversary
Know Your Adversary
WordPress大学
WordPress大学
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
Vercel News
Vercel News
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
小众软件
小众软件
The GitHub Blog
The GitHub Blog
量子位
V
Visual Studio Blog
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
CERT Recently Published Vulnerability Notes
The Cloudflare Blog
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Secure Thoughts
The Hacker News
The Hacker News
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
Help Net Security
Help Net Security
G
GRAHAM CLULEY
Jina AI
Jina AI

博客园 - 草屋主人

高性能队列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的翻页,也是通过用户的浏览快达到一页的尾部时,自动触发下一页的请求。

总结

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