简介
use Mojo::Asset::Memory;
my $mem = Mojo::Asset::Memory->new;
$mem->add_chunk('foo bar baz');
say $mem->slurp;
Mojo::Asset::Memory - 用于HTTP内容的内存存储
事件
Mojo::Asset::Memory继承了Mojo::Asset中的所有事件,并实现了upgrade事件。
$mem->on(upgrade => sub {
my ($mem, $file) = @_;
...
});
当对象升级为Mojo::Asset::File对象时触发。
$mem->on(upgrade => sub {
my ($mem, $file) = @_;
$file->tmpdir('/tmp');
});
属性
Mojo::Asset::Memory继承了Mojo::Asset中的所有属性,并实现了以下属性。
auto_upgrade
my $bool = $mem->auto_upgrade;
$mem = $mem->auto_upgrade($bool);
尝试检测内容大小是否超过了max_memory_size属性的限制,并自动升级到Mojo::Asset::File对象。
max_memory_size
my $size = $mem->max_memory_size;
$mem = $mem->max_memory_size(1024);
在自动升级到Mojo::Asset::File对象之前,允许的Mojo::Asset::Memory对象的最大尺寸限制(以字节为单位)。默认为MOJO_MAX_MEMORY_SIZE环境变量的值或262144(256KiB)。
mtime
my $mtime = $mem->mtime;
$mem = $mem->mtime(1408567500);
“资源”的最后一次修改时间,默认为系统变量 $^T
的值。
方法
Mojo::Asset::Memory继承了Mojo::Asset中的所有方法,并实现了以下方法。
add_ckunk
$mem = $mem->add_chunk('foo bar baz');
my $file = $mem->add_chunk('abc' x 262144);
向当前对象中添加数据块。
contains
my $position = $mem->contains('bar');
检查对象中是否包含特定的字符串。如果包含,则返回第一次发现字符串的位置,如果不包含则返回-1。
get_chunk
my $bytes = $mem->get_chunk($offset);
my $bytes = $mem->get_chunk($offset, $max);
从特定位置获取数据块(单位为字节),默认获取的最大数据块为131072(128KiB)。
move_to
$mem = $mem->move_to('/home/sri/foo.txt');
将当前对象中的数据存储到指定的文件中。并禁用cleanup。
返回的对象指向移动到的目标文件。
size
my $size = $mem->size;
文件的尺寸(单位是字节)。
slurp
my $bytes = mem->slurp;
一次性从文件中读出所有数据。