我们运行一个非常漂亮的Centos 7 LAMP服务器(Apache 2.4,mod_pagespeed PHP 5.6,MariaDB 5.5),最近开始在一些页面的背景上按照代码embeddedhtml5video:
<video class="banner-video" loop autoplay poster="img/poster.jpg"> <source src="videos/intro.mp4" type="video/mp4"> </video>
video按预期工作,并按预期自动循环,大多数客户端加载video一次,并在第一次运行后从caching中重新加载video,但我们有一些客户端(我现在计数3),保持下载每次后第一次运行,这吹我们的带宽配额相当快(有时相同的IP地址下载35GB的价值相同的7MBvideo文件)。
我敢肯定,这种行为是不是恶意的(在这种情况下,至less,我愿意相信这是在他们的代理服务器或一些这样的一些错误configuration),所以我正在寻找方法来限制一个IP使用的带宽地址,还是为了更好地通知客户端浏览器cachingvideo文件,我们已经尝试在apache虚拟主机中使用,并通过.htaccess这个configuration,似乎没有什么区别。
<FilesMatch "\.(mp4)"> Header set Cache-Control "max-age=604800, must-revalidate" </FilesMatch>
我已经testing过将video文件移动到另一个configuration不同的服务器(更加香草的Centos 6.6 LAMP),以testing我们的部分是不是一些错误的configuration
所以我的问题是有一个简单的方法来阻止使用Apacheconfiguration(暂时由24小时或一周),只有加载一个文件通过某些IP地址后说10载入,同时保持加载其余的网站的能力?
还是有更好的方法来通知客户端遵循caching规则?
我可能可以编写一个PHP脚本来计算文件加载的时间,并用一个403进行响应,以防被相同的IP下载了超过X次,但我不认为这个解决scheme是最优的。
由apache日志我们的客户端运行Windows 10 x64与谷歌浏览器48(也许这是一个知道的错误)
这个问题只是一个小小的后续答案,所以不会永远得不到解决,实际上也不能解决问题,但至less降低了我们不得不付出的代价。
我能够用一个configuration错误的squid服务器充当代理来复制这个问题。
在这种情况下,我所做的就是将video和其他video托pipe在另一台具有更高延迟但带宽非常便宜的服务器上。
整体的客户体验并没有太大的变化,因为我们只在廉价的服务器上托pipevideo文件,所以我们没有为每个文件支付高延迟的价格,只是为了video请求。