在一些网站下载文件时,点击下载链接后经常会看到”Your download will start shortly...“,页面显示一个下载倒计时,倒计时结束自动开始下载。为什么不是点击下载链接后直接下载,而转到这样一个倒计时页面呢?

downloadstartshortly.png

下载倒计时页面有什么作用

添加这样一个倒计时页面,主要是从这几方面考虑:

  • 有助于SEO,页面可以显示相关推荐

  • 有助于SEO,更久的页面停留时间及更低的跳出率

  • 新增的页面可以展示广告

  • 添加相关类型下载,提升浏览量

  • CDN缓冲

  • 下载前给用户一个停止的机会,提升用户体验

  • 防盗链,阻止自动下载

  • 避免压缩文件包含违禁字符

最主要的作用就是前四条,页面添加了相关推荐,既增加了内链,对SEO友好,又对用户展示了更多内容,增加推荐内容的曝光度。

同时,倒计时页面会增加页面停留时间,使用类似百度站长工具进行网页浏览量统计时,增加页面浏览量及降低跳出率,对SEO更友好。

倒计时下载,也可以给用户一个“后悔”的机会,多一种选择,增加用户体验,同时不愿下载的用户,也很可能不是目标用户,少一次下载量也没关系。

最后说说避免压缩文件包含违禁字符,即使打包的文件完全是正常文件,最终压缩文件也可能包含某些违禁字符(英文),同时下载页面未禁止搜索引擎蜘蛛访问时,蜘蛛就有可能采集到这些违禁词,进而搜索引擎可能因为这些违禁词根据当地法律法规对网站进行屏蔽。真有可能?是的,真实发生了,就是Bing这么操作了。所以针对这种情况,一是将下载链接对蜘蛛进行屏蔽,二是页面不显示真实下载链接,倒计时结束后由 js 进行跳转。

下载倒计时页面实现代码

倒计时页面实现非常简单,使用 js 进行一个倒计时,计时结束页面转到真实下载链接

var wait = 5;
var interval = setInterval(function(){
    var time = --wait;

    if(time <= 0) {
        var href = "/file/downloadNow/id/file.zip"
        window.location.href = href;
        clearInterval(interval);
    };
}, 1000);

或者直接 meta 刷新页面转到真实下载链接

<?php
// download.php
$url = 'http://yourdomain/actual/download?link=file.zip'; // build file URL, from your $_POST['file'] most likely
?>
<html>
    <head>
        <!-- 5 seconds -->
          <meta http-equiv="Refresh" content="5; url=<?php echo $url;?>" />
    </head>
    <body>
        Download will start shortly.. or <a href="<?php echo $url;?>">click here</a>
    </body>
</html>

另外,文件下载时最佳实践是通过文件 id 进行控制,通过 id 后台语言获取到真实路径,这样既方便文件下载之类的统计,也可避免文件下载链接被盗用,同时在下载倒计时页面使用也更方便。