برنامه نویسی

صرفه جویی در اینترنت مشتریان خود، ارائه فایل های مجموعه داده بزرگ JSON از طریق شبکه مانند یک حرفه ای

همیشه برای سرور فایل های بزرگ JSON از طریق شبکه (مانند فایل های 100+ مگابایتی) نیاز بوده است.

راه کارآمدی که می‌توانیم با این مشکل مقابله کنیم، تبدیل فایل‌های JSON به باینری و ارسال آن به مشتری است.

Firs اجازه می دهد فقط JSON را تبدیل به .gz فایل کنید و تفاوت اندازه را ببینید.

مقایسه:
اندازه واقعی فایل – 107MB، فشرده شده است .gz حجم فایل – 3.2MB.

دستور لینوکس برای تبدیل JSON به .gz

gzip filename.json این فایل شما را به .gz فایل.

اکنون می توانید به راحتی این فایل را از طریق شبکه سرور کنید و کلاینت باید فایل را از آن رمزگشایی کند .gz فایل به JSON.

یک کتابخانه مفید برای تبدیل داده های باینری به رشته (https://www.npmjs.com/package/pako) است.[pako].

برای تبدیل از کد زیر در React.js استفاده کنید .gz به .json فایل.


import { inflate } from "pako";

const parse = (bin: any) => inflate(bin, { to: "string" })

export const fetchJSON = () => {
  return fetch("/data/data.json.gz").then(
    async (response) => {
      const blob = await response.blob();
      readSingleFile(blob).then((res) => {
        let jsonData = parse(rs);
        console.log(jsonData);
        return jsonData;
      });
  });
};

async function readSingleFile(file: File | Blob) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = function (e) {
      resolve(e?.target?.result);
    };
    reader.readAsArrayBuffer(file);
    reader.onabort = reject;
    reader.onerror = reject;
  });
};

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

*چرا این مقاله حتی منطقی است: *

خوب اخیراً با آن کار می کردم deck.gl و باید فایل‌های مجموعه داده بزرگ JSON (بیش از 150 مگابایت) را رندر می‌کرد. اگر فایل‌ها به صورت محلی وجود داشته باشند، اشکالی ندارد، اما تصور کنید که آن فایل‌های مجموعه داده را از یک CDN ارائه کنید 😨😨.
برای همین مشکل، من از طریق اینترنت درباره نحوه ارائه کارآمد/بهینه سازی فایل های مجموعه داده بزرگ تحقیق کردم deck.gl و چیزی پیدا نکردم، و در نهایت به انجام تبدیل باینری و رمزگشایی آن فایل ها در مرورگر برای رندر محتوای نقشه پایان می دهم.

من می دانم که این رویکرد بهینه نیست، اما اگر کسی رویکرد بهتری دارد یا تجربه ای با deck.gl در ارائه مجموعه داده های بزرگ دارد. لطفا در زیر نظر دهید

با تشکر.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا