首页  >  问答  >  正文

用隐藏的img,通过src的调用后台逻辑有什么好处?

发现有些web程序中会在页面中放置一个隐藏的img,然后把它的src设置为调用后台业务逻辑的url。这样做有什么好处?和加载页面后通过javascript发起一个ajax请求有什么区别吗?

代言代言2903 天前1008

全部回复(2)我来回复

  • 大家讲道理

    大家讲道理2016-11-07 14:08:04

    英文术语叫:image beacon
    在Google 的 Make the Web Faster 的 #Track web traffic in the background 中有提到。

    主要应用于只需要向服务器发送数据(日志数据)的场合,且无需服务器有消息体回应。比如收集访问者的统计信息。

    一般做法是服务器用一个1x1的gif图片来作为响应,当然这有点浪费服务器资源。因此用header来响应比较合适,目前比较合适的做法是服务器发送"204 No Content",即“服务器成功处理了请求,但不需要返回任何实体内容”。

    另外该脚本的位置一般放在页面最后以免阻塞页面渲染,并且一般情况下也不需要append到DOM中。通过它的onerror和onload事件来检测发送状态。

    
     var thisPage = location.href;
     var referringPage = (document.referrer) ? document.referrer : "none";
     var beacon = new Image();
     beacon.src = "http://www.example.com/logger/ ... ot%3B + encodeURI(thisPage)
     + "&ref=" + encodeURI(referringPage);
    

    这样做和ajax请求的区别在于:
    1.只能是get请求,因此可发送的数据量有限。

    2.只关心数据是否发送到服务器,服务器不需要做出消息体响应。并且一般客户端也不需要做出响应。

    3.实现了跨域。


    回复
    0
  • 三叔

    三叔2016-11-07 14:06:54

    你能告诉我你看的段落吗?我看的标准里,类中定义的是T::i,并不是重定义。而且这个T::i还是私有的。

    回复
    0
  • 取消回复