Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久免费视频网站,久操视频在线免费观看,一级毛片全部免费播放

          整合營銷服務商

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

          免費咨詢熱線:

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

          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

          待發送數據,支持 ArrayBuffer、ArrayBufferView、Blob、DOMString、FormDataURLSearchParams 類型

          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一区二区三区在线| 无码人妻精品一区二区三区在线| 亚洲毛片不卡av在线播放一区| 亚洲sm另类一区二区三区| 少妇激情一区二区三区视频| 中文字幕无码一区二区免费| 中文字幕在线视频一区| 精品一区二区三区在线观看l| 麻豆aⅴ精品无码一区二区| 成人免费区一区二区三区| 好爽毛片一区二区三区四| 亚洲AⅤ视频一区二区三区| 能在线观看的一区二区三区| 美女福利视频一区二区| 日韩在线一区二区三区免费视频| 日韩精品福利视频一区二区三区| 蜜臀AV无码一区二区三区| 国产大秀视频在线一区二区| 亚洲AV无码一区二区三区网址| 久久精品国产AV一区二区三区| 久久精品一区二区东京热| 射精专区一区二区朝鲜| 亚洲av无码片区一区二区三区| 日韩免费一区二区三区在线播放| 亚欧在线精品免费观看一区| 97一区二区三区四区久久| 精品国产日韩一区三区| 国产一区二区三区在线电影| 一区 二区 三区 中文字幕| 亚洲熟妇av一区二区三区| 无码人妻久久一区二区三区| 中文字幕无码不卡一区二区三区| 免费高清av一区二区三区|