使用通配符域來提供圖像而不阻塞 http

使用通配符域來提供圖像而不阻塞 http

我讀到瀏覽器有時會阻止等待來自同一主機的多個圖像,並且我正在盡我所能來加快頁面加載時間。

要注意的是:我需要透過 HTTPS 提供檔案。

關於這是否可行的任何意見:

  1. 為 *.domain.com 設定通配符憑證。
  2. 每當我需要圖像時,根據檔案名稱的雜湊模5 產生一個數字,並將其附加到「img」子網域(例如img1.domain.com、img4.domain.com、img3.domain.com 等) 。哈希將使任何檔案名稱始終使用相同的子網域,因此瀏覽器應該能夠快取圖像
  3. 配置動態虛擬主機記錄以指向所有 img#。子域到 /var/www/img

我正在尋找有關此計劃的反饋。我的擔憂是:

  1. 當我的頁麵包含指向多個子網域的 https:// 連結時,我會收到警告嗎?
  2. 我所說的動態虛擬主機記錄是否可能?
  3. 考慮到這所需的處理量,它是否可能產生任何整體效益?我可能平均每頁有六張圖像,每次刷新頁面時只更改一半。

預先感謝您的回饋。

答案1

如果您有一個通配符 DNS 項目指向您的 Web 伺服器,並且它配置為在所有可能的主機上進行應答,並且您有一個通配符 SSL 證書,則您的方案是可行的。但我確實看到了一些問題:

  1. 將每個圖像放在不同的主機名稱上,您可以增加載入頁面所需的 DNS 查找次數。
  2. 透過將它們放在不同的主機名稱上,您可以消除瀏覽器為多個影像重複使用現有 TCP 連線的能力。建立 TCP 連接是“昂貴的”,現在必須為每個映像建立一個連接,而不是在映像位於同一主機名稱下時建立和重複使用少數幾個連接。

一般來說,服務圖像的一些良好實踐包括:

  1. 從與主域不同的主機名稱載入映像,但將它們限制為一兩個其他主機名稱(出於上述原因)。
  2. 確保這些主機名稱上沒有使用 cookie(瀏覽器無需將 cookie 與請求一起傳送)。
  3. 確保為這些主機名稱上提供的內容啟用快取(但通常不適用於 SSL)。
  4. 組合圖片並儘可能使用 CSS 精靈。
  5. 還有很多其他人都過得很好有記錄的 別處

答案2

  1. 不,如果都是 SSL 和有效的證書,您將不會遇到麻煩。
  2. 是的,至少在 apache 中它就像設定一行一樣簡單ServerAlias *.domain.com
  3. 確實不是目前的狀態。

更合適的解決方案:

使用輕量級伺服器(例如,lighttpd 位於不同的網域下,沒有載入任何重型模組(輕量級進程),每台伺服器僅使用一個具有適當設定的伺服器。或者更好的是,使用nginx 作為伺服器,因為這將:

  1. 不需要不同的網域/連接埠/憑證。
  2. nginx 提供靜態內容,並充當反向代理伺服器,用於向原始的、更重型的伺服器發出「動態」請求,該伺服器可以本地運行在可能是另一台伺服器的另一個連接埠/IP 上,您可以選擇
  3. 在 nginx 中設定適當的設定(如 keepalive、workers 等)
  4. 提供 HTTPS 服務沒有問題

相關內容