Mojo::Asset::Memory

简介

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;

一次性从文件中读出所有数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,793评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,895评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,114评论 6 342
  • 学到了这么一句话:只有当你真正热爱生活,生活才会真正热爱你。 每个人的生命是真正一次性的,只有你是你自己最好的、终...
    Joannamin阅读 2,615评论 0 1
  • 本周真是捷报不断呀,昨天我们的MVP杨又双叒叕夺冠了!不仅打破了200自亚洲纪录,还实现了自由泳大满贯! 夺冠视频...
    扒了个热点阅读 1,391评论 0 0