0

我正在使用 nginx 运行多站点 wordpress,并在 safari 上进行测试(chrome 很好)。

很重要的一点是,图片是管理员上传的。

我发现有时有些图像没有立即出现,我之前只是网络问题,但我今天找到了规律。

规则是:

  1. 进入页面,如图所示。
  2. 刷新页面(Command + R),图像消失了。
  3. 再次刷新,如图所示。
  4. 再次,它消失了。
  5. 循环......

注意:消失是指不是立即出现:加载页面大约 2 秒后,图像可以加载。

4

1 回答 1

0

当您刷新页面时,Safari 会向服务器发送带有 HTTP 标头HTTP_IF_NONE_MATCHHTTP_IF_MODIFIED_SINCE.

由于这是一个多站点,nginx 将请求重写到 ms-files.php 来处理它。ms-files.php 发现图像没有被修改,所以它的响应 304 没有内容。

Content-Length错误是,ms-files.php在决定响应 304 之前已经设置了标头,因此响应标头将是 304,没有内容和Content-Length > 0. 在那之后,野生动物园就下来了。

通过添加header( 'Content-Length: 0' );到 wp-includes/ms-files.php 第 79 行来修复错误。

 75 if ( ( $client_last_modified && $client_etag )
 76     ? ( ( $client_modified_timestamp >= $modified_timestamp) && ( $client_etag == $etag ) )
 77     : ( ( $client_modified_timestamp >= $modified_timestamp) || ( $client_etag == $etag ) )
 78     ) {
 79     header( 'Content-Length: 0' );
 80     status_header( 304 );
 81     exit;
 82 }
于 2013-05-10T11:32:50.443 回答