整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          正確發送統計數據到服務器

          PI 介紹:

          navigator.sendBeacon() 方法支持我們使用 POST 的請求方式將少量的數據異步發送到服務器進行存儲。同時避免使用一些傳統技術,例如:使用 gif 格式的 img 來發送數據。

          為什么要使用:

          使用該 API 的應用可以滿足在 unload 之前上服務器發送數據,保證數據被提前發送導致后續的部分數據丟失的情況發生。當在 unload 之前適用 img 來發送數據還會造成 unload 的延遲執行,因為要等待圖像的加載,其他的傳統做法也會引起延遲導致下一個頁面出現的不及時。

          使用該 API 可以保證:

          1. 數據發送可靠;
          2. 數據異步傳輸;
          3. 不影響下一個頁面載入。

          API 使用方法:

          1. navigator.sendBeacon(url);
          2. navigator.sendBeacon(url, data);

          參數說明:

          參數

          說明

          url

          數據發送的服務器地址

          data

          待發送數據,支持 ArrayBufferArrayBufferViewBlobDOMStringFormDataURLSearchParams 類型

          result <返回值>

          當數據被成功加入傳輸隊列后返回 true,否則返回 false

          案例分析:

          在會話結束時發送統計數據到服務器,我們可以監聽 visibilitychange 事件,在 dom 的可見狀態變為 hidden 時執行 sendBeacon 發送數據。

          1. 組裝符合sendBeacon函數的數據參數;
          2. 監聽visibilitychange;
          3. 執行發送數據;
          4. 成功插入隊列將返回 true。
          <!DOCTYPE html>
          <html lang="en">
            <body>
              <h3>Send-Data</h3>
              <script>
                // ① 
                const params = new URLSearchParams();
                params.append("fun", "click");
                params.append("time", "100ms");
                params.append("count", "1");
                // ② 
                document.addEventListener("visibilitychange", () => {
                  if (document.visibilityState === "hidden") {
                    // ③ 
                    const result = navigator.sendBeacon("/log", params);
                    // ④ 
                    console.log(result);
                  }
                });
              </script>
            </body>
          </html>

          使用 expressjs 來準備一個接口數據的服務:

          const express = require("express");
          const app = express();
          const bodyParser = require("body-parser");
          const port = 3000;
          
          app.use(bodyParser.urlencoded({ extended: false }));
          app.use(bodyParser.json());
          app.use(express.static("public"));
          
          // 接收 log 數據
          app.post("/log", (req, res) => {
            console.log("body", req.body);
            res.send("pong");
          });
          
          app.listen(port, () => {
            console.log(`app listening on port ${port}`);
          });

          API 兼容性:

          注意事項:

          避免使用 unload 和 beforeunload 在會話結束時發送統計數據。因為在許多情況下(尤其是移動設備)瀏覽器不會產生 unload、beforeunload、pagehide 事件。

          上個express搭建的基礎上,


          app.use('public',express.static('public'));


          在項目目錄上創建public文件夾,再創建子文件夾image


          test.js

          let express = require('express');


          let app = express();


          app.use('/public',express.static('public'));


          app.get('/',function(req,res){

          res.send('測試')

          })


          let server = app.listen(8080,function(){


          console.log('服務啟動');

          })

          這時候只要通過訪問localhost:8080/public/圖片.png

          就可以訪問到托管到服務上的文件了


          同樣的道理,我們可以把html文件托管上去,我們的html頁面就可以被訪問了

          在我們項目的根目錄下,創建一個html文件,我這里創建的是testReq.html

          app.use('/public',express.static('public'))


          app.get('/testReq.html', function (req, res) {

          res.sendFile( __dirname + "/" + "testReq.html" );

          })

          //這里的__dirname指的是獲取當前文件所在目錄的完整目錄


          者:藍色的秋風

          轉發鏈接:https://mp.weixin.qq.com/s/cruL9JGZNZQFrMSrzJJWiQ


          主站蜘蛛池模板: 国产日韩AV免费无码一区二区 | 最美女人体内射精一区二区| 国产aⅴ一区二区三区| 一区二区三区电影在线观看| 精品少妇人妻AV一区二区| 国产一区二区三区久久| 国产一区二区久久久| 日本一区二区三区精品中文字幕| 波多野结衣AV一区二区三区中文| 国产乱码一区二区三区爽爽爽 | 午夜视频在线观看一区| 久久精品中文字幕一区| 精品国产一区二区三区av片| 日本一区二区在线| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产一区二区精品久久岳√| 亚洲一区中文字幕在线电影网| 三上悠亚一区二区观看| 日本一区二区三区免费高清在线 | 一区二区三区免费视频播放器| 日韩精品一区二区三区中文精品| 久久国产一区二区三区| 亚洲乱色熟女一区二区三区丝袜| 久99精品视频在线观看婷亚洲片国产一区一级在线| 成人免费观看一区二区| 日韩一区二区在线视频| 精品人伦一区二区三区潘金莲 | 国产伦精品一区二区三区视频猫咪| 国内精品一区二区三区最新| 偷拍激情视频一区二区三区| 亚洲一区二区中文| 亚洲狠狠久久综合一区77777| 国产乱码一区二区三区爽爽爽| 国产成人无码AV一区二区在线观看 | 2022年亚洲午夜一区二区福利| 日韩免费无码一区二区三区 | 国产精品亚洲高清一区二区| 久久毛片免费看一区二区三区| 一区二区三区四区在线播放| 亚洲av无码天堂一区二区三区 | 人妻av综合天堂一区|