php 不缓存json,PHP数组缓存JSON、serialize和var_export的比较

使用PHP进行开发的时候,有时候需要对数据进行缓存,包括文件缓存、数据库缓存和内存缓存等,以提数据高读取速度,下面对PHP数组文件缓存的三种方式JSON、serialize和var_export进行简单的比较。

第一种方式:JSON

JSON缓存变量的方式主要是使用json_encode和json_decode两个php函数。json_encode可以将变量变成文本格式,这样就可以存到文件里。

使用样例:// Store cache

file_put_contents($cachePath, json_encode($myDataArray));

// Retrieve cache

$myDataArray = json_decode(file_get_contents($cachePath));

优势:

数组缓存后依然可读编码后可以和其他系统进行数据交换,因为JSON格式是标准的,越来越多的系统采用JSON格式进行数据传输和交换

劣势:只对UFT-8的数据有效,其他编码可能不能很好工作只对stdClass类的实例有效

第二种方式:serialize序列化的方式主要使用serialize和unserialize这两个个函数,序列化的方式和JSON都是以文本方式存储。使用示例:// Store cache

file_put_contents($cachePath, serialize($myDataArray));

// Retrieve cache

$myDataArray = unserialize(file_get_contents($cachePath));

优势:允许非UTF-8的数据支持除了stdClass实例外的其他实例

劣势:编码后的文本是不可读的无法被其他语言的系统引用,无法进行数据交换

第三种方式:Var_export这种方式是用var_export函数将数组内容打印到一个文件里,使用include的方式来重新获取数组内容。因此生成的缓存文件是一个php文件。

使用示例:// Store cache

file_put_contents($cachePath, "<?php \nreturn " . var_export($myDataArray, true) . ";");

// Retrieve cache

$myDataArray = include($cachePath);

优势:对编码格式无要求,允许非UTF-8的编码缓存文件可读获取数组的时候直接使用语言特性,而非函数

劣势:不能缓存不带__set_state方法的对象var_export出来的数组里不能带有影响php语法解析的内容,触发语法错误,可能影响你的php应用

大家可以根据自己的应用,结合每种方式的优缺点选择合适的数组缓存方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值