Jul
8
facebook javascript sdk的拆分设计
facebook的javascript sdk因为需要完成比较多的功能,因此体积比较大(50K左右)。
如果每次都完整载入,必然会导致浪费过多带宽,因此缓存是必要的;但是缓存会导致BUG fix或者function enhancement无法即时更新到客户端。二者之间的矛盾调和可以用调整缓存时间来解决,但是这种解决方案并不够好,尤其是灵活性不够,有时候lib一天更新几次,有时候十天半个月甚至更久都不更新,这种解决方案的适应性就不够了。
facebook用的解决方案是,将sdk进行拆分,变成两块,第一块是loader,约2KB,缓存时间1小时;第二块是lib,约50KB,缓存时间一个月。开发者只需要用script标签载入loader即可,由loader来载入lib。lib的路径是带有版本号的,当facebook更新了lib以后,只需要修改loader中lib的版本。由于版本号不同了,路径也不同了,因此浏览器会重新请求新版本的lib。
该思路摘自facebook的wiki:http://wiki.developers.facebook.com/index.php/FeatureLoader.js.php
p.s. 这个是旧版的SDK。
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
如果每次都完整载入,必然会导致浪费过多带宽,因此缓存是必要的;但是缓存会导致BUG fix或者function enhancement无法即时更新到客户端。二者之间的矛盾调和可以用调整缓存时间来解决,但是这种解决方案并不够好,尤其是灵活性不够,有时候lib一天更新几次,有时候十天半个月甚至更久都不更新,这种解决方案的适应性就不够了。
facebook用的解决方案是,将sdk进行拆分,变成两块,第一块是loader,约2KB,缓存时间1小时;第二块是lib,约50KB,缓存时间一个月。开发者只需要用script标签载入loader即可,由loader来载入lib。lib的路径是带有版本号的,当facebook更新了lib以后,只需要修改loader中lib的版本。由于版本号不同了,路径也不同了,因此浏览器会重新请求新版本的lib。
该思路摘自facebook的wiki:http://wiki.developers.facebook.com/index.php/FeatureLoader.js.php
p.s. 这个是旧版的SDK。
欢迎扫码关注:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。