HTML 5-新浪微博发微博自动保存微博内容是如何实现的?
在新浪微博的发微博框中输入文字,这时候切换到其它页面或退出,等再切回首页或再次登录时,微博发布框中的内容是保存下来的。如果是实时保存在服务器,服务器的压力会不会太大?已经测试过不是保存在客户端cookie中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在新浪微博的发微博框中输入文字,这时候切换到其它页面或退出,等再切回首页或再次登录时,微博发布框中的内容是保存下来的。如果是实时保存在服务器,服务器的压力会不会太大?已经测试过不是保存在客户端cookie中。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
可以通过新浪微博的js文件查看到处理方式:http://js.t.sinajs.cn/open/analytics/js/suda.js?version=1322135457:
应该用的是浏览器本地缓存,我测试了,清除了cookie及表单值后再登录后就没有保持了。
另外我跟换了浏览器打开也是不保存的。
浏览器本地存储除了cookie,还有很多其他方案:
Flash ShareObject
这种方式能能解决上面提到的cookie存储的两个弊端,而且能够跨浏览器,应该说是目前最好的本地存储方案。不过,需要在页面中插入一个Flash,当浏览器没有安装Flash控件时就不能用了。所幸的是,没有安装Flash的用户极少。
缺点:需要安装Flash插件。
Google Gear
Google开发出的一种本地存储技术。
缺点:需要安装Gear组件。
userData
IE浏览器可以使用userData来存储数据,容量可达到640K,这种方案是很可靠的,不需要安装额外的插件。缺点:它仅在IE下有效。
sessionStorage
使用于Firefox2+的火狐浏览器,用这种方式存储的数据仅窗口级别有效,同一个窗口(或者Tab)页面刷新或者跳转,都能获取到本地存储的数据,当新开窗口或者页面时,原来的数据就失效了。
缺点:IE不支持、不能实现数据的持久保存。
globalStorage
使用于Firefox2+的火狐浏览器,类似于IE的userData。
缺点:IE不支持。
localStorage
localStorage是Web Storage互联网存储规范中的一部分,现在在Firefox 3.5、Safari 4和IE8中得到支持。
缺点:低版本浏览器不支持。
结论:
Flash shareobject是不错的选择,如果你不想在页面上嵌入Flash,可以结合使用userData(IE6+)和globalStorage(Firefox2+)和localStorage(chrome3+)实现跨浏览器。
补充:由于项目需要,简单模拟了HTML5 localStorage中的几个方法,支持firefox2+,IE5+,chrome3+,其他不详。
另外window.name其实也是可以用来保存值的,能保存最大2M的值,不过新浪微薄这里用的不是这个
用的是浏览器本地存储
IE系列:User Data
localStorage:chrome, safari, firefox,IE 9,IE8都支持
html5的,可以用dom storage
本地存储解决方案很多,比如Flash SharedObject、Google Gears、Cookie、DOM Storage、User Data、window.name、Silverlight、Open Database等
具体例子请参考这里:http://blog.csdn.net/d19891006/article/details/6853197
http://www.css88.com/demo/localstorage/
大家回答的都很全面了。我也分享一个借用html5的local storage实现自动保存草稿的工具Sisyphus.js(是jQuery的一个插件)。这个是在smashingmagazine看到的,借用html5的特性,将表单数据保存到浏览器的local storage,同时刷新页面或者打开新tab页也可以恢复历史数据,只有在触发submit和reset才会清空。
Sisyphus.js使用很简单,里面有一个构造方法
sisyphus()
,用来初始化表单保存时间频率及一些回调方法。具体用法请参照:
Auto-Save User’s Input In Your Forms With HTML5 and Sisyphus.js
demo
source code