জেএস কোডটি এইচটিএমএল ফাইলে রাখা বা কোনও বাহ্যিক ফাইলে রাখা ভাল কি?


16

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

উত্তর:


26

আপনার জেএস কোডটি একটি পৃথক ফাইলে রাখা উচিত কারণ এটি পরীক্ষা করা এবং বিকাশ করা সহজ করে। আপনি কোডটি কীভাবে পরিবেশন করবেন সে প্রশ্নটি আলাদা বিষয়।

  • এইচটিএমএল এবং জেএসকে আলাদাভাবে পরিবেশন করার সুবিধা রয়েছে যে কোনও ক্লায়েন্ট জেএসকে ক্যাশে করতে পারে। এটির জন্য আপনাকে উপযুক্ত শিরোনাম প্রেরণ করা প্রয়োজন যাতে ক্লায়েন্টটি প্রতিবার একটি নতুন অনুরোধ প্রকাশ না করে। আপনি যদি কোনও আপডেট সম্পাদন করতে চান এবং ক্লায়েন্টের ক্যাশেগুলি অবৈধ করতে চান তবে ক্যাশিং সমস্যাযুক্ত। একটি পদ্ধতি হ'ল ফাইল নেমে কোনও সংস্করণ নম্বর অন্তর্ভুক্ত করা, যেমন /static/mylibrary-1.12.2.js

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

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

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

লোড বার হ্রাস করার অন্যান্য কৌশলগুলির মধ্যে রয়েছে

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

    মিনিফিকেশনের সাথে সম্পর্কিত হ'ল আপনার সমস্ত জেএস ফাইলকে একক ফাইলে একত্রিত করার অভ্যাস। এটি প্রয়োজনীয় অনুরোধের সংখ্যা হ্রাস করে।

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

এই কৌশলগুলি চিত্রের মতো অন্যান্য সংস্থানগুলিতেও প্রযোজ্য।

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

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

5

আমি একটি পৃষ্ঠার ওয়েবসাইট ডিজাইন করছি

আপনার যদি আক্ষরিকভাবে একটি পৃষ্ঠা থাকে তবে হ্যাঁ, এক ফাইলের সমস্ত কিছু পরিবেশন করা (পারফরম্যান্সের দিক থেকে) ভাল ... স্টাইলশিট, জাভাস্ক্রিপ্ট এবং এমনকি চিত্রগুলি (ডেটা-ইউআরআই সহ ছোট চিত্রগুলি)। এটি বাহ্যিক সংস্থানগুলি তুলনামূলকভাবে ধীর গতিতে পুনরুদ্ধার করতে প্রয়োজনীয় অতিরিক্ত HTTP অনুরোধগুলি সরিয়ে দেয়।

ফলাফলের ফাইলটি পরিবেশন করার আগে গিজিপ করা উচিত, যা সর্ব-পাঠ্য প্রতিক্রিয়ার আকারকে ব্যাপকভাবে হ্রাস করবে।

তথ্যের-ইউআরআই এবং ব্রাউজারের সামঞ্জস্যের আকারের সীমাবদ্ধতার কারণে আপনার পাতার বাহিরে বড় আকারের চিত্র থাকার কথা বিবেচনা করা উচিত। (উদাঃ আই 8 এর 32KB এর একটি সীমা রয়েছে, যা বেস 64 এর এনকোডিংয়ের প্রকৃতির কারণে প্রায় 23 কেবি এর প্রকৃত ফাইল আকারের সমান)

আমি কি কোডের জন্য ব্যবহারকারীদের অনুরোধগুলি অস্বীকার করার অনুমতিগুলি পরিবর্তন করতে পারি, তবে এইচটিএমএল পৃষ্ঠাটি এখনও কোডটি কল করতে পারে?

না। সর্বোপরি কোডটি নৈমিত্তিক পর্যবেক্ষকের কাছ থেকে "আড়াল" করার জন্য অবহেলা করা যেতে পারে তবে এটি কোনও প্রকৃত সুরক্ষা দেয় না।


1
নেং ভোট কেন? যদিও উন্নয়ন এবং একাধিক পৃষ্ঠাগুলির পৃথক / বাহ্যিক ফাইল থাকা ভাল, এই ক্ষেত্রে ওপি বিশেষত একটি "একটি পৃষ্ঠার ওয়েবসাইট" এবং এটি "লোড করা দ্রুত" কিনা তা সম্পর্কে জিজ্ঞাসা করছে। এই দৃষ্টিতে HTTP অনুরোধগুলি হ্রাস করা একটি অগ্রাধিকার হওয়া উচিত। আপনি এখনও একাধিক ফাইলের সাথে বিকাশ করতে পারেন (এবং হওয়া উচিত) তবে এটি প্রশ্ন করা হচ্ছে না।
মিঃ হোয়াইট

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

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

4

ক্লায়েন্ট সাইড জেএস কোডটি ব্রাউজারের দ্বারা দেখতে হবে (এটি যদি পৃষ্ঠাটিতে সরাসরি জেএস ব্যবহারের প্রয়োজন হয়) - এর অর্থ এটি ব্রাউজারের দ্বারা মৌমাছি ডাউনলোড করতে হবে।

পৃষ্ঠাটিতে এটি ডাউনলোড করতে না পারলে আপনার কোনও ব্রাউজার জেএস ব্যবহার করতে পারে না।

সেই ক্ষেত্রে, আপনি জেএসকে ইনলাইন করেছেন বা কোনও ফাইলে রাখলে এটি কোনও পার্থক্য তৈরি করে না, যদিও প্রচলিত অনুশীলন হচ্ছে জেএস ফাইল ব্যবহার করা (এটির জন্য উদ্বেগের বিভাজন)।

আপনার যদি এমন কোড থাকে যা আপনি ব্রাউজারের মাধ্যমে প্রকাশ করতে চান না, আপনাকে সার্ভার সাইড কোড ব্যবহার করতে হবে (নোড.জেএস, পিএইচপি, পার্ল, এসপ নেট, জেএসপি - অনেকগুলি বিকল্প রয়েছে বলে বলুন) এবং এটির সাথে ইন্টারঅ্যাক্ট করতে হবে ব্রাউজার থেকে - হয় প্রাথমিক পৃষ্ঠা লোড বা এজেএক্স ব্যবহার করে ।


2

ঠিক আছে এটি কোডের পরিমাণের উপর নির্ভর করে এবং আপনি কেবল একটি কোডার বিপরীতে প্রোগ্রামার / সফ্টওয়্যার ইঞ্জিনিয়ার হওয়া সম্পর্কে আপনি কতটা গুরুতর। আমি গুচ্ছ ডিজাইনারদের সাথে কাজ করেছি যারা কোডের সংক্ষিপ্ত স্নিপেটগুলি সরাসরি এইচটিএমএল-তে রেখেছিলেন এবং আমি ক্রিংড করার সময় - এটি আসলে কাজ করে।

যদিও এটি এমন কিছু না যা আমি নিজেই করব এবং আপনি যদি সফ্টওয়্যার বিকাশের সর্বোত্তম অনুশীলনগুলি জানতে চান তবে আমি আপনাকে দৃ .়ভাবে বাইরের *.jsফাইলের সমস্ত কিছু পুজানোর এবং এটি <script>ট্যাগের মাধ্যমে লোড করার পরামর্শ দিচ্ছি ।

আপনার দ্বিতীয় দফার বিষয়ে, আপনি নিজের কোড দেখতে ব্যবহারকারী বা ব্রাউজারটিকে অস্বীকার করতে পারবেন না, এমন একটি নাম রয়েছে obfuscationযা আপনার কোডটি পড়তে আরও শক্ত করে তুলবে, তবে কর্মক্ষমতা হ্রাস পাবে।


1

আমার জেএস কোডের জন্য বাহ্যিক ফাইল তৈরি করা ভাল, বা কেবল এটি এইচটিএমএল কোডে রেখে দেওয়া ভাল?

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

কম ফাইল পরিবেশন করা ভাল কারণ ক্লায়েন্টের হাতল করার জন্য কম HTTP অনুরোধ থাকবে।

পৃষ্ঠায় এটি লোড করার জন্য দ্রুত রাখছে?

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

আমি কি কোডের জন্য ব্যবহারকারীদের অনুরোধগুলি অস্বীকার করার অনুমতিগুলি পরিবর্তন করতে পারি, তবে এইচটিএমএল পৃষ্ঠাটি এখনও কোডটি কল করতে পারে?

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


0

এইচটিএমএল এবং জাভাস্ক্রিপ্ট সামগ্রী আলাদা আলাদা ফাইলে আলাদা করার অনেক সুবিধা:

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

1
এই অফারটি কোন কিছুরই সৃষ্টি পয়েন্ট উপর সারগর্ভ বলে মনে হচ্ছে না এবং পূর্বে 6 উত্তর ব্যাখ্যা
মশা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.