我正在尝试加速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屏幕截图中看到它再次请求课程页面(时间12.79)。
为什么会这样?我在一个未加密的Moodle上测试它,它显示了相同的不需要的行为。
答案 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插入了预取标记。