Apache-2.4

html5 影片標籤記憶體

  • April 5, 2020

我們執行一個漂亮的 Centos 7 LAMP 伺服器(Apache 2.4 和 mod_pagespeed PHP 5.6,MariaDB 5.5),最近開始按照程式碼在一些頁面的背景上嵌入 html5 影片:

<video class="banner-video" loop autoplay poster="img/poster.jpg">
   <source src="videos/intro.mp4" type="video/mp4">
</video>

影片按預期工作,並按預期自動循環,我們的大多數客戶端載入影片一次並在第一次執行後從記憶體中重新載入影片,但我們有一些客戶端(我現在數 3)保持重新- 在第一次執行後每次都下載,這會很快破壞我們的頻寬配額(有時相同的 IP 地址會下載 35gb 的相同 7mb 影片文件)。

我很確定這種行為不是惡意的(至少在這種情況下,我願意相信這是他們的代理伺服器上的一些錯誤配置或類似的),所以我正在尋找限制一個 ip 使用的頻寬的方法地址,或者為了更好地通知客戶端瀏覽器記憶體影片文件,我們已經嘗試在 apache 虛擬主機中使用並通過 .htaccess 這個配置,它似乎沒有什麼區別。

<FilesMatch "\.(mp4)">
   Header set Cache-Control "max-age=604800, must-revalidate"
</FilesMatch>

我已經測試過將影片文件移動到具有不同配置的另一台伺服器(更普通的 Centos 6.6 LAMP),以測試它是否不是我們的一些錯誤配置

所以我的問題是有沒有一種簡單的方法來阻止使用 apache 配置(可能暫時通過 24 小時或一周)僅在 10 次載入後通過某些 IP 地址載入文件,同時保持載入站點其餘部分的能力?

還是有更好的方法來通知客戶端遵循記憶體規則?

我可能可以編寫一個 PHP 腳本來計算文件被載入的次數並以 403 響應,以防它被同一個 IP 下載超過 X 次,但我認為這個解決方案不是最佳的。

根據 apache 日誌,我們的客戶端正在執行帶有 google chrome 48 的 windows 10 x64(也許這是一個已知的錯誤)

只是對這個問題的一個小的後續回答,所以它不會永遠沒有答案,它實際上並沒有解決問題,但至少它降低了我們必須支付的賬單。

我能夠使用配置錯誤的 squid 伺服器作為代理來複製該問題。

在這種情況下,我所做的是將影片以及從那時起我們必須託管的其他影片託管在另一台具有更高延遲但頻寬非常便宜的伺服器上。

整體客戶端體驗沒有太大變化,因為我們只在廉價伺服器中託管影片文件,我們不會為每個文件支付高延遲價格,而只是為了對影片的請求。

引用自:https://serverfault.com/questions/760169