ایک ورژن شامل کریں جو اس بات کی نشاندہی کرتا ہے کہ جامد مسل کا کیش شدہ پرانا ورژن استعمال ہونے سے بچنے کے لئے تازہ ترین ہے
چونکہ اگلا مرحلہ طویل ہے، اگر آپ صرف پروگرام دیکھنا چاہتے ہیں، تو براہ کرم اسے چھوڑ دیں۔
ماحول
- بصری سٹوڈیو
-
- ویژیول سٹوڈیو 2019
- ASP.NET کور
-
- 3.1 (ریزر صفحہ، ایم وی سی)
ویب صفحات پر مسلوں کی کیچنگ کے بارے میں
جب آپ ایچ ٹی ایم ایل، .js فائلوں (جاوا سکرپٹ) کے علاوہ ویب صفحہ پر جاتے ہیں، .css فائلیں (طرز ورق) اور تصویر ی فائلیں ڈسپلے اور عمل درآمد کے لیے گاہک کو ڈاؤن لوڈ کی جاتی ہیں۔ تاہم، کچھ تصویر فائلیں بڑی ہیں، اور انہیں ہر بار ڈاؤن لوڈ کرنا مہنگا پڑ سکتا ہے۔ اس کے علاوہ .js فائلیں اور .css فائلیں اکثر دوسرے صفحات پر استعمال کی جاتی ہیں اور انہیں ہر بار ڈاؤن لوڈ کرنے کی ضرورت نہیں ہوتی۔ ڈاؤن لوڈ کرنے کے بعد یہ مسلیں عارضی طور پر آپ کے براؤزر میں محفوظ کی جا سکتی ہیں۔ اسے کیچنگ کہا جاتا ہے۔
اگر مسل کیش ہو، مثال کے طور پر، جب آپ اسی صفحے پر جائیں تو ویب پیش کار سے ایچ ٹی ایم ایل ڈاؤن لوڈ کیا جاتا ہے۔ دیگر فائلوں کو دیکھا جاتا ہے اور مقامی طور پر ذخیرہ شدہ فائلوں کو ڈاؤن لوڈ کیے بغیر استعمال کرتے ہوئے چلایا جاتا ہے اگر کوئی کیش ہے۔ اس سے سرور پر لوڈ کم ہو جاتا ہے اور کلائنٹ مواصلاتی بینڈوڈتھ استعمال کیے بغیر تیز رفتاری سے صفحہ دیکھ سکتا ہے۔
کیچنگ کی وجہ سے پیدا ہونے والے مسائل
پیش کار اور کیش شدہ مسلیں پر رکھی گئی مسلیں ایک جیسی ہیں یا نہیں اس کا انحصار عام طور پر ایچ ٹی ایم ایل میں بیان کردہ فائل راہ پر ہوتا ہے۔ وہی مسل راستہ بنیادی طور پر کیش شدہ مسلیں ہیں۔ (دیگر شرائط بھی ہوسکتی ہیں، لیکن مسل کا راستہ یقینی ہے)
درج ذیل مسل راہ کی مثال ہے۔ ہیریف اور ایس آر سی کے وصف پیرامیٹرز لاگو ہوتے ہیں۔
<!-- スタイルシート (.css) -->
<link rel="stylesheet" href="/css/site.css" />
<!-- 画像ファイル -->
<img src="/image/sample.png" alt="サンプル画像" />
<!-- JavaScript (.js) -->
<script src="/js/site.js"></script>
تاہم یہ طرز عمل ایک مسئلہ ہو سکتا ہے۔
مثال کے طور پر، اگر کسی صارف کے پاس ورژن 1 جاوا سکرپٹ فائل ہے جب وہ پہلی بار اس تک رسائی حاصل کرتا ہے، تو ورژن 1 جاوا سکرپٹ فائل کیچ کی جاتی ہے۔ اس کے بعد سرور ورژن 2 جاوا سکرپٹ فائل شائع کرتا ہے۔ اگر جاوا سکرپٹ فائل کا راستہ وہی تھا جب صارف نے ایک ہی صفحے کا دورہ کیا تھا، تو سرور ورژن 2 جاوا سکرپٹ فائل ڈاؤن لوڈ کیے بغیر ورژن 1 جاوا سکرپٹ فائل کیچ کیا جا سکتا ہے۔ اس سے وہ نقائص پیدا ہو سکتے ہیں جن کا عوام ارادہ نہیں رکھتے۔
اس وقت، میں سمجھتا ہوں کہ آپ اکثر "کیشے کو حذف کرنے کی کوشش کریں" کو صارف کی طرف سے جوابی اقدامات میں سے ایک کے طور پر دیکھتے ہیں، لیکن یہ اس کی وجہ ہوسکتی ہے۔
پیش کار کی طرف کیشے کے مسائل سے کیسے نمٹا جائے
جیسا کہ اوپر ذکر کیا گیا ہے، کیا کیش شدہ فائلیں استعمال کی جاتی ہیں اس کا زیادہ تر انحصار فائل راہ (یو آر ایل) پر ہوتا ہے۔
لہذا، جب آپ کسی مسل کو اپ ڈیٹ کرتے ہیں، تو آپ نام مسل تبدیل کرکے اسے نئی مسل ڈاؤن لوڈ کرنے پر مجبور کرسکتے ہیں۔
مثال کے طور پر، اگر ایک ورژن 1 مسل
<link rel="stylesheet" href="/css/site.css" />
جب مسل تازہ کاری ورژن 2
<link rel="stylesheet" href="/css/site2.css" />
سائٹ 2 کلائنٹ کی طرف .css ہے۔
تاہم، اگر آپ یہ دستی طور پر کرتے ہیں، تو یہ بوجھل اور غلطی کا شکار ہو سکتا ہے راستے تبدیل کرنے اور جسمانی فائلوں کا نام تبدیل کرنے کا خطرہ ہے۔
مسل راہ میں طلب پیرامیٹر شامل کریں
ویب کے کام کرنے کا طریقہ آپ کو راستے کے بعد کلیدوں اور اقدار کے امتزاج کے ساتھ طلب پیرامیٹرز شامل کرنے کی اجازت دیتا ہے۔ کلائنٹ کیچنگ میکانزم میں، چاہے جسمانی فائلیں ایک جیسی ہی کیوں نہ ہوں، اگر طلب پیرامیٹرمختلف ہوں تو انہیں علیحدہ فائلوں کے طور پر تسلیم کیا جائے گا۔ طلب پیرامیٹر وہ اقدار ہیں جن کا کوئی مطلب نہیں ہے اگر ان میں اضافہ کیا جائے تو بھی استعمال کا کوئی مقصد نہیں ہے۔
طلب پیرامیٹرز کو درج ذیل وضع میں راستے پر ضم کیا جا سکتا ہے:
<!-- クエリパラメータなし -->
<link rel="stylesheet" href="/css/site.css" />
<!-- クエリパラメータあり -->
<link rel="stylesheet" href="/css/site.css?key=value" />
اس میکانزم کو استعمال کرتے ہوئے، آپ کو راستہ تبدیل کرنے کی ضرورت ہے، لیکن آپ کو جسمانی فائل کا نام تبدیل کرنے کی ضرورت نہیں ہے۔
پروگرام میں طلب پیرامیٹرخود بخود شامل کریں (بری مثال)
پروگرام میں یہ طلب پیرامیٹر خود بخود شامل کرکے، اگر آپ جامد مسل تبدیل کرتے ہیں تو آپ کو دستی طور پر مسل کا راستہ تبدیل کرنے کی ضرورت نہیں ہے۔
ایک آسان مثال یہ ہے کہ جب صارف ویب صفحہ تک رسائی حاصل کرے تو پیرامیٹرز طلب کرنے کے لیے موجودہ وقت کا اضافہ کریں۔ یہ بہت آسان ہے کیونکہ میرے خیال میں آپ کسی بھی پروگرامنگ زبان میں ایک سطر میں لکھ سکتے ہیں۔ میرے خیال میں نسل کی مثال اس طرح نظر آتی ہے:
<link rel="stylesheet" href="/css/site.css?20210223120000" />
تاہم، اس کا نقصان یہ ہے کہ کیچنگ کا فائدہ بالکل کھو جاتا ہے۔ جب بھی آپ ویب پیج پر جاتے ہیں تو راستہ تبدیل ہو جاتا ہے، حالانکہ یہ وہی فائل ہے جو پچھلے صفحے کی ہے۔ چونکہ اسے ایک علیحدہ مسل کے طور پر تسلیم کیا جاتا ہے، اس لیے ہر بار پیش کار سے سی ایس فائلیں ڈاؤن لوڈ کی جاتی ہیں۔ فائلوں کے پرانے ورژن اب استعمال نہیں کیے جائیں گے، لیکن یہ صرف کیچنگ خصوصیات کا استعمال نہ کرنے کے برابر ہے۔
ASP.NET ورژن کنٹرول کور میں طلب پیرامیٹرز شامل کرکے
علت کوئی قبل از ASP.NET کور اس کیچنگ مسئلے کا معیاری حل فراہم کرتا ہے۔
آپ کو صرف اس ٹیگ میں ایک وصف شامل کرنے کی ضرورت ہے جو مسل کے راستے کو درج ذیل طور پر بیان asp-append-version="true"
کرتا ہے:
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
<img src="/image/sample.png" asp-append-version="true"/>
<script src="~/js/site.js" asp-append-version="true"></script>
اگر آپ ویب پر شائع ہونے کے بعد واقعی صفحہ ملاحظہ کریں تو یہ درج ذیل کے طور پر پھیل جائے گا:
<link rel="stylesheet" href="/css/site.css?v=S2ihmzMFFc3FWmBWsR-NiddZWa8kbyaQYBx2FDkIoHs" />
<img src="/image/sample.png?v=Z0tUqQmLt_3L_NSzPmkbZKxL8cMxglf08BwWb5Od5z4" />
<script src="/js/site.js?v=dLGP40S79Xnx6GqUthRF6NWvjvhQ1nOvdVSwaNcgG18"></script>
ایک بے ترتیب سٹرنگ کو ضم کیا جاتا ہے، لیکن جب بھی رسائی حاصل کی جاتی ہے تو یہ تبدیل نہیں ہوتا۔ یہ سٹرنگ ایک ہیش قدر ہے اور حوالہ شدہ مسل کے مشمولات کی بنیاد پر تیار کی جاتی ہے۔ اس لیے جب تک مسل کے مشمولات تبدیل نہیں ہوتے اسی سٹرنگ کو پیدا کیا جاتا ہے۔ اگر مسل کے مشمولات تبدیل ہو جائیں تو اسے ایک نئی سٹرنگ میں تبدیل کر دیا جائے گا۔
یہ اس بات کو یقینی بناتا ہے کہ کیش شدہ فائلوں کو ترجیح دی جاتی ہے کیونکہ اگر فائلیں ایک جیسی ہیں تو راستے ایک جیسے ہیں۔ جیسے جیسے مسل اپ ڈیٹ ہوتی ہے، راستہ تبدیل ہوتا جاتا ہے، تاکہ آپ نئی فائل ڈاؤن لوڈ اور استعمال کر سکیں۔
asp-append-version="true"
ویسے یہ وصف صرف استمرابی فائلوں کے لیے معیاری ہے جو کہ ڈبلیو روٹ فولڈر میں رکھی گئی ہیں۔
نوٹ کریں کہ جب دوسری فائلوں پر سیٹ کیا جائے تو بے ترتیب تاروں کو توسیع نہیں دی جاتی۔
نمونہ پروگرام کے بارے میں
طے شدہ پروجیکٹ سانچہ .js سائٹ asp-append-version
سانچا۔
سائٹ.css اس کے ساتھ منسلک نہیں asp-append-version
ہے.
نمونہ پروگرام _Layout.cshtml
فائل کی سائٹ.js اور سائٹ.css کا اضافہ کرتا asp-append-version
ہے۔
ہم ایک حوالہ کے طور پر آئی ایم جی ٹیگ بھی شامل کر رہے asp-append-version
ہیں۔