আইআইএস 7 ক্যাশে-নিয়ন্ত্রণ


98

আমি এমন কিছু করার চেষ্টা করছি যা আমি ভেবেছিলাম মোটামুটি সহজ হবে। আইআইএস 7 পান ক্লায়েন্টদের বলতে তারা নির্দিষ্ট সময়ের জন্য আমার সাইটে সমস্ত চিত্র ক্যাশে করতে পারে, আসুন 24 ঘন্টা বলি।

আমি http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx এ পদক্ষেপটি চেষ্টা করেছি তবে কোনও ফলসই হয়নি। 304s ফিরিয়ে দিয়ে সার্ভারে যাওয়ার অনুরোধগুলি এখনও পাই।

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

উত্তর:


128

আপনি যদি ক্যাশে-নিয়ন্ত্রণ শিরোনাম সেট করতে চান তবে দুঃখের সাথে আইআইএস 7 ইউআই তে কিছুই করার নেই।

তবে আপনি যে ওয়েব ফোল্ডার বা সাইটের সেট করতে চান তার মূলটিতে এই ওয়েবকনফিগটি ফেলে দিতে পারেন:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

এটি ক্লায়েন্টকে সেই ফোল্ডারে এবং সমস্ত সাবফোল্ডারগুলিতে 7 দিনের জন্য সামগ্রী ক্যাশে রাখতে জানাবে।

আপনি এটির মাধ্যমে আইআইএস 7 টি ডাটাবেস সম্পাদনা করে এটিও করতে appcmd.exeপারেন:

\ উইন্ডোজ \ system32 \ inetsrv \ appcmd.exe 
  "ডিফল্ট ওয়েব সাইট / ফোল্ডার" কনফিগার করুন 
  -সেকশন: system.webServer / স্ট্যাটিক কনটেন্ট 
  -ক্লিয়েন্টক্যাচি.ক্যাচ কন্ট্রোলমোড: ইউজম্যাক্সএজ

\ উইন্ডোজ \ system32 \ inetsrv \ appcmd.exe 
  "ডিফল্ট ওয়েব সাইট / ফোল্ডার" কনফিগার করুন 
  -সেকশন: system.webServer / স্ট্যাটিক কনটেন্ট 
  -ক্লিয়েন্টক্যাচি.একটি নিয়ন্ত্রণ ম্যাক্সএজ: "7.00: 00: 00"

5
স্ট্যাটিক কনটেন্ট কনফিগারেশন উপাদানটির জন্য এমএসডিএন ডকুমেন্টেশনটি এখানে পাওয়া যাবে: msdn.microsoft.com/en-us/library/ms689443.aspx
মিলান গার্ডিয়ান

4
নীচে ৩A০ আওয়ারওয়াকের পোস্টগুলি দেখুন, আইআইএস
চ্যাডটিতে

ঠিক যেমন একটি তথ্য: এই সেটিংটি অন্তর্নির্মিত ডেভলপমেন্ট সার্ভারের (কমপক্ষে ভিএস 2010 এসপি 1 এর) কোনও প্রভাব ফেলেছে বলে মনে হচ্ছে। কেন এটি কাজ করে না সন্দেহ হলে, আইআইএস-এর সাথে চেক করুন।

6
হাই জেফ, আপনি কীভাবে বিভিন্ন মাইম-প্রকার বা ফাইল এক্সটেনশনের জন্য আলাদা Cache-Control( max-age) শিরোনাম পরিবেশন করবেন তা সম্পর্কে সচেতন ?
জ্যাস্পার

@ জেফ অ্যাটউড সম্ভবত আপনি আমাকে সাহায্য করতে পারেন এটি দেখুন: stackoverflow.com/questions/57990579/…
সাফল্য ম্যান

116

এটা সত্য জেফ নয়।

আপনাকে কেবল আপনার আইআইএস 7 ম্যানেজার ইউআইয়ের মধ্যে একটি ফোল্ডার নির্বাচন করতে হবে (যেমন চিত্র বা ইভেন্ট ডিফল্ট ওয়েব অ্যাপ্লিকেশন ফোল্ডার) এবং তারপরে "এইচটিটিপি রেসপন্স শিরোনাম" ক্লিক করুন। তারপরে আপনাকে ডান ফলকে "কমন কমন শিরোনাম সেট করুন .." এ ক্লিক করতে হবে এবং "ওয়েবসাইটের মেয়াদ শেষ করুন" নির্বাচন করতে হবে। সেখানে আপনি টেক্সটবক্সে "পরে:", "24" প্রবেশ করে এবং কম্বোবক্সে "ঘন্টা" চয়ন করে 24 ঘন্টা সর্বাধিক বয়স কনফিগার করতে পারেন।

ওয়েবকনফিগ এন্ট্রি সম্পর্কিত আপনার প্রথম অনুচ্ছেদটি ঠিক। আমি ক্যাশে নিয়ন্ত্রণ শিরোনামটিকে "সর্বজনীন" বা সে ক্ষেত্রে যা যা প্রয়োজন প্রয়োজন তা সেট করতে আমি ক্যাশে নিয়ন্ত্রণ কাস্টম-বৈশিষ্ট্য যুক্ত করব।

আপনি অবশ্যই প্রয়োজন হিসাবে ওয়েবকনফিগ এন্ট্রি (বা ফাইল) সরবরাহ করে এটি অর্জন করতে পারেন।

সম্পাদনা: একটি বিভ্রান্তিকর বাক্য অপসারণ :)


4
এই সেটিংয়ের জন্য ইউআই ভয়ঙ্কর। তবে কীভাবে সেখানে যাবেন তা বোঝানোর জন্য ধন্যবাদ! +1
বিলি কুভার

এই ইন্টারফেসটি জেফের পোস্টের মতো একই কনফিগারেশন সহ একটি ওয়েবকনফিগ তৈরি করে। জেনে ভালো লাগল! ধন্যবাদ!
র‌্যান্ডি মরিস

4
পোস্ট 360 আওয়ারওয়াকের জন্য ধন্যবাদ। আপনি কীভাবে বিভিন্ন মাইম-প্রকার বা ফাইল এক্সটেনশনের জন্য আলাদা Cache-Control( max-age) শিরোনাম পরিবেশন করবেন সে সম্পর্কে সচেতন ?
জ্যাস্পার

4
@ য্যাস্পার: আপনি উদাহরণস্বরূপ এটি ফোল্ডার প্রতি সেট করতে পারেন। যদি আপনি কোনও ফোল্ডারে সাব-ফোল্ডারগুলিতে ক্যাশে-নিয়ন্ত্রণ সেট করে থাকেন তবে সেটিংস উত্তরাধিকার সূত্রে প্রাপ্ত হবে তবে আপনি এটিকে আবারও ওভাররাইড করতে পারেন। এমনকি আপনি এটি প্রতি ফাইল-ভিত্তিতে করতে পারেন। আপনি যদি আইআইএস কনসোল অ্যাক্সেস করতে না পারেন তবে আপনি এটি ওয়েবকনফিগের মাধ্যমেও করতে পারেন। পরেরটির জন্য এই পোস্ট দেখতে stackoverflow.com/questions/2195266/...
360Airwalk

28

আমি এটি ব্যবহার করি

<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="500.00:00:00" />
</staticContent>

পাবলিক ক্যাশে-নিয়ন্ত্রণ শিরোনাম সহ 500 দিনের জন্য স্থির সামগ্রীকে ক্যাশে রাখতে।


10
প্রস্তাবিত অনুশীলনটি 1 বছর মূলত 365 দিন আর হয় না।
অ্যানিচো

5
500 দিন, খারাপ একজন বোঝায় যা RFC নিয়ম বলার 1 এর অধিক বছরের ক্যাশে সেট না সম্পর্কে নিবন্ধ আলোচনা যে developers.google.com/speed/docs/best-practices/caching কি ভবিষ্যতে এটি চেয়ে বেশি এক বছরের সেট না কারণ এটি আরএফসি নির্দেশিকা লঙ্ঘন করে।
ফক্সনথেরক

@ ফক্সন্টেরক কোনওভাবেই আপনি অনুশীলন হওয়ার কারণে 365 দিনের বেশি আরএফসির নিয়মকে প্রমাণ করতে পারবেন? ডকুমেন্টেশনে
এটির

@ এলমার হয়তো আপনি আমাকে সাহায্য করতে পারেন এটি দেখুন: stackoverflow.com/questions/57990579/…
সাফল্য ম্যান

19

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

পরিবর্তে অন্য কোথাও নেভিগেট করার চেষ্টা করুন এবং তারপরে আবার নেভিগেট করার চেষ্টা করুন।

আপনি বেশিরভাগ ব্রাউজারে f5 টিপতে সিটিআরএল ধরে ধরে 304 পেরিয়ে রিফ্রেশটি জোর করতে পারেন।


18

আমার সম্পাদনাটি আবার ঘুরিয়ে দেওয়ার সাথে সাথে এলমারের উত্তরকে পরিপূরক করা হচ্ছে।

সার্বজনীন ক্যাশে-নিয়ন্ত্রণ শিরোনামের সাহায্যে 365 দিনের জন্য স্থিতিশীল বিষয়বস্তু ক্যাশে করতে, IIS নিম্নলিখিত দিয়ে কনফিগার করা যেতে পারে

<staticContent>
    <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>

এটি এর মতো একটি শিরোনামে অনুবাদ করবে:

Cache-Control: public,max-age=31536000

নোট করুন যে সর্বাধিক বয়সটি সেকেন্ডে একটি ব-দ্বীপ, এটি একটি ইতিবাচক 32 বিট পূর্ণসংখ্যার দ্বারা প্রকাশিত হয়েছে যেমনটি আরএফসির 2616 ধারা 14.9.3 এবং 14.9.4 এ বলা হয়েছে । এটি সর্বোচ্চ 2 ^ 31 বা 2,147,483,648 সেকেন্ডের (68৮ বছরের বেশি) প্রতিনিধিত্ব করে। তবে ক্লায়েন্ট এবং সার্ভারগুলির মধ্যে আরও ভালভাবে সামঞ্জস্যতা নিশ্চিত করতে আমরা প্রস্তাবিত সর্বোচ্চ 365 দিন (এক বছর) গ্রহণ করি।

অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি সমস্ত স্থিতিশীল সামগ্রীর জন্য আপনার সাইটের ওয়েবকনফাইগেও এই নির্দেশাবলী ব্যবহার করতে পারেন। বিকল্প হিসাবে, আপনি এটি কেবলমাত্র নির্দিষ্ট স্থানে থাকা সামগ্রীর জন্যও ব্যবহার করতে পারেন (নমুনায়, "সিডিএন" ফোল্ডারে থাকা সামগ্রীর জন্য 30 দিনের পাবলিক ক্যাশে):

<location path="cdn">
   <system.webServer>
        <staticContent>
             <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00"/>
        </staticContent>
   </system.webServer>
</location>

লুসিয়ানো, আমি আপনার পদ্ধতিটি ব্যবহার করে আমার ছবিগুলি ক্যাশে করার চেষ্টা করছি। এখন যখন আমি এইচটিটিপিফক্স ব্যবহার করে বিশ্লেষণ করি তখন প্রতিটি চিত্রের জন্য 2 টি অনুরোধ করা দেখি। 1. প্রথমটি (NS_BINDING_ABORTED) ত্রুটির সাথে একটি বাতিল হওয়া ফলাফল দেয় 2. দ্বিতীয় অনুরোধটি একটি ক্যাশেড চিত্র। কোন চিন্তা?
মিথিল

1

একটি সহজ উপায় রয়েছে: ১. ওয়েবসাইটের ওয়েবকনফিগ ব্যবহার করে ২. "স্ট্যাটিক কনটেন্ট" বিভাগে নির্দিষ্ট ফাইল এক্সটেনশন সরান এবং মাইম্যাপ 3 যোগ করুন "ক্লায়েন্টক্যাচ" যুক্ত করুন

<configuration>
  <system.webServer>
    <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    <staticContent>
      <remove fileExtension=".ipa" />
      <remove fileExtension=".apk" />
      <mimeMap fileExtension=".ipa" mimeType="application/iphone" />
      <mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" />
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="777.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.