শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ইমপ্লিমেন্টেশন কুইকস্টার্ট

শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ব্যবহার করার জন্য এই ডকুমেন্টটি একটি কুইকস্টার্ট গাইড। আপনার উভয় API-এর বোঝার প্রয়োজন হবে কারণ শেয়ার্ড স্টোরেজ মান সঞ্চয় করে এবং ব্যক্তিগত একত্রীকরণ সমষ্টিগত প্রতিবেদন তৈরি করে।

লক্ষ্য শ্রোতা: বিজ্ঞাপন প্রযুক্তি এবং পরিমাপ প্রদানকারী।

শেয়ার্ড স্টোরেজ API

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

শেয়ার্ড স্টোরেজ প্রসঙ্গ মূলে সীমাবদ্ধ ( sharedStorage কলার)।

শেয়ার্ড স্টোরেজের মূল প্রতি একটি ক্ষমতা সীমা রয়েছে, প্রতিটি এন্ট্রি সর্বাধিক সংখ্যক অক্ষরের মধ্যে সীমাবদ্ধ। সীমা পৌঁছে গেলে, আর কোনো ইনপুট সংরক্ষণ করা হয় না। শেয়ার্ড স্টোরেজ এক্সপ্লেনারে ডেটা সঞ্চয়ের সীমারেখা দেওয়া আছে।

শেয়ার্ড স্টোরেজ আহ্বান করা হচ্ছে

বিজ্ঞাপন প্রযুক্তিগুলি জাভাস্ক্রিপ্ট বা প্রতিক্রিয়া শিরোনাম ব্যবহার করে শেয়ার্ড স্টোরেজে লিখতে পারে। শেয়ার্ড স্টোরেজ থেকে পড়া শুধুমাত্র একটি বিচ্ছিন্ন জাভাস্ক্রিপ্ট পরিবেশের মধ্যে ঘটে যাকে ওয়ার্কলেট বলা হয়।

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

    একটি অপারেশন চলাকালীন ওয়ার্কলেটে ব্যবহৃত পদ্ধতিগুলি প্রস্তাবিত API সারফেস - ওয়ার্কলেটে পাওয়া যাবে।

  • প্রতিক্রিয়া শিরোনাম ব্যবহার করে

    জাভাস্ক্রিপ্টের মতো, শুধুমাত্র নির্দিষ্ট ফাংশনগুলি যেমন শেয়ার করা স্টোরেজে মান নির্ধারণ, সংযুক্ত করা এবং মুছে ফেলা প্রতিক্রিয়া শিরোনাম ব্যবহার করে করা যেতে পারে। একটি প্রতিক্রিয়া শিরোনামে শেয়ার্ড স্টোরেজের সাথে কাজ করতে, Shared-Storage-Writable: ?1 অনুরোধ শিরোনামে অন্তর্ভুক্ত করতে হবে।

    ক্লায়েন্ট থেকে একটি অনুরোধ শুরু করতে, আপনার নির্বাচিত পদ্ধতির উপর নির্ভর করে নিম্নলিখিত কোডটি চালান:

    • fetch() ব্যবহার করে

      fetch("https://a.example/path/for/updates", {sharedStorageWritable: true});
      
    • একটি iframe বা img ট্যাগ ব্যবহার করা

      <iframe src="https://a.example/path/for/updates" sharedstoragewritable></iframe>
      
    • একটি iframe বা img ট্যাগের সাথে একটি IDL বৈশিষ্ট্য ব্যবহার করা

      let iframe = document.getElementById("my-iframe");
      iframe.sharedStorageWritable = true;
      iframe.src = "https://a.example/path/for/updates";
      

শেয়ার্ড স্টোরেজ: রেসপন্স হেডারে আরও তথ্য পাওয়া যাবে।

শেয়ার্ড স্টোরেজে লেখা

শেয়ার্ড স্টোরেজে লিখতে, জাভাস্ক্রিপ্ট ওয়ার্কলেটের ভিতর বা বাইরে থেকে sharedStorage.set() কল করুন। যদি ওয়ার্কলেটের বাইরে থেকে কল করা হয়, তবে ডেটাটি ব্রাউজিং প্রসঙ্গের মূলে লেখা হয় যেখান থেকে কলটি করা হয়েছিল। ওয়ার্কলেটের ভিতর থেকে কল করা হলে, ডাটাটি ব্রাউজিং প্রসঙ্গটির মূলে লেখা হয় যা ওয়ার্কলেট লোড করেছে। সেট করা কীগুলির শেষ আপডেট থেকে 30 দিনের মেয়াদ শেষ হওয়ার তারিখ রয়েছে।

ignoreIfPresent ক্ষেত্রটি ঐচ্ছিক। উপস্থিত থাকলে এবং true সেট করা হলে, কীটি ইতিমধ্যেই বিদ্যমান থাকলে আপডেট করা হয় না। কী আপডেট না হলেও set() কল থেকে কী মেয়াদ 30 দিনে পুনর্নবীকরণ করা হয়।

শেয়ার্ড স্টোরেজ একই কী দিয়ে একই পৃষ্ঠা লোডে একাধিকবার অ্যাক্সেস করা হলে, কীটির মান ওভাররাইট করা হয়। যদি পূর্ববর্তী মান বজায় রাখার প্রয়োজন হয় তাহলে sharedStorage.append() ব্যবহার করা ভালো।

  • জাভাস্ক্রিপ্ট ব্যবহার করে

    ওয়ার্কলেটের বাইরে:

    window.sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });
    // Shared Storage: {'myKey': 'myValue1'}
    window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: true });
    // Shared Storage: {'myKey': 'myValue1'}
    window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: false });
    // Shared Storage: {'myKey': 'myValue2'}
    

    একইভাবে, ওয়ার্কলেটের ভিতরে:

    sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });
    
  • প্রতিক্রিয়া শিরোনাম ব্যবহার করে

    আপনি প্রতিক্রিয়া শিরোনাম ব্যবহার করে শেয়ার্ড স্টোরেজেও লিখতে পারেন। এটি করার জন্য, নিম্নলিখিত কমান্ডগুলির সাথে প্রতিক্রিয়া শিরোনামে Shared-Storage-Write ব্যবহার করুন:

    Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present
    
    Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present=?0
    

    একাধিক আইটেম কমা দ্বারা পৃথক করা যেতে পারে এবং set , append , delete এবং clear একত্রিত করতে পারে।

    Shared-Storage-Write :
    set;key="hello";value="world";ignore_if_present, set;key="good";value="bye"
    

একটি মান যুক্ত করা হচ্ছে

আপনি append পদ্ধতি ব্যবহার করে বিদ্যমান কী-তে একটি মান যোগ করতে পারেন। যদি কী বিদ্যমান না থাকে, কলিং append() কী তৈরি করে এবং মান সেট করে। এটি জাভাস্ক্রিপ্ট বা প্রতিক্রিয়া শিরোনাম ব্যবহার করে সম্পন্ন করা যেতে পারে।

  • জাভাস্ক্রিপ্ট ব্যবহার করে

    বিদ্যমান কীগুলির মান আপডেট করতে, ওয়ার্কলেটের ভিতরে বা বাইরে থেকে sharedStorage.append() ব্যবহার করুন।

    window.sharedStorage.append('myKey', 'myValue1');
    // Shared Storage: {'myKey': 'myValue1'}
    window.sharedStorage.append('myKey', 'myValue2');
    // Shared Storage: {'myKey': 'myValue1myValue2'}
    window.sharedStorage.append('anotherKey', 'hello');
    // Shared Storage: {'myKey': 'myValue1myValue2', 'anotherKey': 'hello'}
    

    ওয়ার্কলেটের ভিতরে যুক্ত করতে:

    sharedStorage.append('myKey', 'myValue1');
    
  • প্রতিক্রিয়া শিরোনাম ব্যবহার করে

    ভাগ করা সঞ্চয়স্থানে একটি মান সেট করার অনুরূপ, আপনি কী-মান জুড়িতে পাস করতে প্রতিক্রিয়া শিরোনামে Shared-Storage-Write ব্যবহার করতে পারেন।

    Shared-Storage-Write : append;key="myKey";value="myValue2"
    

শেয়ার্ড স্টোরেজ থেকে পড়া

আপনি শুধুমাত্র একটি ওয়ার্কলেট থেকে শেয়ার্ড স্টোরেজ থেকে পড়তে পারেন।

await sharedStorage.get('mykey');

ওয়ার্কলেট মডিউলটি যে ব্রাউজিং প্রেক্ষাপট থেকে লোড করা হয়েছিল তা নির্ধারণ করে কার শেয়ার করা স্টোরেজ পড়া হয়েছে।

শেয়ার্ড স্টোরেজ থেকে মুছে ফেলা হচ্ছে

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

  • জাভাস্ক্রিপ্ট ব্যবহার করে

    ওয়ার্কলেটের বাইরে থেকে শেয়ার্ড স্টোরেজ থেকে মুছে ফেলতে:

    window.sharedStorage.delete('myKey');
    

    ওয়ার্কলেটের ভিতর থেকে শেয়ার্ড স্টোরেজ থেকে মুছে ফেলতে:

    sharedStorage.delete('myKey');
    

    ওয়ার্কলেটের বাইরে থেকে একবারে সমস্ত কী মুছে ফেলতে:

    window.sharedStorage.clear();
    

    ওয়ার্কলেটের ভিতর থেকে একবারে সমস্ত কী মুছে ফেলতে:

    sharedStorage.clear();
    
  • প্রতিক্রিয়া শিরোনাম ব্যবহার করে

    প্রতিক্রিয়া শিরোনাম ব্যবহার করে মান মুছে ফেলার জন্য, আপনি মোছার কী পাস করতে প্রতিক্রিয়া শিরোনামে Shared-Storage-Write ব্যবহার করতে পারেন।

    delete;key="myKey"
    

    প্রতিক্রিয়া শিরোনাম ব্যবহার করে সমস্ত কী মুছে ফেলতে:

    clear;
    

প্রসঙ্গ স্যুইচিং

শেয়ার্ড স্টোরেজ ডেটা ব্রাউজিং প্রসঙ্গের মূলে (উদাহরণস্বরূপ, https://example.adtech.com) লেখা হয় যেখান থেকে কলটি এসেছে।

যখন আপনি একটি <script> ট্যাগ ব্যবহার করে তৃতীয় পক্ষের কোড লোড করেন, কোডটি এমবেডারের ব্রাউজিং প্রসঙ্গে কার্যকর করা হয়। অতএব, যখন তৃতীয় পক্ষের কোড sharedStorage.set() কল করে, তখন ডেটা এমবেডারের শেয়ার্ড স্টোরেজে লেখা হয়। আপনি যখন একটি আইফ্রেমের মধ্যে তৃতীয় পক্ষের কোডটি লোড করেন, কোডটি একটি নতুন ব্রাউজিং প্রসঙ্গ পায় এবং এর উত্সটি আইফ্রেমের উত্স। তাই, iframe থেকে করা sharedStorage.set() কল আইফ্রেম মূলের শেয়ার্ড স্টোরেজে ডেটা সঞ্চয় করে।

প্রথম পক্ষের প্রসঙ্গ

যদি কোনো প্রথম-পক্ষের পৃষ্ঠায় তৃতীয়-পক্ষের জাভাস্ক্রিপ্ট কোড এমবেড করা থাকে যা sharedStorage.set() বা sharedStorage.delete() কল করে, তাহলে মূল-মান জোড়া প্রথম-পক্ষের প্রসঙ্গে সংরক্ষণ করা হয়।

এম্বেড করা তৃতীয় পক্ষের জাভাস্ক্রিপ্ট সহ একটি প্রথম-পক্ষের পৃষ্ঠায় সংরক্ষিত ডেটা।

তৃতীয় পক্ষের প্রসঙ্গ

আইফ্রেমের মধ্যে থেকে জাভাস্ক্রিপ্ট কোডে একটি আইফ্রেম এবং কলিং set() বা delete() তৈরি করে কী-মানের জুটি বিজ্ঞাপন প্রযুক্তি বা তৃতীয়-পক্ষের প্রসঙ্গে সংরক্ষণ করা যেতে পারে।

অ্যাড-টেক বা থার্ড-পার্টি প্রসঙ্গে সংরক্ষিত ডেটা।

প্রাইভেট অ্যাগ্রিগেশন API

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

একটি প্রতিবেদন তৈরি করতে, একটি বালতি এবং মান সহ একটি ওয়ার্কলেটের ভিতরে contributeToHistogram() কল করুন। বালতিটি একটি স্বাক্ষরবিহীন 128-বিট পূর্ণসংখ্যা দ্বারা উপস্থাপিত হয় যা একটি BigInt হিসাবে ফাংশনে পাস করতে হবে। মান একটি ধনাত্মক পূর্ণসংখ্যা।

গোপনীয়তা রক্ষা করার জন্য, রিপোর্টের পেলোড, যা বালতি এবং মান ধারণ করে, ট্রানজিটে এনক্রিপ্ট করা হয় এবং এটি শুধুমাত্র অ্যাগ্রিগেশন পরিষেবা ব্যবহার করে ডিক্রিপ্ট করা এবং একত্রিত করা যায়।

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

privateAggregation.contributeToHistogram({
  bucket: BigInt(myBucket),
  value: parseInt(myBucketValue)
});

শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন নির্বাহ করা

শেয়ার্ড স্টোরেজ থেকে ডেটা অ্যাক্সেস করার জন্য আপনাকে অবশ্যই একটি ওয়ার্কলেট তৈরি করতে হবে। এটি করার জন্য, ওয়ার্কলেটের URL দিয়ে createWorklet() কল করুন। ডিফল্টরূপে, createWorklet() সাথে শেয়ার্ড স্টোরেজ ব্যবহার করার সময়, ডাটা পার্টিশনের উৎস হবে ইনভোকিং ব্রাউজিং কনটেক্সটের উৎস, ওয়ার্কলেট স্ক্রিপ্টের উৎপত্তি নয়।

ডিফল্ট আচরণ পরিবর্তন করতে, createWorklet কল করার সময় dataOrigin বৈশিষ্ট্য সেট করুন।

  • dataOrigin: "context-origin" : (ডিফল্ট) ব্রাউজিং কনটেক্সট এর উত্সের শেয়ার্ড স্টোরেজে ডেটা সংরক্ষণ করা হয়।
  • dataOrigin: "script-origin" : ওয়ার্কলেট স্ক্রিপ্টের উত্সের ভাগ করা স্টোরেজে ডেটা সংরক্ষণ করা হয়। মনে রাখবেন এই মোডটি সক্ষম করার জন্য একটি অপ্ট-ইন প্রয়োজন৷
sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});

অপ্ট-ইন করার জন্য, "script-origin" ব্যবহার করার সময়, স্ক্রিপ্ট এন্ডপয়েন্টকে হেডার Shared-Storage-Cross-Origin-Worklet-Allowed দিয়ে প্রতিক্রিয়া জানাতে হবে। মনে রাখবেন যে ক্রস-অরিজিন অনুরোধের জন্য CORS সক্রিয় করা উচিত।

Shared-Storage-Cross-Origin-Worklet-Allowed : ?1

ক্রস-অরিজিন আইফ্রেম ব্যবহার করা

শেয়ার্ড স্টোরেজ ওয়ার্কলেট চালু করার জন্য একটি iframe প্রয়োজন।

বিজ্ঞাপনের আইফ্রেমে, addModule() কল করে ওয়ার্কলেট মডিউলটি লোড করুন। sharedStorageWorklet.js ওয়ার্কলেট ফাইলে নিবন্ধিত পদ্ধতিটি চালানোর জন্য, একই বিজ্ঞাপন iframe JavaScript-এ, sharedStorage.run() কল করুন।

const sharedStorageWorklet = await window.sharedStorage.createWorklet(
  'https://any-origin.example/modules/sharedStorageWorklet.js'
);
await sharedStorageWorklet.run('shared-storage-report', {
  data: { campaignId: '1234' },
});

ওয়ার্কলেট স্ক্রিপ্টে, আপনাকে অ্যাসিঙ্ক run পদ্ধতি সহ একটি ক্লাস তৈরি করতে হবে এবং বিজ্ঞাপনের আইফ্রেমে চালানোর জন্য এটি registersharedStorageWorklet.js ভিতরে :

class SharedStorageReportOperation {
  async run(data) {
    // Other code goes here.
    bucket = getBucket(...);
    value = getValue(...);
    privateAggregation.contributeToHistogram({
      bucket,
      value
    });
  }
}
register('shared-storage-report', SharedStorageReportOperation);

ক্রস-অরিজিন অনুরোধ ব্যবহার করে

শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ক্রস-অরিজিন আইফ্রেমের প্রয়োজন ছাড়াই ক্রস-অরিজিন ওয়ার্কলেট তৈরির অনুমতি দেয়।

প্রথম পক্ষের পৃষ্ঠাটি ক্রস-অরিজিন জাভাস্ক্রিপ্ট এন্ডপয়েন্টে একটি createWorklet() কল আহ্বান করতে পারে। ওয়ার্কলেট তৈরি করার সময় আপনাকে স্ক্রিপ্ট-অরিজিন হিসাবে ওয়ার্কলেটের ডেটা পার্টিশনের উত্স সেট করতে হবে।

async function crossOriginCall() {
  const privateAggregationWorklet = await sharedStorage.createWorklet(
    'https://cross-origin.example/js/worklet.js',
    { dataOrigin: 'script-origin' }
  );
  await privateAggregationWorklet.run('pa-worklet');
}
crossOriginCall();

ক্রস-অরিজিন জাভাস্ক্রিপ্ট এন্ডপয়েন্টকে Shared-Storage-Cross-Origin-Worklet-Allowed শিরোনামগুলির সাথে প্রতিক্রিয়া জানাতে হবে এবং নোট করুন যে অনুরোধের জন্য CORS সক্ষম করা হয়েছে।

Shared-Storage-Cross-Origin-Worklet-Allowed : ?1

createWorklet() ব্যবহার করে তৈরি ওয়ার্কলেটগুলিতে selectURL এবং run() থাকবে। addModule() এর জন্য উপলব্ধ নয়।

class CrossOriginWorklet {
  async run(data){
    // Other code goes here.
    bucket = getBucket(...);
    value = getValue(...);
    privateAggregation.contributeToHistogram({
      bucket,
      value
    });
  }
}

পরবর্তী পদক্ষেপ

নিম্নলিখিত পৃষ্ঠাগুলি শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন API-এর গুরুত্বপূর্ণ দিকগুলি ব্যাখ্যা করে৷

একবার আপনি এপিআইগুলির সাথে পরিচিত হয়ে গেলে, আপনি প্রতিবেদনগুলি সংগ্রহ করা শুরু করতে পারেন, যেগুলি অনুরোধের অংশে JSON হিসাবে নিম্নলিখিত শেষ পয়েন্টগুলিতে একটি POST অনুরোধ হিসাবে পাঠানো হয়৷

  • ডিবাগ রিপোর্ট - context-origin/.well-known/private-aggregation/debug/report-shared-storage
  • রিপোর্ট - context-origin/.well-known/private-aggregation/report-shared-storage

একবার রিপোর্ট সংগ্রহ করা হলে, আপনি স্থানীয় টেস্টিং টুল ব্যবহার করে পরীক্ষা করতে পারেন বা সমষ্টিগত রিপোর্ট পেতে বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট সেট আপ করতে পারেন।

আপনার মতামত শেয়ার করুন

আপনি এপিআই এবং গিটহাবে ডকুমেন্টেশনে আপনার প্রতিক্রিয়া শেয়ার করতে পারেন।