簡(jiǎn)介
use Mojo::Asset::Memory;
my $mem = Mojo::Asset::Memory->new;
$mem->add_chunk('foo bar baz');
say $mem->slurp;
Mojo::Asset::Memory - 用于HTTP內(nèi)容的內(nèi)存存儲(chǔ)
事件
Mojo::Asset::Memory繼承了Mojo::Asset中的所有事件,并實(shí)現(xiàn)了upgrade事件巾遭。
$mem->on(upgrade => sub {
my ($mem, $file) = @_;
...
});
當(dāng)對(duì)象升級(jí)為Mojo::Asset::File對(duì)象時(shí)觸發(fā)蛉艾。
$mem->on(upgrade => sub {
my ($mem, $file) = @_;
$file->tmpdir('/tmp');
});
屬性
Mojo::Asset::Memory繼承了Mojo::Asset中的所有屬性丈钙,并實(shí)現(xiàn)了以下屬性陈惰。
auto_upgrade
my $bool = $mem->auto_upgrade;
$mem = $mem->auto_upgrade($bool);
嘗試檢測(cè)內(nèi)容大小是否超過(guò)了max_memory_size屬性的限制疏咐,并自動(dòng)升級(jí)到Mojo::Asset::File對(duì)象扬舒。
max_memory_size
my $size = $mem->max_memory_size;
$mem = $mem->max_memory_size(1024);
在自動(dòng)升級(jí)到Mojo::Asset::File對(duì)象之前阐肤,允許的Mojo::Asset::Memory對(duì)象的最大尺寸限制(以字節(jié)為單位)。默認(rèn)為MOJO_MAX_MEMORY_SIZE環(huán)境變量的值或262144(256KiB)讲坎。
mtime
my $mtime = $mem->mtime;
$mem = $mem->mtime(1408567500);
“資源”的最后一次修改時(shí)間孕惜,默認(rèn)為系統(tǒng)變量 $^T
的值。
方法
Mojo::Asset::Memory繼承了Mojo::Asset中的所有方法晨炕,并實(shí)現(xiàn)了以下方法衫画。
add_ckunk
$mem = $mem->add_chunk('foo bar baz');
my $file = $mem->add_chunk('abc' x 262144);
向當(dāng)前對(duì)象中添加數(shù)據(jù)塊。
contains
my $position = $mem->contains('bar');
檢查對(duì)象中是否包含特定的字符串瓮栗。如果包含削罩,則返回第一次發(fā)現(xiàn)字符串的位置,如果不包含則返回-1费奸。
get_chunk
my $bytes = $mem->get_chunk($offset);
my $bytes = $mem->get_chunk($offset, $max);
從特定位置獲取數(shù)據(jù)塊(單位為字節(jié))弥激,默認(rèn)獲取的最大數(shù)據(jù)塊為131072(128KiB)。
move_to
$mem = $mem->move_to('/home/sri/foo.txt');
將當(dāng)前對(duì)象中的數(shù)據(jù)存儲(chǔ)到指定的文件中愿阐。并禁用cleanup微服。
返回的對(duì)象指向移動(dòng)到的目標(biāo)文件。
size
my $size = $mem->size;
文件的尺寸(單位是字節(jié))换况。
slurp
my $bytes = mem->slurp;
一次性從文件中讀出所有數(shù)據(jù)。