日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端DevOps之PageSpeed Insights

發布時間:2025/4/5 HTML 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端DevOps之PageSpeed Insights 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 Google Cloud Scheduler, Pub/Sub, Functions , Storage 等云服務,搭建 PageSpeed Insights 前端網站網頁的質量和性能 benchmark CI Job 工作流。

1. PageSpeed Insights

1.1 簡介

PageSpeed Insights 是 Google 提供的一款網頁性能檢測優化工具,能夠針對移動設備和桌面設備生成網頁的實際性能報告,并提供關于如何改進相應網頁的建議。它采用 Google Lighthouse 提供的各種最佳實踐作為測試基準,使用 Blink 渲染工具(即 Google Chrome 的渲染引擎),模擬移動設備和桌面設備,抓取目標網站網頁,進行優化分析。
以下簡稱PSI。

1.2 版本歷史

版本發布時間功能更新
V52018年Q4當前最新版本。2019.05.08更新使用 Lighthouse 5.0 作為其分析引擎。
V42018年1月2019年Q3之前停用
V22015年1月已停用
V1更早期已停用

1.3 分析報告組成

1.3.1 綜合速度得分

評分和等級:

  • 快 90分以上
  • 中等 50-90分
  • 慢 50分以下

V5版本使用 Lighthouse 計算多項性能指標的綜合加權得分。
V4及之前版本結合 Chrome 用戶體驗報告數據庫中的真實用戶測速數據,計算評分和等級。主要參考以下兩項指標。

  • FCP (First Contentful Paint)首次內容繪制,用于衡量用戶何時看到來自相應網頁的可見響應。所用時間越短,留住用戶的可能性就越大。
  • DCL 文檔內容加載,用于衡量何時完成 HTML 文檔的加載和解析。所用時間越短,跳出率越低。

1.3.2 實測數據

結合 Chrome 用戶體驗報告中的其他網頁過去30天內的實測數據相比的得分。

1.3.3 實驗室數據

給出以下幾項指標的耗時絕對值數據:

  • First Contentful Paint 首次內容繪制時間
  • First Meaningful Paint 首次有效繪制時間
  • Speed Index 速度指數
  • First CPU Idle 首次 CPU 閑置時間
  • Time to Interactive 可交互前的耗時
  • Estimated Input Latency 最長的潛在FID

1.3.4 關于如何加快網頁加載速度的優化建議

1.3.5 關于Web開發最佳實踐的詳細診斷建議。

1.3.6 已通過的符合最佳實踐的審查項

1.4 實際案例

以攜程機票H5航班動態首頁的某線上版本為例,直觀的查看分析報告:
m.ctrip.com/webapp/flig…

1.5 使用方法

PSI API是Google RESTful APIs之一, 僅需一次 HTTP 請求 ,應答返回一個 JSON Ojbect。使用極其簡便。

HTTP Request

GET www.googleapis.com/pagespeedon…

必選參數1個:

  • url: 目標分析網頁的鏈接

可選參數6個:

  • category:accessibility,best-practices,performance,pwa,seo。默認是performance。
  • locale:返回結果文本的本地化語言版本。目前支持40種。默認英語en。
  • strategy:desktop 針對桌面瀏覽器進行優化分析,mobile 針對移動設備瀏覽器進行優化分析。
  • utm_campaign:廣告系列名稱
  • utm_source:廣告系列來源
  • fields: 定制 Response 內容字段。

HTTP Response

返回一個 JSON Object ,字段內容較多,此處省略,詳見官網文檔。

最簡單命令行調用

curl www.googleapis.com/pagespeedon…

2. Google Cloude Platform (GCP)

2.1 系統流程圖

2.2 Cloud Scheduler

Cloud Scheduler 是 GCP 的一項全托管式企業級 cron 作業調度服務。支持 App Engine、Cloud Pub/Sub 和任意 HTTP 端點,允許作業觸發 Compute Engine、Google Kubernetes Engine 和本地資源。
使用 Google Cloud Console 創建Job。目標有3種:HTTP,Pub/Sub,App Engine HTTP。這里選擇 Pub/Sub 。設置每天22:00自動觸發。

創建成功后查看部署狀態,部署成功后可以直接“立即運行”,查看日志,確認運行正常。

2.3 Cloud Pub/Sub

Cloud Pub/Sub 是 GCP 的一項簡單、可靠、可伸縮,可以用作數據流分析和事件驅動型計算系統的基礎。
這里創建兩個主題,psi-job 用于 Cloude Scheduler Job 的事件數據中轉,psi-single 用于 Cloud Functions 的并發 HTTP 請求的事件數據中轉。

2.4 Cloud Functions

實現并發大量網頁的 PageSpeed Insights 檢查,有多種方式??梢允褂?Google App engine, Google Compute Engine。鑒于 PSI API 是上下文無關的簡單 HTTP RESTful API,Cloud Functions Serverless 是最佳最簡實現。
Cloud Functions 是 GCP 的一項事件驅動型無服務器計算平臺。通過構建多個分別專注于做好一件事的小型獨立功能單元,再將這些功能單元組合成一個系統,實現快速開發和部署。支持在單個函數(而不是整個應用、容器或虛擬機)級構建和部署服務。

2.4.1 編寫 Function

目前支持以下幾種方案:

語言JavaScript
運行時Node.js 6(已棄用)、8、10(測試版)
HTTP 框架Express
HTTP 函數Express Request & Response Context
后臺函數(data, context, callback)
依賴項管理npm/yarn + package.json
語言Python
運行時3.7.1
HTTP 框架Flask
HTTP 函數入參:Flask Request Object。返回值:符合 Flask.make_response() 的任意對象。
后臺函數(data, context)
依賴項管理pip + requirements.txt
語言Go
運行時Go 1.11
HTTP 框架http.HandlerFunc 標準接口
HTTP 函數request: *http.Request. response: http.ResponseWriter.
后臺函數(ctx, Event)
依賴項管理go.mod/vendor

2.4.2 部署 Function

目前支持以下幾種方式:

  • 從本地機器部署。使用 gcloud 命令行工具。
  • 通過源代碼控制系統部署。使用 Google Cloud Source Repositories ,通過 OAuth 關聯源代碼倉庫(如 GitHub 或 Bitbucket)。
  • 通過 GCP Console 部署。
    • 網頁內嵌編輯器.直接在線編寫函數代碼。
    • 上傳本地ZIP文件。文件夾目錄結構與上述依賴性管理的源碼工程結構一致。
    • 導入 Cloud Storage 中的 ZIP 文件。同上。
    • 引用 Google Cloud Source Repositories的源代碼工程。
  • 通過CI/CD部署。使用 Cloud Build 搭建持續集成和部署系統。

2.4.3 監控 Function

Google Stackdriver 提供了服務監控工具,包括 Debugger,Monitoring,Trace,Logging, Error Reporting,Profiler。

3. PSI Functions 實現

創建好一個 Scheduler Job 和兩個 Pub/Sub 主題后,接下來實現兩個對應的 Functions 。

3.1 psi-single function

psi-single() 負責針對具體單一 URL ,調用 PSI API 獲取 JSON 結果的功能。
Google APIs 支持多種調用方式。

3.1.1 使用 google api client 。
通過 Discovery API ,獲得已經封裝好的 Service ,再調用具體接口。

from googleapiclient.discovery import builddef run(url):pagespeedonline = build(serviceName = 'pagespeedonline',version = 'v5',developerKey = API_KEY)response = pagespeedonline.pagespeedapi().runpagespeed(url = url).execute()print(response)return 'OK' 復制代碼

3.1.2 針對簡單接口,直接調用 HTTP RESTful API 。

import requests GAPI_PSI = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed"def run(url):try:payload = {"url": url,"key": API_KEY}with requests.Session() as session:response = session.get(url=GAPI_PSI, params=payload)print(response.status_code)print(response.json())except requests.RequestException as _e:print(_e)return 'OK' 復制代碼

3.1.3 實現 Pub/Sub 主題的訂閱
訂閱消息 event 的格式詳見官網文檔,其中 data 屬性是一段 base64 編碼的 ByteArray ,承載了實際的數據內容。

import base64def run_pubsub(event, context):pubsub_message = base64.urlsafe_b64decode(event['data']).decode('utf-8')return run(pubsub_message) 復制代碼

3.2 psi-job function

psi-job() 由 Scheduler Job 觸發,將所有需審查的 URL 以 Pub/Sub 事件形式,并行分發給 psi-single() 。

from google.cloud import pubsub_v1def run(event, context):publisher = pubsub_v1.PublisherClient()topic = publisher.topic_path(PROJECT_ID, TOPIC_NAME)for url in URL_DICT:data = url.encode('utf-8')publisher.publish(topic, data)return 'OK' 復制代碼

3.3 環境變量和依賴項

為了避免安全敏感信息泄漏,可以將關鍵信息寫入 Functions 環境變量和本地環境變量(本地開發調試使用)。
上述代碼中 API_KEY, PROJECT_ID 等數據通過 os.getenv() 獲取。
Cloude Functions 已內置常用依賴庫,詳見官網文檔。如需增加依賴項,配置各語言對應的工程文件。上述代碼引用了兩個依賴庫。

# requirements.txt # Function dependencies requests==2.21.0 google-cloud-pubsub==0.40.0 復制代碼

4. Storage

上述代碼中的 print() 會寫入 StackDriver 日志庫,供后續過濾分析。鑒于每一個 URL 的審查結果是一個 JSON Object 字符串,可以進一步寫入 BigTable , 使用 BigQuery 進行查詢分析,再進一步導入 Google Data Studio , 進行可視化報表展示。
這里使用 Cloud Storage 存儲 JSON 字符串為單一文件。

from urllib import parse from google.cloud import storage from google.cloud.storage import Blobdef save(url, report):'''Save to https://console.cloud.google.com/storage/browser/[bucket-id]/'''client = storage.Client()bucket = client.get_bucket("psi-report")blob = Blob(f"${parse.quote_plus(url)}.json", bucket)blob.upload_from_string(report, "application/json") 復制代碼

添加依賴項。

# requirements.txt # Function dependencies google-cloud-storage==1.15.0 復制代碼

5. 源代碼

github.com/9468305/pyt…

6. 文檔鏈接

  • PageSpeed Insights
    developers.google.com/speed/pages…
  • Google Lighthouse
    developers.google.com/web/tools/l…
  • Google Cloud Scheduler
    cloud.google.com/scheduler/
  • Google Cloud Pub/Sub
    cloud.google.com/pubsub/
  • Google Cloud Functions
    cloud.google.com/functions/
  • Google Cloud Storage
    cloud.google.com/storage/
  • Google Cloud Build
    cloud.google.com/cloud-build…
  • Google Stackdriver
    cloud.google.com/stackdriver…
  • 轉載于:https://juejin.im/post/5cdfd36a51882525a9439ff4

    總結

    以上是生活随笔為你收集整理的前端DevOps之PageSpeed Insights的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲黄色在线视频 | 久久免费精品国产 | 91大神视频在线播放 | 成人无码视频 | 色爱区综合 | 人妻一区二区视频 | 日日日干干干 | 国产 第1190页 | 性做久久久久久免费观看欧美 | 久久草网站 | 爱乃なみ加勒比在线播放 | 午夜91视频 | www.四虎在线观看 | 香港黄色网址 | 一级欧美黄色片 | 少妇被黑人到高潮喷出白浆 | eeuss鲁片一区二区三区在线观看 | 欧美一区二区三区啪啪 | 丁香婷婷成人 | 成人短视频在线免费观看 | av免费在线播放 | 黄色一级片 | 国产成人精品a视频 | 久久夜夜操妹子 | 色哟哟一区二区 | 操操操爽爽爽 | 国产一区视频免费观看 | 日韩精品免费在线观看 | 日本一级二级视频 | 男男gay动漫 | 91精品在线观看视频 | 国产激情免费视频 | 丰满人妻一区二区三区53 | 欧美视频免费在线观看 | 久久aaaa片一区二区 | 日本中文字幕视频在线 | 天堂在线 | 色欲国产精品一区二区 | 91人人看 | 国产精品性色 | 午夜精品久久久久久久久久久久久 | 香蕉视频污视频 | 欧美精品一区二区三区久久久 | 国产在线资源 | av免费网页 | 亚洲作爱视频 | 国产农村妇女精品 | 免费一二三区 | 国产欧美激情在线观看 | 免费中文字幕日韩欧美 | 日日干夜夜骑 | 中文字幕人妻一区二区三区视频 | 丰满大乳少妇在线观看网站 | 久久av综合网 | 国产精品三区四区 | 原创真实夫妻啪啪av | 国产高潮国产高潮久久久 | 自拍超碰 | 亚洲成人福利 | 国产剧情在线一区 | 亚洲人成网站999久久久综合 | 丝袜一区二区三区四区 | 久久91久久 | 8x8ⅹ国产精品一区二区 | 亚洲av无码一区二区二三区软件 | 91成人在线观看高潮 | 亚洲av电影一区二区 | 欧美 日韩 高清 | 国产aⅴ一区二区三区 | 国产精品蜜臀av | a级在线观看网站 | 日韩中文在线观看 | 紧身裙女教师三上悠亚红杏 | 日本三级精品 | 男人和女人在床的app | 强开乳罩摸双乳吃奶羞羞www | 亚洲av成人无码一区二区三区在线观看 | 中文字幕在线1 | 国产女大学生av | 91成人入口 | 国产精品白丝喷水在线观看 | 久久免费视频播放 | 国产精品二区一区二区aⅴ污介绍 | 在线黄色大片 | 波多野结衣一区在线 | 国产精品一区二区在线播放 | 黑人极品videos精品欧美裸 | 老女人性视频 | 亚洲风情亚aⅴ在线发布 | 国产又粗又猛又爽又黄的视频一 | 国产精品第七页 | 99热在线免费观看 | 一卡二卡三卡在线观看 | 日本高清视频网站 | 午夜成年人视频 | 99综合 | 污污网站在线 | 国产毛片毛片 | 日日噜噜噜噜久久久精品毛片 |