在Firefox中链接预取重新下载页面

时间:2013-11-15 09:35:42

标签: http firefox prefetch

我正在尝试加速Moodle实例(LMS)。我确信用户可能会继续他们上次访问的课程,所以我正在尝试使用链接预取来提前下载课程页面:

<link href='https://moodleexample.io/course/view.php?id=3' rel='prefetch' />
<link href='https://moodleexample.io/course/view.php?id=3' rel='prerender' />

在Chrome中,它运作正常。但Firefox显示出一种奇怪的行为。它使用预取正确下载网页,但是当我请求课程页面时,它会再次下载:

Wireshark dump of http requests

您可以从Wireshark屏幕截图中看到它再次请求课程页面(时间12.79)。

为什么会这样?我在一个未加密的Moodle上测试它,它显示了相同的不需要的行为。

1 个答案:

答案 0 :(得分:1)

这是Moodle的“错误”。它们是动态页面,因此它会放置阻止缓存内容的缓存标头。

利用Nginx的强大功能,我在从Firefox获取X-moz: prefetch时重写了这些标题:

if ($http_x_moz ~ ^prefetch$) {
    more_set_headers 'Cache-Control: private, max-age=60'
    more_clear_headers 'Pragma';
}

php位置。我还使用服务器端浏览器检测有条件地为firefox插入了预取标记。