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

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

博客园 - 草屋主人

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

总结

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