HTML 5-新浪微博发微博自动保存微博内容是如何实现的?

发布于 2017-02-08 14:29:42 字数 223 浏览 1466 评论 4

在新浪微博的发微博框中输入文字,这时候切换到其它页面或退出,等再切回首页或再次登录时,微博发布框中的内容是保存下来的。如果是实时保存在服务器,服务器的压力会不会太大?已经测试过不是保存在客户端cookie中。红框即为保存下来的内容

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-10-10 19:43:09

可以通过新浪微博的js文件查看到处理方式:http://js.t.sinajs.cn/open/analytics/js/suda.js?version=1322135457

var V = (function() {
    var i = window.localStorage,
    D, ar;
    if (i) {
        return {
            get: function(au) {
                return unescape(i.getItem(au));
            },
            set: function(au, av) {
                i.setItem(au, escape(av));
            }
        }
    } else {
        if (window.ActiveXObject) {
            D = document.documentElement;
            ar = "localstorage";
            try {
                D.addBehavior("#default#userdata");
                D.save("localstorage");
            } catch(at) {}
            return {
                set: function(au, av) {
                    try {
                        D.setAttribute(au, av);
                        D.save(ar);
                    } catch(aw) {}
                },
                get: function(au) {
                    try {
                        D.load(ar);
                        return D.getAttribute(au);
                    } catch(av) {}
                }
            }
        } else {
            return {
                get: g,
                set: r
            }
        }
    }
})();
偏爱自由 2017-10-10 10:46:07

应该用的是浏览器本地缓存,我测试了,清除了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的值,不过新浪微薄这里用的不是这个

泛泛之交 2017-10-04 21:26:26

用的是浏览器本地存储
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/

夜无邪 2017-08-15 12:10:52

大家回答的都很全面了。我也分享一个借用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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文