Web应用接口应该考虑的几个问题

接口

每个应用都有可能需要对外提供数据接口,尤其是Web应用。比如下图,你看到的页面可能是来住很多个不同应用。

土豆网首页
目前,Web接口大致有这么几种类型:

1)  直接读取应用的数据库

这种方式的特点就是高效,缺点耦合性比较高

2)  通过公共代码库的方式

其他应用程序直接调用代码库就可以了,这种方式的优点就是封装了实现的细节,调用者不需要关心实现,而关注接口即可。缺点就是如果接口改变了,需要升级代码库,如果应用数量很多,升级的周期会比较长。

3)  HTTP方式调用

由于Web应用的特点,采用HTTP方式调用,将需要调用的数据封装成HTML形式,直接包含在页面上。这种具体又可以分为JS调用和后台Import调用。这种方式也是主流的方式,具体后面再谈。

4)  REST 方式调用,如果应用很多,接口也很多,这样要管理接口就会比较麻烦了,所以采用REST方式把所有接口统一组织管理起来,提高了开发效率。本质上这也是一种HTTP调用。

5)  类似Gadget方式调用,Gadget是Google 提出来的一种应用标准,可以将接口封装成Gadget形式。这种方式更易于管理,不过开发速度要稍微慢点。本质上这也是一种HTTP调用。 
接下来重点分析一下HTTP调用的2种形式的优缺点。

JS调用和Import方式调用

JS调用

来看一下JS调用的具体例子

  土豆网评论页
页面上的这块评论来自于评论系统的接口,这个接口直接返回了生成好的HTML

http://www.tudou.com/comments/itemcomment.srv?method=get&r=1&iid=20038766&page=1&tm=1&ban=1

             由于Javascript 是阻塞页面的,所以JS接口通常会采用异步方式加载,比如将JS接口放在尾部加载出来。

  尾部加载JS
这种方式的优点就是提高了页面的加载速度,但如果是对于慢速网络用户,可能要过很久才能看到评论,另外非常致命的缺点在于这部分的内容是搜索引擎无法检索到的。

         来看一下土豆首页,会明显感觉到右上角先是一个空白,然后再出来。

  非阻塞JS 缺点
         如果是采用阻塞方式调用的话,缺点就是会等待,但内容是立即显示出来的。

         另外,从数据格式来看,这种JS调用没有将显示和数据分离,如果要做其他版式的接口,就只能重新开发了。因此十分有必要将数据和现实进行分离。接口只提供数据,显示由具体调用的应用来实现,这种方式在REST里也有体现。 
总结一下:

JS调用 缺点 优点 使用的场合
阻塞式调用 页面会等待
无法SEO
内容立即显示 客户广告,因为肯定不希望广告最后出来
非阻塞式调用 不能立即看到内容
无法SEO
提高页面响应速度 大数据加载或者非重要数据
数据和现实分离 不能立即看到内容无法SEO
可以自定义版式 采用JSON/XML格式,
       

 现在来看讨论一个高级话题:如何解决JS调用数据的SEO问题?
 此问题没有标准答案,我也不知道答案,仅把一些实验结果分享一下。


评论页
对着第一个图,来看,有2点比较有争议:

1.       采用非阻塞式JS调用,SEO基本没可能

2.       这个页面的SEO权重会被降低,因为从页面结构上来说,评论是这个页面的主体内容,如果无法SEO,这个URL的权重会大大降低。 
针对第一点,经过实践证明,采用下面这种方式可以改进SEO。
SEO 占位手法
主要的手法,就是先用一个链接引导搜索爬虫去检索这个链接,对于用户来说,这个链接的内容将会在页面加载完毕后出现。

 

     针对第二点,暂时无解!唯一能避免的就是采用第二种调用方式,Import方式。

期待你的答案

 

Import方式

Import方式是指将页面所需要的内容都统一生成好后,再提供给用户。具体的方式大致有以下几种:

1)  SSI方式,此种方式不能跨服务器

2)  动态包含 <c:import /> <jsp:include /> ... 等,可以包含动态

3)  自定义包含方式 <project:cache url="xxxx" />  
不管采用哪种方式,缺点都是一样的,就是对于动态或者变化比较快的内容,效率就不够高。但对于非动态内容,采用这种方式可以增加Expire,提高CDN对网页的缓存,加快用户的访问速度。 

总结

对需要提供接口的应用来说,接口应该根据被调用的应用的特点来区分对待,如果是静态应用,可以提供import 形式接口,对于动态应用,提供JS形式接口

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值