あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

puppetteer のキャッシュ

puppetteer を使って html を PDF に変換する node.js アプリケーションを作っている過程でキャッシュに悩んだのでメモ

やったこと

クライアントから送られてきた html 文字列を以下のように PDF 化するコードを書いていました。

しかし、ポストするhtmlの一部が変わっても出来上がるPDFに変化がありません。
クライアント側や node の express 等を疑っていましたが、いずれもキャッシュの対応などを入れても効果がありませんでした。
そこで puppetteer で何かキャッシュされているのではと疑い、ググったところ以下がヒットしたので試したら当たりでした。
How can I disable cache in puppeteer?

setCacheEnabled フラグを設定して reload すればいいようです。 setCacheEnabled フラグを page.goto() 直前にセットしても特に意味がなく、リロードする必要がありました。

完成系

おまけ

ページ生成時に page.setContent() を使用していない理由としては、 waitUntil が指定できないためです。 ワークアラウンドとして date:text/html, に html 文字列を結合して page.goto() に渡して waitUntil するようにしました。