我有兩臺服務器(都可公開訪問)。第一個是圖像存儲服務器。第二個生成指向圖像存儲服務器上的圖像的鏈接(用node.js編寫的小腳本)。反向代理與重定向vs獲取url
我有一個前端網頁,需要從圖像存儲服務器加載照片。爲了這樣做,它需要聯繫「鏈接生成」服務器才能獲得鏈接。
有3種方式我想這樣做的:在一個data-src
標籤
存儲圖像ID數據爲
<img>
的一部分,而不是src
標記,以便瀏覽器不嘗試加載它作爲一個圖像。然後讓一些javascript函數使用圖像ID來ping鏈接生成服務器,檢索實際圖像鏈接,然後將其放置在src
標記中。使鏈接生成服務器重定向到適當的圖像鏈接,而不是將鏈接作爲文本返回,以便帶有圖像ID的圖像生成服務器的鏈接可以放置在
src
標記中,並且瀏覽器將通過重定向。 (我假設圖像可以通過重定向來解析?)使鏈接生成服務器成爲反向代理,它將自動加載生成的圖像,然後將圖像傳回,而不是將鏈接作爲文本返回。同樣,帶圖像ID的圖像生成服務器的鏈接將被放置在
src
標記中,並且不需要特殊的JavaScript來解析圖像。
我的問題是:是在圖像的加載速度和「緩存能力」方面的這些比其他更理想的任何一個?到目前爲止,我發現重定向方法更爲理想,因爲它很乾淨,並且不需要任何特殊的JavaScript。但是使用這種方法(如果它甚至可行),最終的圖像將無法緩存在瀏覽器中,以便隨後重新加載頁面,因爲瀏覽器將始終解析重定向以實際獲得最終圖像鏈接?
非常感謝!
有趣的是 - 圖像存儲服務是用python編寫的,鏈接生成器服務在node.js中。我想我會想讓他們分開。爲什麼在使用反向代理而不是重定向時會有性能優勢?在一天結束時,兩種HTTP請求正在進行。客戶端和鏈接生成器服務器(反向代理)之一,或客戶端(重定向)兩者之一。 – abagshaw
你是對的。我指的是將兩個圖像應用程序合併到一個應用程序中,而不是使用反向代理。我明白你現在想要讓他們分開。無論如何,要考慮性能的一點是,瀏覽器服務器的HTTP請求通常比服務器服務器的HTTP請求要慢。原因是瀏覽器的網絡連接速度通常較慢,而服務器的連接速度通常更快,尤其是當它們託管在同一個數據中心時。 –