我们的 PHP 系统生成如下网页:
1. [Init]
2. [Do some DB-queries and calculations, might take some seconds, might end up in sending a 301 or 404]
3. [Output results]
现在我想通过预加载 css、字体和 js 文件来加快页面速度。如果我可以像这样发送标头,那就太理想了:
1. [Init]
header("Link: </style.css>; rel=preload; as=style", false);
2. [Do some DB-queries and calculations, might take some seconds, might end up in sending a 301 or 404]
3. [Output results]
但是只有在步骤 3 中开始输出时才会发送预加载标头 - 因此速度没有太大提升。所以我尝试了:
1. [Init]
header("Link: </style.css>; rel=preload; as=style", false);
flush();
2. [Do some DB-queries and calculations, might take some seconds, might end up in sending a 301 or 404]
3. [Output results]
哇,这真的加快了速度!但是好吧,在步骤 2 中发送 301 或 404 标头最终会出现在消息中:
警告:无法修改标头信息 - 标头已由...发送
所以我需要把它放在那里:
1. [Init]
2. [Do some DB-queries and calculations, might take some seconds, might end up in sending a 301 or 404]
header("Link: </style.css>; rel=preload; as=style", false);
3. [Output results]
这在速度上并没有带来很大的优势,因为大耗时的事情都在第2步完成了。
问:由于标头是逐行从网络服务器传输到浏览器的,我想知道是否有办法将预加载标头发送到浏览器,并在几秒钟后发送 301 标头,例如:
1. [Init]
header("Link: </style.css>; rel=preload; as=style", false);
send_part_of_headers();
2. [Do some DB-queries and calculations, might take some seconds, might end up in sending a 301 or 404]
3. [Output results]
慕桂英4014372
慕田峪9158850