それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

MechanizeがHistoryを保存してメモリを食いつぶすのを防ぐ

Mechanizeって便利で、すごく使うのだけれど、履歴がさー履歴がたまるとメモリを食いつぶしました。


Mechanizeでは簡単に防げるようです

WWW::Mechanize#max_history で履歴の最大数を指定できます。履歴機能を活用しないという場合の推奨値は 1 です。
agent = WWW::Mechanize.new
agent.max_history = 1
agent.get(uri)

max_history= に 0 を指定すると履歴保持数が 0になりますが、メモリにファイル全体を取り込むこと自体は全く抑制できません。一度全部メモリに取り込んでから履歴が max_history 個になるように削除するという処理の流れになっており、WWW::Mechanize::File#save メソッドなどを即使っても「オンザフライ」で処理されるというようなことはありません。

RubyのMechanizeのよくある質問 - きたももんががきたん。

とのことです。簡単ですね。Mechanizeカッコイイ。

History=極小 にした場合の注意点は


リファラと、Headerチェックが行なわれなくなること。

  • If-Modified-Since 用の時刻が取れないので 304 かどうかチェックできない
Mechanize::History - Ruby Mechanize wiki (ja) - livedoor Wiki(ウィキ)

0件設定は、デメリットが多いので、画像などを捌くときは、Mechanizeのhistory設定は1が適当のようですね。