0

我正在尝试加速 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 表现出一种奇怪的行为。它使用预取正确下载网页,但是当我请求课程页面时,它会再次下载:

http请求的Wireshark转储

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

为什么会这样?我在未加密的 Moodle 上对其进行了测试,它显示了相同的不良行为。

4

1 回答 1

1

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

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

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

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

于 2013-11-15T11:13:22.653 回答