আমি কীভাবে আইআইএস 7 থেকে ইটাগ শিরোনামগুলি সরিয়ে ফেলব?


83

প্রতি উচ্চ কার্যকারিতা ওয়েব সাইটের জন্য ইয়াহু এর সর্বোত্তম কার্যাভ্যাস , আমি আমার হেডার থেকে Etags অপসারণ চাই (আমি নিজে আমার সমস্ত ক্যাশে পরিচালনার করছি এবং Etags জন্য কোন প্রয়োজন নেই ... আর যখন / আমি খামারে স্কেল করার দরকার হয়, আমি সত্যিই তাদের যেতে চাই)। আমি উইন্ডোজ সার্ভার ২০০৮-এ আইআইএস running চালাচ্ছি Anyone আমি কীভাবে এটি করতে পারি যে কেউ জানেন?


এটি আইআইএস 8.0 এর জন্য কমপক্ষে এই পোস্টের দ্বিতীয় উত্তরে যেমন দেখানো হয়েছে তার জন্য কাজ করে: স্ট্যাকওভারফ্লো
আরবিটি

উত্তর:


39

আইআইএস Under এর অধীনে ইটাগ পরিবর্তন নম্বর (ইটাগের নিম্নলিখিতগুলির অংশ:) সর্বদা 0 তে সেট করা থাকে।

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

যেহেতু আপনি আসলে আইআইএস on এ ইটাগ শিরোনামকে দমন করতে পারবেন না এটি সম্ভবত সবচেয়ে ভাল হবে যে আপনি এটিকে একেবারেই ভাবেন না। আমি এখন পর্যন্ত সর্বাধিক দরকারী কনফিগারেশন নিয়মটি খুঁজে পেয়েছি যে "যদি ডিফল্ট কোনও কিছু না ভাঙে তবে এটিকে ছেড়ে দিন"।


4
আমি অন্য কারণে ইটাগ্সকে হত্যা করার জন্য প্রলুব্ধ করেছি: যদি আমি জিনিসগুলিকে দুর্বল করে না দেখি তবে আমি একক সার্ভারে আইআইএসকে দেখতে পাচ্ছি আমার ফাইলটি সত্ত্বেও ইটাগের প্রথম উপাদানটি (যেমন তথাকথিত "ফাইলটাইমস্ট্যাম্প") পরিবর্তন করে নিচ্ছে পরিবর্তিত। উদাহরণস্বরূপ, কোনও ফাইলের সর্বশেষ সংস্করণটি ব্রাউজারে থাকবে, ব্রাউজারটি 'যদি-না-ম্যাচ: "01cc3a8acccc1: 0"' / 'যদি-সংশোধিত-যেহেতু: শুক্র, 06 জানুয়ারী 2012 00:32: 24 GMT ', এবং IIS' ETag: "b6baeea8acccc1: 0" '/' সর্বশেষ-পরিবর্তিত: শুক্র, 06 জানুয়ারী 2012 00:32:24 GMT 'দিয়ে প্রতিক্রিয়া জানাবে। এগুলি foo.js? রেভ = এক্সএক্সএক্স এর মতো জেএস ফাইলগুলি / URL, প্রতিবার একই xxx পাস করে।
ক্রিস

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

ধন্যবাদ আপনি যতদূর জানেন, কেবলমাত্র ফাইল টাইমস্ট্যাম্পের ভিত্তিতে ইটাগের "ফাইলটাইম স্ট্যাম্প" অংশটিই অনুরোধ করা হচ্ছে, এবং মেশিন / প্রক্রিয়া / অ্যাপ্লিকেশনের অবস্থা সম্পর্কে কিছুই নয়?
ক্রিস

@ ক্রিস: যতদূর আমি জানি হ্যাঁ ই-ট্যাগ কেবলমাত্র ফাইলের সময়ের উপর ভিত্তি করে। আমি আমার সার্ভারের সাথে ফিড করার চেষ্টা করেছি এবং আপনি যে সমস্যাটি দেখছেন তা পুনরুত্পাদন করতে পারি না।
অ্যান্থনি ডাব্লু জোন্স

আমি জানি না যে একটি সার্ভারকে অ-সংশোধনযোগ্য করা বুদ্ধিমানের নীতি। পাশাপাশি। আমি সুদূর ভবিষ্যতের মেয়াদ পরীক্ষা করছি এবং আমি কেবল কোনও HTTP 304 প্রতিক্রিয়া চাই না - কখনও। আমি চাই যে জিনিসগুলি খুব দীর্ঘ সময়ের জন্য ক্যাশে থাকবে কারণ আমি জানি যে এই সম্পদগুলি খুব কমই পরিবর্তিত হয়। এইচটিটিপি স্পেস আরএফসি 2616 সহ সেখানে প্রচুর আইইটিএফ ডকুমেন্টেশন রয়েছে যা এটি ব্যাখ্যা করে এবং এটি সাইটের প্রশাসক হিসাবে করা উচিত কারণ সেই ব্যক্তি তাদের পরিস্থিতি আরও ভালভাবে জানতে পারবেন। বাস্তবায়নকারীরা সর্বদা "বন্য" -এ কী ঘটছে তা সন্ধান করে।
জোশ রবিনসন

33

আপনি ভাববেন যে ওয়েবকনফাইগে এটি করা আইআইএস in-তে ইটি্যাগগুলি অক্ষম করার জন্য কাজ করবে। তবে স্নিফার ট্রেস নিশ্চিত করে যে ETag যেভাবেই নামানো হয়েছে।

<httpProtocol>
    <customHeaders>
        <remove name="ETag" />
    </customHeaders>
</httpProtocol>

ফাঁকা ব্যবহার করাও কাজ করে না। ETag যেভাবেই নামানো হয়।

<httpProtocol>
    <customHeaders>
        <add name="ETag" value="" />
    </customHeaders>
</httpProtocol>

অন্যান্য সাইটগুলির পরামর্শ অনুসারে ফাঁকা কোটায় ইটাগ সেট করা কার্যকর হয় না।

<httpProtocol>
    <customHeaders>
        <add name="ETag" value="&quot;&quot;" />
    </customHeaders>
</httpProtocol>

আরও বেশি ইটাগা নামার কারণ দেয়:

ইটাগ: "8ee1ce1acf18ca1: 0", ""

উপসংহারে, আইআইএস on-তে ETag হত্যার কাজ সম্পর্কে আমি চেষ্টা বা ভাবতে পারি না কিছুই, কমপক্ষে কাস্টম মডিউলগুলি না লিখে ইত্যাদি


4
আমি এই জেফের নিশ্চয়তা দিইনি, তবে এটি এমন হতে পারে কারণ ওয়েবসাইট পর্যায়ে HTTP প্রোটোকল বিভাগটি লক করা আছে। আমি যখন কেসটি প্রোগ্রামের মাধ্যমে ওয়েবকনফিগ ফাইলের মাধ্যমে iis7 সংক্ষেপনের স্তরটি সেট করার চেষ্টা করছিলাম তখন আমি এই কেসটি পেয়েছি । আমাকে অবশেষে রুট সার্ভার স্তরে সেই বিভাগটি আনলক করতে হয়েছিল। এই বিভাগে একই সমস্যা হতে পারে? (আমি সত্যই চাই যে সমস্ত আইআইএস সেটিংস
জিইউআইয়ের

4
@ পিওর.ক্রোম: উপরের জেফের দ্বিতীয় প্রয়াসের সাথে মিলিত আনলকটি বেশিরভাগ ক্ষেত্রে আমার পক্ষে কাজ করছে বলে মনে হচ্ছে ... চিত্রের সামগ্রীর জন্য (অবশ্যই!) ব্যতীত। : - section <বিভাগগ্রুপ নাম = "system.webServer"> <বিভাগের নাম = "HTTP প্রটোকল" ওভাররাইডমোডফায়াল্ট = "অনুমতি দিন" /> </ সেকশনগ্রুপ> [...] <http প্রোটোকল> <কাস্টমহাইডার্স <ক্লিয়ার /> <যোগ নাম = "ইটাগ" মান = "" /> </customHeeda> </http প্রোটোকল> সুতরাং কমপক্ষে এখানে একটি আংশিক সমাধান বলে মনে হচ্ছে ।
জেরুয়েট

@ জেয়ার আপনার যথাযথ উত্তর হিসাবে এটি যোগ করা উচিত
জেফ

4
@ জারজিট আমার পক্ষে কাজ করে না (উইন্ডোজ সার্ভার ২০০৮ আর ২, আইআইএস
.5.৫

4
যেখানে অন্য সমস্ত সমাধান ব্যর্থ হয়েছিল বা আমার জন্য প্রয়োগ করা সম্ভবপর ছিল না, সেখানে একটি সরল পুনর্লিখনের নিয়ম কাজ করেছে। আমার উত্তর দেখার stackoverflow.com/a/18025228/705198
AndrewPK

22

আমি এটি পরিচালনা করতে একটি কাস্টম http মডিউল লিখেছি। এটি যতটা শোনাচ্ছে ততটা খারাপ নয়। কোডটি এখানে:

using System;
using System.Web;

namespace StrongNamespace.HttpModules
{
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication application)
        {
            application.PostReleaseRequestState += new EventHandler(application_PostReleaseRequestState);

        }

        public void Dispose()
        {
        }

        void application_PostReleaseRequestState(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
            HttpContext.Current.Response.Headers.Remove("ETag");
        }
    }
}

আপনি চাইবেন এমন ওয়েবকনফাইগের পরিবর্তনগুলি এখানে:

<configuration>
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <remove name="X-Powered-By"/>
            </customHeaders>
        </httpProtocol>
        <modules>
            <add name="CustomHeaderModule" type="StrongNamespace.HttpModules.CustomHeaderModule"/>
        </modules>
    </system.webServer>
</configuration>

4
+1, তবে এটি কেবল ওয়েবসাইটটির জিজ্ঞাসিত সংস্থানগুলিতে আবশ্যক, ফ্যাভিকনগুলির মতো জিনিস নয়
ব্র্যাড

13

আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন, তবে সমাধানের সন্ধান করতে গিয়ে আমি এটি পেরিয়ে এসেছি। আমি মনে করি যে আমি এই প্রশ্নের জন্য পোস্ট করেছি এমন একটি যুক্তিসঙ্গত উত্তর পেয়েছি ।


এটি পরিবর্তন করার পরে আপনি যতদিন আপনার ক্যাশে সাফ করবেন ততক্ষণ কাজ করার নিশ্চয়তা দিয়েছেন;)
পিটার 3

7

আমাদের এই সমস্যাটি ছিল এবং এমনকি আইআইএস in-তে একটি ফাঁকা কাস্টম ইটাগ শিরোনাম সেট করা সমস্ত ফাইলের জন্য কাজ করে না (উদাহরণস্বরূপ চিত্র ফাইলগুলি)। আমরা একটি HTTPModule তৈরি শেষ করেছি যা স্পষ্টতই ETag শিরোনামটিকে সরিয়ে দেয়।


6

হালনাগাদ: ইউআরএল পুনর্লিখন মডিউল প্রয়োজন ব্যবহারকারী @ ক্রিসবারার ধন্যবাদ

আইআইএস 6 এ এটি সহজ, আপনি 'ইটাগ' = "" এর জন্য একটি কাস্টম শিরোনাম যুক্ত করতে পারেন

আইআইএস In-তে, এই থ্রেডটি পড়ার পরে এবং কাস্টম HTTP মডিউলটি ব্যবহার না করেই এটি অসম্ভব বলে আবিষ্কার করার পরে, আমি পেয়েছি যে আপনি কেবল মাইক্রোসফ্টের ইউআরএল পুনর্লিখন মডিউল ইনস্টল করতে পারবেন এবং নিম্নরূপে একটি বহির্মুখী পুনর্লিখনের নিয়ম যুক্ত :

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

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


4
এই সমাধানটির জন্য এই কাস্টম মডিউলটি আইআইএস-এ ইনস্টল করা প্রয়োজন যদিও সঠিক?
সিবিআর

@ ক্রিসবারার হ্যাঁ এটি করেছে - দুঃখিত আমি এটি উল্লেখ করতে ব্যর্থ হয়েছি। উত্তর আপডেট হয়েছে।
অ্যান্ড্রু পি কে

4

যাইহোক, আপনি যখন আইআইএস 8 ব্যবহার করেন এটি সহজ

<element name="clientCache">
   <attribute name="cacheControlMode" type="enum" defaultValue="NoControl">
          <enum name="NoControl" value="0" />
          <enum name="DisableCache" value="1" />
          <enum name="UseMaxAge" value="2" />
          <enum name="UseExpires" value="3" />
  </attribute>
  <attribute name="cacheControlMaxAge" type="timeSpan" defaultValue="1.00:00:00" />
  <attribute name="httpExpires" type="string" />
  <attribute name="cacheControlCustom" type="string" />
  <attribute name="setEtag" type="bool" defaultValue="true" />
</element>

আইআইএস 8.0: ইটাগ ব্যবহার করা বা না করা


2

http://www.jesscoburn.com/archives/2008/10/02/quickly-configure-or-disable-etags-in-iis7-or-iis6/ এর একটি সুন্দর চিত্র নির্দেশিকা রয়েছে।

মূলত, আপনি ইটাগ নামে একটি কাস্টম প্রতিক্রিয়া শিরোনাম তৈরি করেন এবং এর মান খালি করে দেন।


আইআইএস On-তে, এটি কেবল তখনই আমার পক্ষে কাজ করেছিল যখন আমি কেবল দুটি ডাবল কোট না দিয়ে কোনও মান নির্ধারণ করি। উদাহরণস্বরূপ <http প্রোটোকল> <কাস্টমহাইডার্স <<নাম যোগ করুন = "ইট্যাগ" মান = "" /> << কাস্টমহাইডার্স </ http প্রোটোকল>
ডানকান

2

এইআইগ i, আইআইএস and এবং আইআইএস is.৫ এ ইটাগ এইচটিপি শিরোনাম কীভাবে সরিয়ে ফেলতে হয় তার এই ব্লগ পোস্টটি দেখুন

http://lightspeednow.com/blog/2010/05/21/iis-tutorial-how-to-completely-remove-etags-entity-tags-from-iis6-iis7-and-iis7-5/


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


1

আইআইএস In-তে আইটিআইএস কনফিগারেশন নম্বরটি সর্বদা 0 তে সেট থাকায় আপনাকে আর এ্যাট্যাগগুলি নিয়ে চিন্তা করার দরকার নেই।

আপনার যদি একই ফার্মে আইআইএস 6 এবং আইআইএস 7 ওয়েবসার রয়েছে তবে এখনও সমস্যা আছে। এই ক্ষেত্রে আপনাকে নিবন্ধে বর্ণিত হিসাবে IIS6 কনফিগার নম্বরটি ম্যানুয়ালি সেট করতে হবে ।

এট্যাগগুলি আসলে খুব দরকারী কারণ আপনার স্ট্যাক ওভারফ্লো ডু (যেমন ডিফল্ট। সিএস? 1234) এর মতো ফাইলের নাম পরিবর্তন করার দরকার নেই। আপনি যদি ডিফল্ট সিএসএস ফাইল পরিবর্তন করেন তবে এটি ইটাগ পরিবর্তন করবে এবং অতএব পরবর্তী অনুরোধগুলি ফাইলটি সার্ভার থেকে পাবেন এবং ক্যাশে নয়।


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

4
@ জেফএটউড কঠোরভাবে সত্য নয়, ব্যবহারকারী রিফ্রেশ বোতামটি হিট করলে ব্রাউজারটি ফাইলটি অনুরোধ করবে, যদি ইটাগটি একই হয় তবে আপনি যদি 200 পান তবে আপনি 304 পান, সমস্যাটি এখানে আপনি 2 শিরোনাম প্রেরণ করবেন যেখানে 1 হবে যথেষ্ট হয়েছে
স্যাম জাফরান

1

আমি মনে করি এটি কার্যকর হবে .. আমি জানি অপসারণ এবং ফাঁকা কাজ করে না।

    <configuration>
     <system.webServer>
       <httpProtocol>
          <customHeaders>
            <add name="ETag" value=" " /> 
          </customHeaders>
        </httpProtocol>
       </configuration>
     </system.webServer>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.