কীভাবে ডিভাইসগুলিতে লোকাল স্টোরেজ প্রসারিত করবেন (ডিবি ছাড়াই)


10

লক্ষ্য:localStorage আমার অ্যাপ্লিকেশনটিতে আমার ইতিমধ্যে প্রয়োগ করা প্রসারিত করুন, ভাল হতে পারে, স্থানীয় হিসাবে আমার ধারণা নেই।


আমি স্থানীয় স্টোরেজ এপিআই দিয়ে সাধারণ ব্যবহারকারী সেটিংস সংরক্ষণের বাস্তবায়ন পছন্দ করি। একটি ওয়েব অ্যাপ্লিকেশনে আমার প্রয়োজনের জন্য আমার এটি কাজ করছে তবে একমাত্র সমস্যা হ'ল স্থানীয়ভাবে সেই মেশিন / ব্রাউজারটি ব্যবহৃত / সংরক্ষণ করা হচ্ছে। এর জন্য আমার ক্লাসিক মাইএসকিউএল স্টাইলের টেবিলটিতে অ্যাক্সেস নেই। অন্যান্য ব্রাউজারগুলিতে নিয়ে যাওয়ার জন্য আমি আমার স্থানীয় স্টোরেজটি প্রসারিত বা অভিযোজিত করতে চাই; বা ব্যবহারকারী জেএস বস্তু এবং জেএস বস্তুর বৈশিষ্ট্যে আমার ব্যবহারকারীর সেটিংস সংরক্ষণ করুন store

  • আমি প্রতিটি ব্যবহারকারীর সাথে কেবল জেএসএন বা জাভাস্ক্রিপ্ট অবজেক্ট তৈরি করার ধারণাটি পছন্দ করি, যখনই কোনও নতুন ব্যবহারকারী থাকে তখন নামটি গ্রহণ করুন, কোনও বস্তু তৈরি করুন বা object[key]নামের সাথে এবং ক্ষেত্রের বৈশিষ্ট্যগুলি প্রথমে ডিফল্ট ভেরিয়েবলগুলি তৈরি করুন এবং ভেরিয়েবলগুলি পপুলেটেড হয় এবং বা ব্যবহারকারী তাদের সংরক্ষণ করার পরে ওভাররাইড করা হয়।
  • অথবা উপরেরটি যদি নীচু করে থাকে; আমার লোকালস্টোরেজ বাস্তবায়নটি এটির মতো ভালভাবে কাজ করে রাখতে এবং একটি প্লাগইন / গ্রন্থাগার / এক্সটেনশন খুঁজে পেতে চাই কোনও ধরণের চায় যা আমাকে এটি সংরক্ষণ করতে এবং বিভিন্ন স্থানে পুনরায় রেন্ডার করতে দেয়; এটি আগে চিন্তা করা হয়েছে। যদিও আমি এটিকে ক্লায়েন্টের পাশে রাখতে পছন্দ করব; আমি একটি নোড.জেএস সলিউশনের পাশাপাশি অজগর সমাধানের জন্য উন্মুক্ত, এক ধরণের সাধারণ ডেটাফ্রেমে যথেষ্ট কাজ করা উচিত।
  • আমার localStorageডেটা দিয়ে একটি ফাইল তৈরি সম্পর্কে কী ? সম্ভবত একটি .csv ফাইল (এটি সংবেদনশীল ডেটা নয়) এবং এটি আমার মতো আপডেট localStorageহয়?

2
আপনি কেবল এই ক্লায়েন্টের পক্ষে করতে পারবেন না। ব্রাউজারগুলিতে ব্যবহারকারীর তথ্য বজায় রাখতে আপনার একটি সার্বজনীন সার্ভার এবং এটিতে তথ্য সংরক্ষণের প্রয়োজন। সাধারণত এটি একটি ডাটাবেস ব্যবহার করে করা হয়; আপনি যদি মাইএসকিউএল ব্যবহার করতে না চান তবে অন্যান্য ধরণের ডেটা স্টোরেজ রয়েছে। ফায়ারবেস আপনি যা কল্পনা করেছেন তার কাছাকাছি, এটি আপনাকে স্বেচ্ছাসেবী কাঠামোর সামগ্রী সংরক্ষণ করতে দেয়। (এছাড়াও, তাদেরকে JSON একটি টেক্সট ফরম্যাট সেখানে একটি JSON বস্তু কোন ধরনের জিনিস।)
ক্রিস জি

এর সাথে কিছুটা মিল: stackoverflow.com/a/60279503/4845566 ?
ডিল্লোকার :

উত্তর:


3

স্ক্লাইট ব্যবহার সম্পর্কে কী?

আপনার সার্ভারে সিএসভির মতো কেবল একটি ফাইল। কোনও HTTP অনুরোধ প্রেরণ করা ক্লায়েন্ট-সাইডে লোকালস্টোরেজগুলি আপডেট করার পরে কাঁটেক্স বা এসেমকিউএল স্টেটমেন্ট ব্যবহার করে এটি আপডেট করতে।

কমপক্ষে এটি আমার মনে হয় সিভিএসের চেয়ে ভাল কারণ আপনি বেশ কয়েকটি সারণী সংজ্ঞায়িত করতে পারেন যা আরও পরিমাপযোগ্য এবং আরও দক্ষ, আপনি জানেন, এটি একটি ডাটাবেস।


2

আমি এখানে আমার দুটি সেন্ট যুক্ত করছি।


ফাইল রফতানি / আমদানি করুন (জেএসএন, এক্সএমএল, সিএসভি, টিএসভি, ইত্যাদি)

রপ্তানি:

সিরিয়ালিং সেটিংস এবং ফাইল হিসাবে এটি ডাউনলোড করুন।

আমদানি:

রফতানি / ডাউনলোড সিরিয়ালযুক্ত সেটিংস ফাইলটি খুলুন।

উদাহরণ কোড:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Settings Export/Import Demo</title>
</head>

<body>
    <div id="display"></div> <br>
    <button onclick="exportSettings();">Export</button>

    <button onclick="resetSettings();">Reset</button> <br><br>
    File to import: <input id="file-input" type="file" accept="application/json"> <br>
    <button onclick="importSettings();">Import</button>
    <script>

        function exportSettings() {
            var json = getSettingsAsJSON();
            var blob = new Blob([json], { type: "application/json" });
            var linkElement = document.createElement("a");

            linkElement.href = URL.createObjectURL(blob);
            linkElement.download = "ThisIsMySettings";

            document.body.appendChild(linkElement);

            linkElement.click();

            document.body.removeChild(linkElement);
        }

        function importSettings() {
            var fileInput = document.getElementById("file-input");

            if (fileInput.files.length > 0) {
                var jsonFile = fileInput.files[0];

                var fileReader = new FileReader();

                fileReader.onload = function (e) {
                    var json = e.target.result;

                    try {
                        var settings = JSON.parse(json);

                        if (settings.hasOwnProperty("userId")) {
                            localStorage["myapp_user_id"] = settings.userId;
                        }

                        if (settings.hasOwnProperty("hello")) {
                            localStorage["myapp_hello"] = settings.hello;
                        }

                        if (settings.hasOwnProperty("data")) {
                            localStorage["myapp_data"] = settings.data;
                        }

                        displaySettings();
                    } catch (ex) {
                        console.error(ex);

                        alert("Error occured while importing settings!");
                    }
                };

                fileReader.readAsText(jsonFile);
            }
        }

        function resetSettings() {
            localStorage["myapp_user_id"] = Math.floor(Math.random() * 100000) + 1;
            localStorage["myapp_hello"] = "Hello World!";
            localStorage["myapp_data"] = JSON.stringify([1, 3, 3, 7]);

            displaySettings();
        }

        function displaySettings() {
            var json = getSettingsAsJSON();

            document.getElementById("display").innerText = json;
        }

        function getSettingsAsJSON() {
            return JSON.stringify({
                userId: localStorage["myapp_user_id"],
                hello: localStorage["myapp_hello"],
                data: localStorage["myapp_data"]
            });
        }

        resetSettings();
    </script>
</body>

</html>

ইউআরএল (ক্যোয়ারী স্ট্রিং)

রপ্তানি:

ক্যোয়ারী স্ট্রিংয়ে সেটিংস এনকোড করুন এবং হাইপারলিংক হিসাবে বর্তমান URL এর সাথে একত্রিত করুন।

আমদানি:

হাইপারলিংকটি দেখুন যাতে এনকোডযুক্ত সেটিংস সহ কোয়েরি স্ট্রিং রয়েছে, তারপরে জাভাস্ক্রিপ্ট অনুসন্ধান এবং ক্যোয়ারী স্ট্রিং থেকে সেটিংস লোড করে।


বেস 64 এনকোডড ডেটা

রপ্তানি:

সিরিয়ালিং সেটিংসটি এরপরে এটিকে বেস 64 স্ট্রিং হিসাবে এনকোড করুন এবং তারপরে ক্লিপবোর্ডে অনুলিপি করুন।

আমদানি:

ক্লিপবোর্ড থেকে বেস 64 স্ট্রিংটি পাঠ্যবাক্সে ডিকোড, ডিসরিয়ালাইজ এবং সেটিংস লোড করতে আটকান।


কিউআর কোড

রপ্তানি:

ক্যোয়ারী স্ট্রিংয়ে সেটিংস এনকোড করুন এবং হাইপারলিংক হিসাবে বর্তমান URL এর সাথে একত্রিত করুন। তারপরে একটি কিউআর কোড চিত্র এবং প্রদর্শন উত্পন্ন করুন।

আমদানি:

উত্পন্ন কিউআর কোড চিত্রটি স্ক্যান করুন এবং স্বয়ংক্রিয়ভাবে হাইপার লিঙ্কটি দেখুন।


HTTP সার্ভার (নোড.জেএস) / মেঘ স্টোরেজ (AWS S3)

রপ্তানি:

ব্যবহারকারী আইডি দ্বারা মানগুলি আপডেট করার সময় স্বয়ংক্রিয়ভাবে সমাপ্তির জন্য HTTP পোস্ট O

আমদানি:

ব্যবহারকারী আইডি দ্বারা শেষ পয়েন্ট থেকে HTTP পান।


অতিরিক্ত: PouchDB

যে ডাটাবেস সিঙ্ক হয়!

PouchDB একটি ওপেন সোর্স জাভাস্ক্রিপ্ট দ্বারা অনুপ্রাণিত ডাটাবেস এ্যাপাচি CouchDB যা যা ব্রাউজারের মধ্যে ভালভাবে চালানোর জন্য ডিজাইন করা হয়েছিল।

অনলাইন বিকাশকারীদের পাশাপাশি অ্যাপ্লিকেশনগুলি তৈরি করতে অ্যাপ্লিকেশন তৈরি করতে সহায়তার জন্য পাউচডিবি তৈরি করা হয়েছিল। এটি অ্যাপ্লিকেশনগুলিকে অফলাইনে থাকাকালীন স্থানীয়ভাবে ডেটা সঞ্চয় করতে সক্ষম করে, তারপরে অ্যাপ্লিকেশনটি আবার অনলাইনে ফিরে আসার পরে এটিকে কাউচডিবি এবং সামঞ্জস্যপূর্ণ সার্ভারগুলির সাথে সিঙ্ক্রোনাইজ করে ব্যবহারকারীদের ডেটা সিঙ্কে রেখে দেয় যেখানে তারা পরবর্তী লগইন হোক না কেন।


উত্তরের জন্য ধন্যবাদ. সেরা এখনও; প্রথম আমদানি / রফতানি সহ - আমি এটি তৈরি করতে পারলাম যাতে ব্যবহারকারীরা সেটিংস লোড করার জন্য কেবল ফাইলটি খুলতে পারে? কিভাবে কাজ করতে পারে?
ডক ছুটির

1
JSON ফাইল রফতানি / আমদানির জন্য উদাহরণ কোড যুক্ত করা হয়েছে।
ডি কে ধিলিপ

আহ আমি দেখি. ধন্যবাদ. আমি কেবল এটি ব্যবহারকারীর কাছ থেকে জিজ্ঞাসা করা কিছুটা মনে করি। যদি কোনও উপায় থাকে তবে আমি একটি হাইপারলিংক তৈরি করতে এবং তাদের কাছে সম্ভবত এটি ইমেল করতে পারি। আমি মনে করি আমার ডেটাতে ইউআরএল কোয়েরি স্ট্রিংয়ের জন্য অনেকগুলি অক্ষর রয়েছে। কিউআর কোড বিকল্পটি কীভাবে স্ক্যান হবে?
ডক ছুটি

আপনার ডেটা যদি ক্যোয়ারী স্ট্রিংয়ের সাথে মানানসই আকারে খুব বড় হয় তবে সম্ভবত আপনি জিজেপ / ডিফল্ট প্লাস বেস 64 নিয়ে পরীক্ষা-নিরীক্ষা করতে পারবেন কিনা তা দেখার জন্য, এটি পিলোডের আকারটি হ্রাস করতে পারে এবং কোয়েরি স্ট্রিংয়ের অন্তর্ভুক্ত করতে পারে? আমি জানি না এটি আপনার মামলার পক্ষে যথেষ্ট কার্যকর হবে কিনা, কেবল একটি এলোমেলো চিন্তাভাবনা। কিউআর কোড বিকল্পের জন্য, এটি কোনও ক্যামেরা সহ যে কোনও ডিভাইস দ্বারা স্ক্যান করা যেতে পারে, বা সরাসরি চিত্র স্ক্যান করতে পারে (সাধারণ URL, ডেটা URL, ওপেন ফাইল থেকে)।
ডিসি ধিলিপ

ডেটা আকার হ্রাস ধারণাটি প্রসারিত করতে, আপনি নিজের ডেটাটিকে অ্যারেফুফারে যতটা সম্ভব ছোট করার জন্য ম্যানুয়ালি সিরিয়ালাইজ করার চেষ্টা করতে পারেন এবং তারপরে ট্রান্সপোর্টের পদ্ধতির উপর নির্ভর করে বেস 6464 এনকোডিংটি প্রয়োগ করতে পারেন।
ডিসি ধিলিপ

2

আপনি যদি আপনার ব্যবহারকারীর প্যারামগুলি জিপ করেন তবে আপনি স্টোর হিসাবে URL টি ব্যবহার করতে পারেন।
আপনি যে প্যারামগুলি সংরক্ষণ করতে চান সেগুলি পান> json> ডিফলেট> বেস 64 এ এনকোড> ইউআরএল টিপুন

const urlParam = btoa(pako.deflate(JSON.stringify(getUser()), { to: 'string' }));

অনলোড: ইউআরএল থেকে> পরিক্রমাগুলি> বেস 64 থেকে> ডিফল্ট> পার্স জেসন থেকে পান get

const user = JSON.parse(pako.inflate(atob(urlParam), { to: 'string' }));

https://jsfiddle.net/chukanov/q4heL8gu/44/

ইউআরএল পরম বেশ লম্বা হবে তবে 10 গুণ কম তবে সর্বোচ্চ পাওয়া যাবে


এই! তবে আমি যখন আমার লোকাল স্টোরেজ ডেটাটি কনগোল করি তখন এটি 20k ডলার এবং অক্ষরে ~ 8k। আমি কি এখনও এরকম কিছু করতে পারি?
ডক ছুটির

1
আমি 160k অক্ষর দিয়ে পরীক্ষা করেছি। এটি ডিফল্টের পরে 1600 টি অক্ষর হবে, এমনকি আইই সমস্যা ছাড়াই কাজ করবে (সর্বাধিক ইউআরএল দৈর্ঘ্য যেমন - 2048)। আধুনিক ব্রাউজারগুলির ইউআরএল দৈর্ঘ্যের কোনও সীমাবদ্ধতা নেই।
আন্তন চুকানোভ

ধন্যবাদ! পাকোর কি লাইব্রেরি বা কিছু দরকার হয়? আমি পাকো অপরিশোধিত হয়ে যাচ্ছি
ডক ছুটির

1
"ইউআরএল দৈর্ঘ্যের জন্য আধুনিক ব্রাউজারগুলির কোনও সীমাবদ্ধতা নেই" এটি একটি ভ্রান্ত অনুমান, দয়া করে এটি দেখুন । এছাড়াও, পাকো একটি জাভাস্ক্রিপ্ট লাইব্রেরি যা এখানে পাওয়া যাবে ( গিটহাব , সিডিএনজেএস )। শেষ অবধি, দয়া করে নোট করুন যে সংশ্লেষণ অনুপাত ডেটা সামগ্রীর উপর নির্ভর করে পৃথক হতে পারে।
ডি কে ধিলিপ

2

স্থানীয় স্টোরেজ ব্যবহারের পরিবর্তে, আপনার ব্যবহারকারীর সেটিংস ইন্টারপ্ল্যানেটারি ফাইল সিস্টেম (আইপিএফ) https://ipfs.io/ এ সঞ্চয় করুন

মূলত, আপনি তাদের সেটিংটি JSON এর মতো একটি ডেটা ফর্ম্যাট রাখবেন এবং তারপরে এটি ফাইল করে লিখুন এবং এটি আইপিএফএসে ঠেলাবেন।

কোন ডেটা কোন ব্যবহারকারীর কাছে যায় তা সনাক্ত করার জন্য আপনার একটি উপায় প্রয়োজন। আপনার ফাইলের নাম বা এর মতো কিছুতে আপনি ব্যবহারকারীর নাম এবং পাসওয়ার্ডের একটি হ্যাশ ব্যবহার করতে পারেন। তারপরে আপনার ব্যবহারকারীরা সর্বদা যে কোনও ডিভাইসে তাদের সামগ্রী অ্যাক্সেস করতে সক্ষম হবে (যতক্ষণ না তারা তাদের পাসওয়ার্ড ভুলে যায়)।


1

আপনি localForageমূলত একই এপিআই নামে পরিচিত একটি লাইব্রেরি ব্যবহার করতে পারেন localStorageএটি বাদে এটি আপনাকে আরও জটিল ডেটা স্ট্রাকচার (অ্যারে, অবজেক্ট) সংরক্ষণ করার অনুমতি nodejsদেয় এবং স্টাইল কলব্যাক, প্রতিশ্রুতি এবং সমর্থন করেasync await

এখানে সংগ্রহস্থলের একটি লিঙ্ক রয়েছে যেখানে আপনি উদাহরণের ব্যবহারগুলি এবং আপনার প্রকল্পে এটি কীভাবে আপনার পছন্দ মতো প্রয়োগ করতে পারেন তা খুঁজে পেতে পারেন।


ধন্যবাদ যে ঝরঝরে দেখাচ্ছে; তবে দেখে মনে হচ্ছে এটির কোনও ডিবি-র সাধারণ লোকালস্টোরের মতোই সীমাবদ্ধতা রয়েছে
ডক ছুটির

1

ডেটা ভাগ করে নেওয়ার জন্য ডাটাবেস ব্যবহার না করে এটি বাস্তবায়নের সর্বোত্তম উপায়, আমি এটি ওয়েবআরটিসি সমাধান ভিত্তিক বলে বিশ্বাস করি, এটি করার একটি উপায় হিসাবে আমি ভেবেছিলাম তবে এর জন্য আমার কোড নেই (অন্তত এখনের জন্য), তাই কিছু কিছু অনুসন্ধান আমি দেখেছি কেউ ইতিমধ্যেই তা (ঠিক, কিন্তু কিছু সমন্বয় সঙ্গে এটি প্রস্তুত হবে) এখানে উদাহরণস্বরূপ, এই প্রবন্ধের তার অংশ একটি সংকেত সার্ভার ছাড়া WebRTC

এখানে আরও একটি উত্স: ডেটা চ্যানেল বেসিক উদাহরণ ডেমো

এবং গিথুব: ডেটা চ্যানেলের প্রাথমিক উদাহরণ

ওয়েবআরটিসি কেবল ভিডিও / অডিও চ্যাটের জন্য নয়, এটি পাঠ্য বার্তাপ্রেরণ এবং পাঠ্য সম্পাদনার ক্ষেত্রে সহযোগিতায়ও ব্যবহৃত হতে পারে।

এই সমাধানটি এখানে উত্তরগুলির মধ্যে একটিতেও উল্লেখ করেছে ।


0

কুকি ব্যবহার করুন বা একটি ডাউনলোডযোগ্য ফাইল রয়েছে যা ব্যবহারকারীরা তাদের সাথে অন্য ব্রাউজারে অ্যাক্সেস করার সময় লোড করতে পারে। আপনি এটি কোনও পাঠ্য, জেএসএন, বা জাভাস্ক্রিপ্ট ফাইলের সাথে অবজেক্ট ডেটার সাহায্যে করতে পারেন।


আমি বিশ্বাস করি কুকিজগুলিও কেবল স্থানীয়?
ডক ছুটি

তৃতীয় পক্ষের কুকিজ একই "উত্স" এ নির্ভর করে যদি একাধিক ওয়েবসাইটগুলি ব্যবহার করতে পারে।

0

আপনি রেডিস ব্যবহার করতে পারেন । এটি একটি ইন-মেমরি ডেটা স্ট্রাকচার স্টোর, যা ডেটাবেস হিসাবে ব্যবহৃত হয়। আপনি কী জোড় ফর্ম্যাটে আপনার ডেটা সংরক্ষণ করতে পারেন। এটি আপনার অ্যাপ্লিকেশনটিকে দ্রুত এবং দক্ষ করে তোলে।


0

স্পষ্টতই সর্বোত্তম পন্থা হ'ল ডেটাবেস ব্যবহার করা। তবে, আপনি যদি কোনও ডাটাবেস ব্যবহারের দিকে ঝুঁকছেন তবে সম্ভাব্য সেরা পদ্ধতির মধ্যে এমন কৌশলগুলির সংমিশ্রণটি ব্যবহার করা উচিত যা আমি বিশ্বাস করি যে আপনি ইতিমধ্যে স্পর্শ করেছেন সুতরাং আমি আপনাকে এখানে বিন্দুগুলি সংযুক্ত করতে সহায়তা করব।

প্রয়োজনীয় পদক্ষেপগুলি:

  1. লোকালস্টোরেজ এপিআই (যেহেতু এটি ইতিমধ্যে আপনার জন্য আংশিকভাবে কাজ করছে)।
  2. জিইটি এবং পোষ্ট সেটিংস ডেটাতে শেষ পয়েন্টের জন্য নোড বা পাইথন (বা যা আপনি স্বাচ্ছন্দ্যযুক্ত) তৈরি করুন।
  3. আপনার এপিআই সার্ভারে একটি ব্যবহারকারীর সেটিং.জেএসএন ফাইল তৈরি করুন।

নির্দেশাবলী:

আপনি এখন আপনার স্থানীয় স্টোরেজকে যেভাবে ব্যবহার করছেন (বর্তমান কার্যক্ষম অবস্থা) working

বিভিন্ন ডিভাইস জুড়ে ব্যবহারকারীর সেটিংস সরাতে বা রাখতে, ব্যবহারকারীর সেটিংস সংরক্ষণ এবং আমদানির জন্য একটি ব্যবহারকারীর সেটিং.জেএসএন ফাইল (একটি নথির ডাটাবেস হিসাবে পরিবেশন করা) ব্যবহার করা হবে।

আপনার এপিআই শেষ পয়েন্টটি স্থানীয় স্টোররেজে উপস্থিত না থাকলে ব্যবহারকারীর সেটিংস পেতে GET ব্যবহার করা হবে। সেটিংসের আপডেটের সময়, আপনার লোকালস্টোরেজ আপডেট করুন এবং তারপরে আপনার এন্ডপয়েন্টটি ব্যবহার করে আপনার ব্যবহারকারীসেটেজেজেএসএন ফাইলের নতুন সেটিংস পোস্ট / আপডেট করুন।

আপনার এপিআই এন্ডপয়েন্টটি কেবল ব্যবহারকারীর সেটিংস.জেএসএন ফাইল বজায় রাখতে (পড়তে এবং লিখতে) ব্যবহৃত হবে। আপনার ফাইলে সেটিংস তৈরি করতে, আপডেট করতে এবং সম্ভবত সেটিংস মুছতে আপনার একটি পদ্ধতি / ফাংশন প্রয়োজন। আপনি ইতিমধ্যে জানতে পারেন, একটি JSON ফাইল ফর্ম্যাট একটি মঙ্গোডিবি ডাটাবেস থেকে খুব বেশি আলাদা নয়। এই ক্ষেত্রে আপনি আপনার ফাইল পরিচালনা করার জন্য প্রয়োজনীয় পদ্ধতিগুলি তৈরি করছেন।

আশা করি এটা কাজে লাগবে!


-1

আপনি এটি একটি ডাটাবেস ছাড়াই সমাধান করতে পারেন, তবে আমি এটির প্রস্তাব দেব না। মূলত আপনার (ব্যবহারকারী, লোকালস্টোরেশন) জোড়া রয়েছে এবং যখন কোনও প্রদত্ত ব্যবহারকারী নিজেকে / নিজেকে চিহ্নিত করেন, তার লোকাল স্টোরেজটি কোনও উপায়ে সরবরাহ করা উচিত। আপনি ব্যবহারকারীদের তাদের নিজস্ব স্টোরেজগুলি তাদের নিজস্ব মেশিনে সঞ্চয় করতে বলতে পারেন, তবে তারপরে তাদের এটিকে অন্য মেশিনে অনুলিপি করতে হবে, যা শ্রমনির্ভর এবং কখনও জনপ্রিয়তা অর্জন করতে পারে না। লোকালস্টোরেজের কাছে তাদের ডেটা রয়েছে কিনা তা নিশ্চিত করার জন্য এবং লোকালস্টোরাজের মেশিনগুলি জুড়ে মেশিনালি অনুলিপি করা পুরোপুরি ম্যানুয়ালি করার চেয়ে কিছুটা সহজ One

আপনি স্থানীয় স্টোরেজ তথ্যটি ইউআরএল-এ এনকোড করে রাখতে পারেন, তবে ইউআরএল দৈর্ঘ্যের সমস্যা ছাড়াও, এটি একটি সমস্যা হয়ে উঠতে পারে এবং সর্বদা উপস্থিত এনকোডিংয়ের সমস্যা ছাড়াও, আপনার রাউটারটিতে অ্যাক্সেস থাকাতে আপনার সম্পূর্ণ লোকালস্টোরেশন তৃতীয় পক্ষ দ্বারা পর্যবেক্ষণ করা যেতে পারে। আমি জানি আপনি বলেছেন যে ডেটা সংবেদনশীল নয়, তবে আমি আপনাকে বিশ্বাস করি যে এটি এখনও সংবেদনশীল নয় । তবে ব্যবহারকারীরা এটি ব্যবহার করার পরে, যদি এটি সুবিধাজনক হয় তবে তারা সংবেদনশীল ডেটাও সংরক্ষণ করে রাখবে বা আপনার ক্লায়েন্টদের কাছে এই জাতীয় কাজ থাকতে পারে, এমনকি আপনি বুঝতে পারেন যে সেখানে আপনার ডেটা সংরক্ষণ করতে হবে যা 100% জনসাধারণের নয়।

এগুলি ছাড়াও, বাস্তবে আপনি সিনক্রোনাইজেশনের খুব গুরুতর সমস্যার মুখোমুখি হবেন, এটি হ'ল লোকালস্টোরেজ অজ্ঞেস্টিক তৈরি করা ভাল but তবে এর আসল সংস্করণটি কী? আপনি যদি নিয়মিত 10 টি আলাদা সেশনে কাজ করেন, তবে লোকালস্টোরগুলি সিঙ্ক্রোনাইজ করা একটি সমস্যা হয়ে দাঁড়ায়। এর অর্থ লোকালস্টোরেশনকে টাইমস্ট্যাম্প করা দরকার।

সুতরাং, আপনার সর্বশেষ সংরক্ষিত লোকালস্টোরাজ সংস্করণ সংরক্ষণ করার জন্য একটি কেন্দ্রীয় জায়গা, একটি সার্ভারের প্রয়োজন হবে। কিছু অজানা কারণে যদি আপনি ডাটাবেসগুলি দ্বারা রক্ষা পেয়ে থাকেন তবে আপনি লোকালস্টোরাজগুলি ফাইলের মধ্যে সংরক্ষণ করতে পারেন যা ব্যবহারকারীকে সনাক্ত করে, যেমন

johndoe.json

এবং তারপরে আপনাকে একটি রফতানি বৈশিষ্ট্য প্রয়োগ করতে হবে যা ব্যবহারকারীর বর্তমান জেএসএন সার্ভারে প্রেরণ করবে এবং এটি একটি ফাইল এবং একটি আমদানি বৈশিষ্ট্যে সংরক্ষণ করবে, এটি ব্যবহারকারীর জন্য সঞ্চিত ফাইলটি ডাউনলোড করবে এবং লোকালস্টোরেজ আপডেট হবে তা নিশ্চিত করবে ensure সেই অনুযায়ী। একটি সিঙ্ক্রোনাইজেশন বাস্তবায়ন করে আপনি দুজনকে একসাথে করতেও পারেন।

এটি এখন পর্যন্ত সহজ, তবে যদি ব্যবহারকারীটির ইতিমধ্যে তার স্থানীয় লোকালস্টোরের ভিতরে এবং সার্ভারে কিছু কার্যকর ডেটা থাকে? সবচেয়ে সহজ পন্থা একে অপরের সাথে ওভাররাইড করা, কিন্তু কোনটি? যদি আমরা আমদানি করি, তবে স্থানীয়টিকে ওভাররাইড করা হয়, যদি রফতানি করা হয়, তবে সার্ভারে থাকা একটিটিকে ওভাররাইড করা হয়, যদি আমরা সিঙ্ক্রোনাইজ করি, তবে পুরানোটিকে ওভাররাইড করা হবে।

তবে কিছু ক্ষেত্রে আপনি একই ব্যবহারকারীর দুটি স্থানীয় স্টোরেজগুলিকে মার্জ করতে চান, তাই:

নতুন উপাদান

আমি বিশ্বাস করি যে কোনও উপাদান যদি নতুন হয় তবে এটি কিছু উপায়ে জানা উচিত যে এটি এই অধিবেশনটিতে তৈরি করা হয়েছিল, যা জানা দরকারী, কারণ এর অর্থ হ'ল যে অন্য সেশনে আমরা একত্রিত হচ্ছি, এই নতুন আইটেমটি সরানো হয়নি এবং তাই এটি যুক্ত করা স্বজ্ঞাত।

উপাদান পরিবর্তন

দুটি ক্ষেত্রে যদি একই উপাদান পৃথক হয়, তবে নতুন সংস্করণটি প্রাধান্য পাবে।

সরানো উপাদান

মজার ঘটনাটি হ'ল যখন এক সেশনে এটি সরানো হয়েছিল এবং অন্যটিতে এটি আপডেট করা হয়েছিল। এই ক্ষেত্রে আমি মনে করি যে নতুন পরিবর্তনটি বিরাজ করবে।


তবে, আপনার সর্বোত্তম প্রচেষ্টা সত্ত্বেও, ব্যবহারকারীরা এখনও (এবং আপনার সফ্টওয়্যারটি) জিনিসগুলি জগাখিচুড়ি করতে পারে, সুতরাং আপনার সার্ভারে প্রতিটি সেশনের ব্যাক আপ নেওয়া অর্থপূর্ণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.