• 为什么大站都在用GIF做埋点?


    原因

    防止跨域拦截

    一般而言,打点域名都不是当前域名,所以所有的接口请求都会构成跨域。而跨域请求很容易出现由于配置不当被浏览器拦截并报错,这是不能接受的。但图片的 src 属性并不会跨域,并且同样可以发起请求。

    防止阻塞页面加载,影响用户体验

    通常,创建资源节点后只有将对象注入到浏览器 DOM 树后,浏览器才会实际发送资源请求。反复操作 DOM 不仅会引发性能问题,而且载入 js/css 资源还会阻塞页面渲染,影响用户体验。但是图片请求例外。构造图片打点不仅不用插入 DOM,只要在 js 中 new 出 Image 对象就能发起请求,而且还没有阻塞问题,在没有 js 的浏览器环境中也能通过 img 标签正常打点,这是其他类型的资源请求所做不到的。还可以通过它的 onerror 和 onload 事件来检测发送状态。

    相比PNG/JPG,GIF的体积最小

    最小的 BMP 文件需要 74 个字节,PNG需要 67 个字节,而合法的 GIF,只需要 43 个字节。同样的响应,GIF 可以比 BMP 节约 41% 的流量,比 PNG 节约 35% 的流量。并且大多采用的是 1*1 像素的透明 GIF 来上报 1×1 像素是最小的合法图片。因为是通过图片打点,所以图片最好是透明的,这样一来不会影响页面本身展示效果,二者表示图片透明只要使用一个二进制位标记图片是透明色即可,不用存储色彩空间数据,可以节约体积。

    示例

    <button onClick="btnClick()">Click</button>
    function btnClick(){
        new Image().src = '/media/1.gif?action=xushanxiangs&'+Math.random();
    }

    更多示例请看:

    www.haorooms.com/post/css_data_up

    www.zhangxinxu.com/wordpress/2018/12/css-data-report-html-validate/

    采集打点信息

    nginx采集打点信息

    nginx 有个 empty_gif 的模块,它把图片存放在 nginx 的内存中,所以它的访问速度比静态文件的访问速度还快。

    Filebeat进行日志的上报和搜集

    Filebeat 是本地文件的日志数据采集器。 作为服务器上的代理安装,Filebeat 监视日志目录或特定日志文件,tail file,并将它们转发给 Elasticsearch 或 Logstash 进行索引、kafka 等。

    本文出处:为什么大站都在用GIF做埋点? (xushanxiang.com)

  • 相关阅读:
    NSData和NSString 、 NSFileManager
    通知(Notification) 、 应用间通信(一)
    Dynamic支持CollectionView布局 、 MotionEffects特效 、 BlurImage效果 、 TextKit
    Dynamic Animator 、 CollectionViewLayout
    动画(Animation) 、 高级动画(Core Animation)
    Autoresizing和AutoLayout
    触控(Touch) 、 布局(Layout)
    手势与变形 、 视图与坐标系
    常用的静态变量,包括颜色等
    JSPatch动态修改已上架app的bug,即时修复bug
  • 原文地址:https://www.cnblogs.com/xusx2014/p/16119083.html
Copyright © 2020-2023  润新知