我讀到瀏覽器有時會阻止等待來自同一主機的多個圖像,並且我正在盡我所能來加快頁面加載時間。
要注意的是:我需要透過 HTTPS 提供檔案。
關於這是否可行的任何意見:
- 為 *.domain.com 設定通配符憑證。
- 每當我需要圖像時,根據檔案名稱的雜湊模5 產生一個數字,並將其附加到「img」子網域(例如img1.domain.com、img4.domain.com、img3.domain.com 等) 。哈希將使任何檔案名稱始終使用相同的子網域,因此瀏覽器應該能夠快取圖像
- 配置動態虛擬主機記錄以指向所有 img#。子域到 /var/www/img
我正在尋找有關此計劃的反饋。我的擔憂是:
- 當我的頁麵包含指向多個子網域的 https:// 連結時,我會收到警告嗎?
- 我所說的動態虛擬主機記錄是否可能?
- 考慮到這所需的處理量,它是否可能產生任何整體效益?我可能平均每頁有六張圖像,每次刷新頁面時只更改一半。
預先感謝您的回饋。
答案1
如果您有一個通配符 DNS 項目指向您的 Web 伺服器,並且它配置為在所有可能的主機上進行應答,並且您有一個通配符 SSL 證書,則您的方案是可行的。但我確實看到了一些問題:
- 將每個圖像放在不同的主機名稱上,您可以增加載入頁面所需的 DNS 查找次數。
- 透過將它們放在不同的主機名稱上,您可以消除瀏覽器為多個影像重複使用現有 TCP 連線的能力。建立 TCP 連接是“昂貴的”,現在必須為每個映像建立一個連接,而不是在映像位於同一主機名稱下時建立和重複使用少數幾個連接。
一般來說,服務圖像的一些良好實踐包括:
答案2
- 不,如果都是 SSL 和有效的證書,您將不會遇到麻煩。
- 是的,至少在 apache 中它就像設定一行一樣簡單
ServerAlias *.domain.com
- 確實不是目前的狀態。
更合適的解決方案:
使用輕量級伺服器(例如,lighttpd 位於不同的網域下,沒有載入任何重型模組(輕量級進程),每台伺服器僅使用一個具有適當設定的伺服器。或者更好的是,使用nginx 作為伺服器,因為這將:
- 不需要不同的網域/連接埠/憑證。
- nginx 提供靜態內容,並充當反向代理伺服器,用於向原始的、更重型的伺服器發出「動態」請求,該伺服器可以本地運行在可能是另一台伺服器的另一個連接埠/IP 上,您可以選擇
- 在 nginx 中設定適當的設定(如 keepalive、workers 等)
- 提供 HTTPS 服務沒有問題