使用Go語言建立靜態檔案伺服器問題

2022-09-24 11:06:11 字數 1442 閱讀 4371

上篇關於go模板庫應用 的文章最後我們留下乙個問題,頁面模板是通過 cdn 引用的 bootstrap 的 css , js 檔案。到目前位置我們的伺服器還無法伺服客戶端的靜態檔案請求把伺服器磁碟上的檔案響應給客戶端。使用和配置過 nginx 伺服器的一定知道 nginx 天然支援靜態資源的訪問,那麼我們是不是也要借助 nginx 才能實現處理靜態檔案請求呢?其實不是,在最開始的文章我們說過「go語言不需要依賴任何第三方元件就能構建並啟動乙個高併發的 http 伺服器。」,這篇文章就讓我們了解一下如何用 go 語言的 net/http 庫實現處理靜態資源請求的問題。

我們先用乙個簡單的例子學習一下使用 net/http 如何建立乙個靜態資源伺服器,然後再應用到我們的 http_demo 專案中。

建立靜態資源伺服器

我們新建乙個 main.go 存放建立靜態資源伺服器和監聽請求的**,同時在相同目錄下建立 assets/css 和 assets/js 目錄用於存放上篇文章頁面模板使用到的靜態檔案。

main.go

assets/

└── css

└── bootstrap.min.css

└── js

└── bootstrap.min.js

main.go 中的**如下:

執行程式,然後用 curl 請求一下 css 檔案,看看有沒有奏效。

結合 gorillia/mux 使用檔案伺服器

上面的例子中檔案伺服器的處理程式是註冊到 net/http 庫提供的標準的 servemux (服務復用器)中的,我們 http_demo 專案為了支援程式設計客棧複雜的路由註冊使用的是 gorillia/mux 庫提供的服務復用器。兩者的工作方式不太一樣,所以把檔案伺服器應用到我們專案裡還需要做些調整才能起作用。

首先我們先把 assets 目錄整個拷貝到專案的根目錄。

func registerroutes(r *mux.router)

註冊好檔案伺服器後,我們把之前頁面模板引用的 cdn 上的 js 和 css 檔案換成自己伺服器上的檔案鏈結。

...... }

} 然後重啟伺服器,訪問之前的頁面 http:loca程式設計客棧lhost:/view/index  ,驗證一下我們的伺服器現在是否能伺服靜態檔案的請求了。

頁面樣式正常,現在只要在伺服器這個 assets 目錄下的檔案,我們都可以通過 http://localhost:8000/static/* 路徑的 url 訪問到。

總結

AnyWhere 靜態檔案伺服器

2020 11 27 16 47 43 anywhere是一款隨啟隨用的靜態檔案伺服器,可以隨時隨地將你的當前目錄變成乙個靜態檔案伺服器的根目錄。npm install anywhere g anywhere or with port anywhere p 8000 or start it but ...

nodejs入門 靜態檔案伺服器

本文展示是基於node.js的靜態檔案伺服器,參考自這裡,主要是練習node http 檔案模組的使用,另外,對理解http協議也很有幫助 除了實現了基本的路由控制,還實現了mime型別 304快取 gzip壓縮 目錄讀取 首先是配置檔案,setting.js var setting compres...

檔案伺服器

實現對檔案增刪改查,若是伺服器需要考慮的壓縮 檔案你儲存在電腦裡面也可以,儲存在電腦裡面給乙個路徑就可以了,為什麼要用檔案伺服器 對檔案的操作有記錄 比如增刪改查,可以花式查詢並對結果做操作,之前需要用比較複雜的正則才可以 做到,比如按照日期查詢,尤其是數量高到幾萬的時候,window自帶的檔案管理...