バグを説明する
私のサイトには30万ページがあり、非常に古く、キャッシュページがないと読み込みが非常に遅くなります。 そのため、ページが完全にキャッシュされるようにロードされない場合があることに気付きました。 これは、キャッシュされたファイルのhtmlが壊れていることを意味します(ページの半分が欠落しています)。 タイムアウトやページの読み込みが非常に遅いため、ページが完全に読み込まれていないと思います。 そして、これが発生する可能性があり、そのようなページバージョンがキャッシュに移動する可能性があります。
私のサイトでの読み込み速度の問題は別として、問題は、バッファ内のページの整合性がチェックされないことです。
これがclass-cache.phpの関数maybe_process_bufferの一部です
public function maybe_process_buffer( $buffer ) {
if ( ! $this->tests->can_process_buffer( $buffer ) ) {
$this->log_last_test_error();
return $buffer;
}
$footprint = '';
$is_html = $this->is_html( $buffer );
if ( ! static::can_generate_caching_files() ) {
// Not allowed to generate cache files.
if ( $is_html ) {
$footprint = $this->get_rocket_footprint();
}
$this->log(
'Page not cached by filter.',
[
'filter' => 'do_rocket_generate_caching_files',
]
);
return $buffer . $footprint;
}
$cache_filepath = $this->get_cache_path();
$cache_dir_path = dirname( $cache_filepath );
// Create cache folders.
rocket_mkdir_p( $cache_dir_path );
if ( $is_html ) {
$footprint = $this->get_rocket_footprint( time() );
}
// Save the cache file.
rocket_put_content( $cache_filepath, $buffer . $footprint );
//... rest of code
}
$ is_htmlはhtmlの整合性を反映しますが、終了がない場合にキャッシュを停止するために使用されません
それはおもしろいです、私はそれが以前に出てきたものではないと思います。
</html>
タグがない場合にキャッシュを停止しないのには理由があります。これは、JSON形式のプラグインを使用してRESTAPI応答をキャッシュできるためです。
ただし、通常のページをキャッシュするときにHTMLコンテンツ全体がそこにあることを確認するための追加のチェックがまだある可能性があります。
@Tabrisrpわかりました、なぜそのようなチェックがなかったのですか、ありがとう。
次のアップデートの前にいくつかの解決策があるのはいいことです、さもないとバグを取り戻します:)
@arunbasillalこれは適切に修正されていません。以下をお読みください:)
最近実装された修正は、欠落している問題を報告します
@JeppeKrフィードバックをありがとう。 ご覧のとおり、この問題はまだ解決されていません。 私はこれを調べて、次のメジャーバージョンのためにこれを検討します:)
最も参考になるコメント
@arunbasillalこれは適切に修正されていません。以下をお読みください:)
最近実装された修正は、欠落している問題を報告します