栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

可以缓存JSON以提高性能/加载时间吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

可以缓存JSON以提高性能/加载时间吗?

不幸的是,我不了解PHP中的标准化全局缓存机制。该文章说,被包含在PHP核心的5.5版本开始优化升级,第三方加速器。不知道您使用的是哪个版本,但是您可以尝试使用。

另一方面,您是否考虑过 安德鲁
指出的文件存储?

$_SESSION
在这种情况下,我认为它可以为您提供真正的帮助。让我给您一个示例,该示例将与您现有的JSON数据一起使用:

服务器端

将JSON数据存储在

.json
PHP服务器上的文件中:

{    "data": "some data",    "data2": "more data",    "data3": [        ...     ],     etc.}

注意: 请确保正确格式化JSON数据。请记住,所有字符串都必须用 引号引起来

"

在PHP中,使用if语句确定适当的操作:

error_reporting(E_ALL);ini_set("display_errors", "On");session_start();if(isset($_SESSION['dataCache'])) {    echo json_enpre($_SESSION['dataCache']);} else {    $file = 'data.json';    if (!is_file($file) || !is_readable($file)) {        die("File not accessible.");    }    $contents = file_get_contents($file);    $_SESSION['dataCache'] = json_depre($contents, true);    echo $contents;}

因此,让我们进一步研究上面的编码。因此,这就是我们正在做的事情:

  1. 打开错误报告并开始会话支持。
  2. 检查我们是否已经读取了该用户的文件。
  3. 如果是这样,请从存储中提取该值,然后将其回显并退出。如果没有,请继续下面。
  4. 保存文件名并进行一些错误检查,以确保PHP可以找到,打开和读取文件的内容。
  5. 读取文件内容。
  6. 将已解码的json(由于传递给json_depre的参数true而不是数组)保存到$ _SESSION变量中。
  7. 将内容回显到屏幕上。

这将节省您解析JSON数据和/或在服务器上手动构建JSON数据的时间和精力。它将为用户缓存,

session
以便他们可以使用它。

客户端

我假设您是

ajax
用来获取信息的?如果不是正确的话,但我假设这就是您的某些Javascript发挥作用的地方。如果是这样,您可以考虑一下:

sessionStorage
从服务器返回的数据存储在用户的浏览器中:

$.ajax({    ...    success: function (res) {        localStorage.setItem("dataCache", JSON.stringify(res));    },    ...});

或者,如果您使用承诺对象:

$.ajax({    ...}).done(function (res) {    localStorage.setItem("dataCache", JSON.stringify(res));});

当您需要阅读它时,可以做一个简单的测试:

var data;// This returns null if the item is not in local storage.// Since Javascript is truthy falsy, it will be evaluated as false.if(localStorage.getItem("dataCache")) {    data = JSON.parse(localStorage.getItem("dataCache"));} else {    // Make ajax call, fetch object and store in localStorage in the success or done callbacks as described above}

笔记:

localStorage
是HTML5的一项新功能,因此尚不完全支持所有浏览器。但是,大多数主要的工具都可以,甚至可以追溯到IE8(我认为)。但是,对于每个站点需要容纳多少浏览器没有标准的大小限制。

重要的是要考虑到这一点。我可以保证您可能无法将整个30,000行字符串存储在localStorage中。但是,您可以以此为起点。结合服务器端解决方案,您应该会看到性能提高。

希望这可以帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号