博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Web缓存机制概述】5 – Web App时代的缓存机制新思路
阅读量:5928 次
发布时间:2019-06-19

本文共 1416 字,大约阅读时间需要 4 分钟。

====索引=====

============

Web App的概念逐渐被业界认可,各大互联网公司也纷纷推出Web App开发大赛,积极引入到他们的开放平台,比较著名类似facebook农场,qzone偷菜之类的。Web开发逐渐从Web Page的进入到Web App的时代,想详细了解的话,可以看下在D2上分享的分享《开放时代:从Web Page到Web APP》、。

Web App常见架构

以WebQQ例,WebQQ这个站点的所有内容都是一个页面里面呈现的,我们看到的类似windows操作系统的框架,是它的顶级容器和框架,由AlloyOS的内核负责统筹和管理,然后其他模块,比如壁纸设置,消息中心,App Store都是以模块的形式,并用iframe的方式嵌入到顶级容器中。具观察,现在越来越多的Web应用都倾向于使用这个的架构,这样做好处是很明显的,比如顶级框架可以维持一个不变的javascript上下文便于管理;关闭模块的iframe后,内存可以更好的释放;利用iframe的安全机制最大限度的保证内核的安全和稳定等等。

这种Web的架构,其实也给我们Web前端提供了从代码逻辑层面上给Web应用实现缓存提供了可能。

缓存Ajax请求

由于顶级框架页面是不会由于调整刷新而导致javascript上下文丢失,所以底层或各个模块所需要的Ajax请求,都是可以通过顶级框架统一请求后,并以信息服务的形式对外提供Api调用。对于一些实时性要求不是很强的请求来说,可以由顶级框架做统一缓存,定期更新。这种做法可以不影响用户体验的前提下,明显减少请求数,降低网络流量,并间接减轻了服务器的压力。

通过Javascript实现内存缓存

跟缓存Ajax请求的结果类似,程序运行过程中的其他数据,其实也可以采用类似的方式在顶级容器的Javascript上下文中缓存。

 

Web App发展新方向:Web-Client模式

随着Web App的进一步发展,貌似浏览器已经无法阻挡Web应用探索更前端,更本地化Native App的用户体验。比如目前的、等应用,都采用Client、Web相结合的开发模式。这样做即可以利用Web开发迭代更新快、UI开发成本低等特点,有可以利用客户端的能力为Web实现很多无法实现的功能。以Qplus为例,Qplus不但内嵌了Webkit内核,还未Webkit上定制了很多便利的接口,比如跨Web-Client的拖曳、多线程下载等。在这种发展新模式下,Web缓存又能有什么考虑的发张方向呢?

客户端提供缓存读写能力

我们知道,HTML5的localstorage仅仅只能支持5m的存储。我们可以按localstorage的设计思路,让客户端为Web定制更大,更灵活的本地存储功能。到时,Web缓存能做的事情就会更多。

 

以上就当前Web App的发展趋势,讨论了对于Web缓存领域,有哪些可以做,可以考虑的方向。当然,这些做法,合不合理,合不合适都还是值得讨论和商榷的,如果你有想法,都可以随时联系并一起讨论。

 

全文总结

本文尝试概述目前Web缓存方向的现状,以及HTML5和Web App时代下,Web缓存可以考虑的新方向。由于时间仓促和表达概括能力有限,有可能有表达不妥的地方,欢迎指正讨论。

历史

[Version 1.0] 2012-03-21 @ tencent webplus team

 

参考文献

 

 

 

转载地址:http://xnevx.baihongyu.com/

你可能感兴趣的文章
各种算法和数据结构的复杂度
查看>>
EZ-430 Chronos 的相关参数
查看>>
Sqrt(x)
查看>>
homebrew cask安装launchrocket
查看>>
关于listview的item的点击事件的各个参数使用
查看>>
WDCP忘记面板后台登录密码找回方法
查看>>
xtrabackup部分备份数据库 Partial Backups
查看>>
快速清空mysql表的方法
查看>>
Git 一些常用命令
查看>>
perl here document
查看>>
一个非常好的网站!非常适合html开发的初学者
查看>>
mysql单机多实例
查看>>
spring mvc no bean named xxx is defined错误
查看>>
Https证书申请并自动更新与分发
查看>>
我的友情链接
查看>>
python3中用configparser对配置文件的读写
查看>>
spring mvc3.1 @ResponseBody注解生成大量Accept-Charset
查看>>
js遍历数组和遍历对象的区别(动态生成ul li)
查看>>
[leetcode] Merge k Sorted Lists
查看>>
腾讯实习 转载
查看>>