<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>Just Another IIS Blog : IIS News</title><link>http://blogs.iis.net/thomad/archive/tags/IIS+News/default.aspx</link><description>Tags: IIS News</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Hosting Übersites: IIS7 Support for International Domain Names (IDN)</title><link>http://blogs.iis.net/thomad/archive/2008/03/05/hosting-220-bersites-iis7-support-for-international-domain-names-idn.aspx</link><pubDate>Thu, 06 Mar 2008 06:19:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2215666</guid><dc:creator>thomad</dc:creator><slash:comments>0</slash:comments><description>&lt;P mce_keep="true"&gt;Let's suppose you are German, you developed an extremely cool web-site&amp;nbsp;and now you want to make it available to your German Bier buddies. The only really fetzig site name you could come up with contains one of these&amp;nbsp;nasty German umlauts: &lt;STRONG&gt;übersite.de&lt;/STRONG&gt; &lt;FONT size=1&gt;(not registered&amp;nbsp;at the time I'm writing this blog).&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;There are several registrars out there who allow you to register domain names that contain&amp;nbsp;Unicode characters. It's called&amp;nbsp;&lt;A class="" title="International Domain Names (IDN)" href="http://en.wikipedia.org/wiki/Internationalized_domain_name" mce_href="http://en.wikipedia.org/wiki/Internationalized_domain_name"&gt;International Domain Names (IDN)&lt;/A&gt; and IIS 7.0 and HTTP.SYS&amp;nbsp;support it nicely.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here is what you do if you want to try it yourself: &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;1) Configure IE to use IDN server names for Intranet addresses&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;You need a browser who converts IDNs into &lt;A class="" title=Punycode href="http://en.wikipedia.org/wiki/Punycode" mce_href="http://en.wikipedia.org/wiki/Punycode"&gt;punycode&lt;/A&gt;. Name resolution systems like DNS don't work with Unicode and hostnames have to be converted to punycode first. Internet Explorer 7 does this automatically for Internet addresses. For our example you need to instruct IE to do the same for Intranet addresses. Go to "Tools" - "Internet Options" - select the "Advanced" tab and scroll down to the "International" section. Check "Send IDN server names for Intranet addresses". &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;2) Generate the Punycode representation of your site name&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;We need to convert the IDN site name to Punycode because existing name resolution systems still live in the good old ASCII world. There are a couple of web sites out there which do Unicode-to-Punycode conversions. Here is one of them: &lt;A href="http://www.nameisp.com/puny.asp"&gt;http://www.nameisp.com/puny.asp&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The resulting punycode string for&amp;nbsp;&lt;STRONG&gt;übersite.de&lt;/STRONG&gt; looks like this: &lt;STRONG&gt;xn--bersite-m2a.de&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;3) Registration of punycode name in name system&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;To keep name registration simple we register &lt;STRONG&gt;übersite.de&lt;/STRONG&gt; in our hosts file only. This will resolve the site name for local requests. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Open %windir%\system32\drivers\etc\hosts &lt;/P&gt;
&lt;P mce_keep="true"&gt;Add a new line at the end and add the following: &lt;BR&gt;&lt;STRONG&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xn--bersite-m2a.de&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Save and close notepad. The punycode representation of &lt;STRONG&gt;übersite.de&lt;/STRONG&gt; is now mapped to your local loopback adapter&amp;nbsp;127.0.0.1&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;4) Add a new site in IIS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Almost there. The only thing left to do is to add &lt;STRONG&gt;übersite.de&lt;/STRONG&gt;&amp;nbsp;to IIS. Here are the commands I run in cmd.exe (make sure you run in an elevated command shell):&lt;/P&gt;
&lt;P mce_keep="true"&gt;md %systemdrive%\übersite&lt;BR&gt;echo This is the Default Document of &amp;amp;#252bersite.de &amp;gt;&amp;gt; %systemdrive%\übersite\default.htm&lt;BR&gt;%windir%\system32\inetsrv\appcmd add site -site.name:übersite -bindings:http://übersite.de:80 -physicalPath:%systemdrive%\übersite&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;5) Request übersite.de &lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Now you just have to enter übersite.de into the address bar of Internet Explorer. &lt;/P&gt;
&lt;P mce_keep="true"&gt;And in case you have no idea how to enter "&lt;STRONG&gt;ü&lt;/STRONG&gt;" on your keyboard: turn on NumLock and enter &amp;lt;Alt&amp;gt;+0252. International Domain names of course do not just work for German Bier buddies but for all characters that can be represented via Unicode characters. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT size=1&gt;Credits: thanks to Jeong Hwang Kim who gave me the idea to this blog entry. &lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2215666" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News/default.aspx">IIS News</category><category domain="http://blogs.iis.net/thomad/archive/tags/appcmd/default.aspx">appcmd</category><category domain="http://blogs.iis.net/thomad/archive/tags/IDN/default.aspx">IDN</category><category domain="http://blogs.iis.net/thomad/archive/tags/punycode/default.aspx">punycode</category></item><item><title>How to speed up your most popular web page</title><link>http://blogs.iis.net/thomad/archive/2007/01/17/how-to-speed-up-your-most-popular-web-page.aspx</link><pubDate>Wed, 17 Jan 2007 21:05:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1537012</guid><dc:creator>thomad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=1537012</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=1537012</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2007/01/17/how-to-speed-up-your-most-popular-web-page.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;What's your most popular web page? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I assume it is the default document of your web site, for example if a client requests &lt;A href="http://www.mysite.com/"&gt;www.mysite.com&lt;/A&gt; IIS would execute &lt;A href="http://www.mysite.com/default.htm"&gt;www.mysite.com/default.htm&lt;/A&gt;. Your default document list is easy to query: &lt;/P&gt;&lt;EM&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;C:\&amp;gt;%systemdrive%\inetpub\adminscripts\adsutil get w3svc\defaultdoc&lt;/SPAN&gt;&lt;/EM&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;Microsoft (R) Windows Script Host Version 5.7&lt;/SPAN&gt;&lt;/EM&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;Copyright (C) Microsoft Corporation. All rights reserved.&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;defaultdoc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : (STRING) &lt;EM&gt;"&lt;/EM&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;Default.asp,index.htm,index.html,iisstart.htm,default.aspx,Default.htm&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;/EM&gt;What happens for a request to &lt;A href="http://www.mysite.com/"&gt;www.mysite.com&lt;/A&gt; is actually pretty simple:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;IIS&amp;nbsp;will&amp;nbsp;read the default document list and check file for file if the document exists in the physical directory of your site or vdir. IIS executes the document as soon as it finds the first match. You can imagine that this is pretty expensive. In the above case, supposing &lt;EM&gt;default.htm&lt;/EM&gt; is the only default document that exists in your sites root directory,&amp;nbsp;&amp;nbsp;IIS would check five times until it finds default.htm. &lt;STRONG&gt;And this happens for every request!&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;The fixes for this problem are obvious: &lt;BR&gt;1) trim down your default document list &lt;BR&gt;2) put default documents that exist at the beginning of the list&lt;/P&gt;
&lt;P&gt;Fix 2 has another huge&amp;nbsp;benefit. IIS can put the first default document into the HTTP.SYS kernel-mode cache. It can stay there&amp;nbsp;until IIS invalidates the cache, for example if the default document configuration changes. Kernel-mode caching is now possible because if an existing document is at the top of the list the existence of other default documents doesn't have to be checked anymore. &lt;/P&gt;
&lt;P&gt;Stay tuned for&amp;nbsp;my&amp;nbsp;DefaultDocOptimizer script. I'm writing it tonight &amp;nbsp;:)&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1537012" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News/default.aspx">IIS News</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item></channel></rss>