成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

動態轉換圖片格式為Webp

系統 瀏覽器
由于webp是新推出不久的格式,對于一些比較舊的瀏覽器,它是不支持的。那么有沒有辦法讓支持此格式的瀏覽器加載webp圖片,讓不支持的瀏覽器加載正常圖片呢?

前言

webp是谷歌推出的一種圖像格式,它可以在保持同樣質量的情況下,體積比JPG少40%,可以很大程度的節省帶寬使用,提升網站的加載速度。

由于它是新推出不久的格式,對于一些比較舊的瀏覽器,它是不支持的。那么有沒有辦法讓支持此格式的瀏覽器加載webp圖片,讓不支持的瀏覽器加載正常圖片呢?

本文就跟大家分享一種解決方案,歡迎各位感興趣的開發者閱讀本文。

思路分析

我們想實現這個需求,首先得需要有一個能將普通的圖片格式轉換為webp格式的程序,經過一番尋找后,找到了一個名為webp_server_go的開源項目。

轉換程序我們有了,那么如何動態調用這個程序呢?我們的需求是根據客戶端的情況來決定是否要返回webp格式的圖片,那么我們就可以在nginx中通過反向代理來實現動態調用。

我們來梳理下思路:

  • nginx攔截客戶端請求,將請求反向代理到webp_server_go
  • webp_server_go收到請求后,讀取http_header中的瀏覽器信息,決定是否要返回webp格式的圖片
  • 最后,nginx將webp_server_go返回的內容發給瀏覽器

編譯轉換程序

webp_server_go的releases頁面提供了linux的安裝包,如果你的運行環境正好滿足條件,可以跳過此章節,直接下載即可。

這個程序采用go語言編寫,因此需要安裝go的開發環境,由于安裝過程較為簡單,本文不做講解。按照教程搭建好環境后,我們把項目clone到本地,目錄如下所示:

我們打開Makefile文件(推薦使用GoLand來打開),執行文件里面的default命令:

如果你的編輯器不支持點擊圖標來運行,那么你可以在終端進入項目的根目錄,按照順序執行如下所示的命令:

make clean
go build -o builds/webp-server-$(OS)-$(ARCH) .

執行成功后,你會在builds目錄下看到編譯出來的適用于你當前系統的應用程序(如果你的系統是macos,看到的結果會和我的一樣,如果是windows看到的則是一個exe文件)。

運行轉換程序

按照官網列舉的使用方法,我們在用戶的根目錄創建一個名為webp-server的文件夾,將準備好的轉換程序復制進去并在其目錄下創建一個名為config.json文件,寫入如下所示的內容:

  • HOST 啟動后的服務地址
  • PORT 服務端口號
  • QUALITY 轉換后的圖片質量
  • MAX_JOB_COUNT 最大并發轉換量
  • IMG_PATH 圖片存儲路徑(客戶端訪問圖片資源時的存儲目錄)
  • EXHAUST_PATH 轉換為webp后的圖片存儲路徑(客戶端請求資源時會優先從這里找,找不到才會觸發轉換程序,轉換完成后會存儲到此處)
  • ALLOWED_TYPES 需要處理的圖片格式
{
"HOST": "127.0.0.1",
"PORT": "8082",
"QUALITY": "80",
"MAX_JOB_COUNT": "10",
"IMG_PATH": "/Volumes/DataStorage/fileStorage",
"EXHAUST_PATH": "/Volumes/DataStorage/fileStorage/uploads/cache",
"ALLOWED_TYPES": ["jpg", "png", "jpeg", "bmp"]
}

最后,在終端執行如下所示的命令來啟動轉換程序:

./webpServer --config=config.json

看到如下所示的界面時,就代表此服務已經正常工作了。

注意:大多數情況下你應該是需要此程序靜默運行的,不希望看到這個運行框,那么你就需要用到nohup命令來執行程序了。

例如:

nohup ./webpServer --config=config.json > /Volumes/DataStorage/logs/webpServer-log.txt &

對此命令不熟悉的開發者,請移步Linux nohup 命令作進一步了解。

反向代理客戶端請求

做完上述配置后,我們就可以配置nginx來攔截客戶端的請求,將其反向代理至我們上一步搭建的好服務上,配置如下所示:

所有攜帶包含uploads的請求全部交給webpserver進行處理:

 # 反向代理uploads目錄下的圖片至webpserver進行格式轉換
location ~ ^/(uploads)/ {
proxy_pass http://127.0.0.1:8082;
proxy_set_header X-Real-IP $remote_addr;
proxy_hide_header X-Powered-By;
proxy_set_header HOST $http_host;
}

最后,我們訪問網站來看下是否成功,如下所示:

返回的圖片已經是webp格式了:

責任編輯:趙寧寧 來源: 神奇的程序員
相關推薦

2011-09-01 18:29:10

Ubuntu

2023-07-24 16:32:30

2023-08-29 08:19:19

PicGo插件開發

2023-11-22 08:21:25

Android開發場景

2017-05-03 13:37:22

互聯網

2024-01-11 08:03:52

程序圖片優化

2022-11-01 16:20:56

Java圖像文件圖像文件類型

2020-05-07 19:21:53

WebP圖片編輯工具開源

2015-11-04 11:17:10

移動開發圖片格式

2010-10-12 13:57:43

GoogleWebP

2019-08-21 13:30:25

Node.jsSVG前端

2024-03-15 09:27:35

函數數據懶加載FlowItem組件

2021-08-09 05:21:52

微軟 Office Buil應用

2025-04-09 01:50:00

Vite插件壓縮圖片webp

2018-10-07 22:59:24

Firefox 瀏覽器谷歌

2022-03-14 12:26:45

微信圖片開源

2016-10-13 13:43:04

WebPGoogleJPEG和PNG格式

2019-12-16 09:53:29

技術研發指標

2022-07-05 21:53:26

記錄圖片WebP

2020-11-16 15:00:53

谷歌應用開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线视频 | 粉嫩av久久一区二区三区 | 亚洲一区二区精品视频 | 亚洲欧美在线视频 | 韩日在线视频 | 免费观看a级毛片在线播放 黄网站免费入口 | 91视频免费 | 亚洲视频免费观看 | 狠狠操狠狠操 | 少妇无套高潮一二三区 | 久久国产精品网站 | 免费观看一级毛片 | 日韩av一区二区在线 | 国产精品黄色 | 成人美女免费网站视频 | 中文字幕在线欧美 | 午夜男人视频 | 99综合在线| 黄色一级片视频 | 国产精品免费在线 | 欧美成人免费在线 | 一级片在线观看 | 亚洲一区二区三区在线播放 | 一区久久 | 国产激情免费视频 | 日韩欧美三区 | 美女在线一区二区 | 免费看片在线播放 | 国产精品毛片无码 | 亚洲国产成人精品久久 | 国产亚洲一区在线 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 天天操天天射综合网 | 亚洲国产精品久久 | 91久久综合亚洲鲁鲁五月天 | 九色一区 | 91在线精品一区二区 | 成人免费看黄网站在线观看 | 免费日韩av网站 | 91人人视频在线观看 | 色男人天堂av |