﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-九月鹰飞</title><link>http://www.cnblogs.com/kevin002/</link><description>九月鹰飞</description><language>zh-cn</language><lastBuildDate>Thu, 21 Aug 2008 01:46:26 GMT</lastBuildDate><pubDate>Thu, 21 Aug 2008 01:46:26 GMT</pubDate><ttl>60</ttl><item><title>启用IIS的Gzip压缩功能</title><link>http://www.cnblogs.com/kevin002/archive/2008/08/18/1270131.html</link><dc:creator>kevin002</dc:creator><author>kevin002</author><pubDate>Mon, 18 Aug 2008 02:26:00 GMT</pubDate><guid>http://www.cnblogs.com/kevin002/archive/2008/08/18/1270131.html</guid><wfw:comment>http://www.cnblogs.com/kevin002/comments/1270131.html</wfw:comment><comments>http://www.cnblogs.com/kevin002/archive/2008/08/18/1270131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kevin002/comments/commentRss/1270131.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kevin002/services/trackbacks/1270131.html</trackback:ping><description><![CDATA[<div>
<div class="content_head"><span class="log_Title"><strong><font style="font-size: 14px">启用IIS的Gzip压缩功能</font></strong></span></div>
<div class="content_main">
<p><font style="font-size: 14px">现代的浏览器IE6和Firefox都支持客户端Gzip，也就是说，在服务器上的网页，传输之前，先使用Gzip压缩再传输给客户端，客户端接收之后由浏览器解压显示，这样虽然稍微占用了一些服务器和客户端的CPU，但是换来的是更高的带宽利用率。对于纯文本来讲，压缩率是相当可观的。如果每个用户节约50%的带宽，那么你租用来的那点带宽就可以服务多一倍的客户了。</font></p>
<p>&nbsp;<wbr></p>
<p><font style="font-size: 14px">IIS6已经内建了Gzip压缩的支持，可惜，没有设置更好的管理界面。所以要打开这个选项，还要费些功夫。</font></p>
<p>&nbsp;<wbr></p>
<p><font style="font-size: 14px">首先，如果你需要压缩静态文件（HTML），需要在硬盘上建一个目录，并给它&#8220;IUSR_机器名&#8221;这个用户的写权限。如果压缩动态文件（PHP，asp，aspx）就不需要了，因为它的页面是每次都动态生成的，压缩完就放弃。然后在IIS管理器中，&#8220;网站&#8221;上面右键－属性，不是下面的某个站点，而是整个网站。进入&#8220;服务&#8221;标签，选上启用动态内容压缩，静态内容压缩。</font></p>
<p>&nbsp;<wbr></p>
<p><font style="font-size: 14px">然后选中网站下面那个服务器扩展，新建一个服务器扩展。名字无所谓，下面的添加文件的路径是：</font></p>
<p><font style="font-size: 14px">c:\windows\system32\inetsrv\gzip.dll，然后启用这个扩展。</font></p>
<p><font style="font-size: 14px">这时候静态内容是可以压缩的，但是对于动态内容，aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方，这时候只能去修改它的配置文件了。</font></p>
<p><font style="font-size: 14px">在c:\windows\system32\inetsrv\下面有个MetaBase.xml文件，可以用记事本打开，找到IIsCompressionScheme，有三个相同名字的段，</font></p>
<p><font style="font-size: 14px">分别是</font></p>
<ol>
    <li><font style="font-size: 14px"><font face="Verdana">&lt;IIsCompressionScheme&nbsp;Location ="/LM/W3SVC/Filters/Compression/deflate"</font></font> </li>
    <li><font style="font-size: 14px"><font face="Verdana">&lt;IIsCompressionScheme&nbsp;Location ="/LM/W3SVC/Filters/Compression/gzip"</font></font> </li>
    <li><font style="font-size: 14px"><font face="Verdana">&lt;IIsCompressionSchemes&nbsp;Location ="/LM/W3SVC/Filters/Compression/Parameters"</font></font> </li>
</ol>
<p><font style="font-size: 14px"></font>&nbsp;</p>
<p><font style="font-size: 14px">第三段不用管它，前两段有基本相同的参数，在这两段的参数HcScriptFileExtensions下面都加上一行aspx，如果你有其它的动态程序要压缩，也加在这里。HcDynamicCompressionLevel改成9，（0－10，9是性价比最高的一个）。</font></p>
<p>&nbsp;</p>
<p>注：</p>
<ul>
    <li><font face="Verdana"><strong>HcFileExtensions</strong></font>指定压缩方案支持的文件扩展名。IIS 只压缩使用指定文件扩展名的静态文件。该设置为空时，不压缩静态文件。 </li>
    <li><strong>HcScriptFileExtensions</strong></noloc> 指出压缩方案支持的文件扩展名。IIS 将压缩使用该属性指定的文件扩展名的动态文件输出。 </li>
    <li><strong>HcDynamicCompressionLevel</noloc> </strong>属性指定压缩动态内容时压缩方案的压缩级别。低压缩级别生成稍大一些的压缩文件，但对 CPU 和内存资源的总体影响较小。高压缩级别通常会生成较小的压缩文件，但会占用较多的 CPU 时间和内存。 </li>
    <li><strong>HcOnDemandCompLevel</noloc> </strong>属性指定对静态内容进行按需压缩时，压缩方案的压缩级别。低压缩级别生成稍大一些的压缩文件，但对 CPU 和内存资源的总体影响较小。高压缩级别通常生成较小的压缩文件，但是 CPU 和内存的占用率较高。 </li>
    <li><strong>HcPriority</noloc> </strong>属性指定分配给特定压缩方案的优先级。如果您在安装 IIS 时安装了多个压缩方案，并且客户端浏览器在 Accept-Encoding 标头中注明可以处理多个压缩方案，IIS 将使用 <strong><noloc>HcPriority</noloc></strong> 指定的优先级数字来决定为请求使用哪个方案。这种情况下，IIS 会使用具有最高优先级数字的匹配方案。 有效的优先级数字范围从 1 到 10。一般来说，如果在 IIS 上安装了多个压缩方案，您应该为每个压缩方案指派一个不同的优先级数字。 </li>
</ul>
<p>&nbsp;<wbr></p>
<p><font style="font-size: 14px">然后需要重启一下IIS服务，就可以体会到压缩后的速度了。不过通常可能不会有太明显的感觉，可以用</font><a href="http://www.port80software.com/tools/compresscheck.asp"><font style="font-size: 14px">http://www.port80software.com/tools/compresscheck.asp</font></a>(英文)<font face="Verdana"><a href="http://gzip.zzbaike.com/"><font face="Verdana">http://gzip.zzbaike.com/</font></a>（中文）</font><font style="font-size: 14px">这个页面来检查你的网页是否压缩过了，以及压缩比和加快的速度。整个过程对CPU的占用基本上感觉不出来。</font></p>
</div>
</div>
<img src ="http://www.cnblogs.com/kevin002/aggbug/1270131.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41807/" target="_blank">[新闻]洪磊口述:番茄花园如何捆绑流氓软件月入十万</a>]]></description></item><item><title>Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication</title><link>http://www.cnblogs.com/kevin002/archive/2008/08/16/1269074.html</link><dc:creator>kevin002</dc:creator><author>kevin002</author><pubDate>Fri, 15 Aug 2008 17:24:00 GMT</pubDate><guid>http://www.cnblogs.com/kevin002/archive/2008/08/16/1269074.html</guid><wfw:comment>http://www.cnblogs.com/kevin002/comments/1269074.html</wfw:comment><comments>http://www.cnblogs.com/kevin002/archive/2008/08/16/1269074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kevin002/comments/commentRss/1269074.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kevin002/services/trackbacks/1269074.html</trackback:ping><description><![CDATA[摘要: .NETFrameworkSecurityHow Does It Work?J.D. Meier, Alex Mackman, Michael Dunner, and Srinath VasireddyMicrosoft CorporationPublished: November 2002Last Revised: January 2006Applies to: Microsoft&#174; &nbsp;&nbsp;<a href='http://www.cnblogs.com/kevin002/archive/2008/08/16/1269074.html'>阅读全文</a><img src ="http://www.cnblogs.com/kevin002/aggbug/1269074.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41813/" target="_blank">[新闻]2008年8月21日IT博客精选：盖茨复出？</a>]]></description></item><item><title>JQuery学习日记</title><link>http://www.cnblogs.com/kevin002/archive/2008/07/30/1256714.html</link><dc:creator>kevin002</dc:creator><author>kevin002</author><pubDate>Wed, 30 Jul 2008 10:34:00 GMT</pubDate><guid>http://www.cnblogs.com/kevin002/archive/2008/07/30/1256714.html</guid><wfw:comment>http://www.cnblogs.com/kevin002/comments/1256714.html</wfw:comment><comments>http://www.cnblogs.com/kevin002/archive/2008/07/30/1256714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kevin002/comments/commentRss/1256714.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kevin002/services/trackbacks/1256714.html</trackback:ping><description><![CDATA[<h2>1. 选取元素</h2>
<p>$("#myid&#8221;)效果等于document.getElementById(&#8221;myid&#8221;), 但是写的字符要少好多啊.</p>
<p>如果需要将jQuery对象转换成html元素, 则只需要取其第0个元素即可. 例如$("#myid&#8221;)返回的是jQuery对象, 而$("#myid&#8221;)[0]返回的就是html元素</p>
<p>如果选择所有的img元素, 那么这么写: $("img&#8221;)</p>
<p>如果选择带有class=&#8221;TextBox&#8221;的div元素(&lt;div class=&#8221;TextBox&#8221;&gt;&lt;/div&gt;), 那么这么写: $("div.TextBox&#8221;)</p>
<p>选择带有myattr属性的元素$("div[myattr]&#8220;)<br />
选择带有myattr属性, 并且属性值等于myclass的元素$("div[myattr='myclass']&#8220;)<br />
属性不等于[myattr!='myclass']<br />
属性以my开头[myattr^='my']<br />
属性以class结尾[myattr$='class']<br />
属性包含cla这三个字符[myattr*='cla']</p>
<p>如果一个选择会返回多个元素, 并且希望每返回一个元素, 就把某些属性应用到该元素上, 可以这么写<br />
$("div&#8221;).each(function()<br />
{<br />
$(this).css(&#8221;background-color&#8221;, "#F00&#8243;);<br />
alert($(this).html());<br />
$(this).width(&#8221;200px&#8221;);<br />
});</p>
<h2>2.事件</h2>
<p>给页面加onload事件处理方法<br />
$(function()<br />
{<br />
alert(&#8221;页面结构加载完毕, 但是可能某些图片尚未加载(一般情况下, 此事件就够用了)");<br />
});</p>
<p>可以给页面绑定多个onload事件处理方法<br />
$(function()<br />
{<br />
alert(&#8221;我首先被执行");<br />
});</p>
<p>$(function()<br />
{<br />
alert(&#8221;我第二被执行");<br />
});</p>
<p>绑定特殊事件<br />
$("#myid&#8221;).keydown(function()<br />
{<br />
alert(&#8221;触发了keydown事件");<br />
});</p>
<p>除了这些常用的, 不常用的事件需要通过bind方法绑定</p>
<h2>3. 元素属性/方法</h2>
<p>得到一个元素的高度, $("#myid&#8221;).height()<br />
得到一个元素的位置, $("#myid&#8221;).offset() 返回的是一个offset对象, 如果取元素位置的top, 则$("#myid&#8221;).offset().top,?取left则$("#myid&#8221;).offset().left<br />
得到一个元素的innerHTML, $(&#8221;#myid&#8221;).html()<br />
得到一个元素的innerText, $(&#8221;#myid&#8221;).text()<br />
得到一个文本框的值, $("#myid&#8221;).val()<br />
得到一个元素的属性, $("#myid&#8221;).attr(&#8221;myattribute&#8221;)</p>
<p>以上这些方法有个基本特征, 就是不带参数表示取值, 带有参数表示设定值(除了offset), 例如<br />
$("#myid&#8221;).height(&#8221;20&#8243;);<br />
$(&#8221;#myid&#8221;).html(&#8221;&lt;a href=&#8221;&gt;asdasd&lt;/a&gt;&#8221;)<br />
$("#myid&#8221;).val(&#8221;asdasd&#8221;)</p>
<p>需要注意, offset是只读的.</p>
<p>给一个元素设置属性 $("#myid&#8221;).attr(&#8221;width&#8221;, "20%&#8221;)<br />
读取一个属性 $("#myid&#8221;).attr(&#8221;width&#8221;)<br />
一次指定多个属性 $("#myid&#8221;).attr({disabled: &#8220;disabled&#8221;, width:&#8221;20%&#8221;, height: &#8220;30&#8243;})<br />
删除属性$("#myid&#8221;).removeAttr(&#8221;disabled&#8221;)</p>
<p>应用样式$("#myid&#8221;).addClass(&#8221;myclass&#8221;)<br />
删除样式$("#myid&#8221;).removeClass(&#8221;myclass&#8221;)</p>
<p>加一个样式$("#myid&#8221;).css(&#8221;height&#8221;, &#8220;20px&#8221;)<br />
加一组样式$("#myid&#8221;).css({height:&#8221;20px&#8221;, width:&#8221;100px&#8221;})<br />
需要注意的是: 如果是加一个样式, 这个样式的名字是css中的名字, 比如说style=&#8221;background-color:#FF0000&#8243;, 对应的jQuery写法是$("#myid&#8221;).css(&#8221;background-color&#8221;, "#FF0000&#8243;)<br />
但是加一组样式的时候, 样式的名字就是javascript中的css名字了, 比如: myid.style.backgroundColor = &#8220;#FF0000&#8243;, 对应的jQuery写法是$("#myid&#8221;).css({backgroundColor:&#8221;#FF0000&#8243;})</p>
<h2>4. 根据关系查找元素</h2>
<p>找和自己同级的下一个元素$("#myid&#8221;).next()<br />
找和自己同级的所有位于自己之下的元素$("#myid&#8221;).nextAll()<br />
找和自己同级的上一个元素$("#myid&#8221;).prev()<br />
找和自己同级的所有位于自己之上的所有元素$("#myid&#8221;).prevAll()<br />
找自己的第一代子元素$("#myid&#8221;).children()<br />
找自己的第一个父元素$("#myid&#8221;).parent()<br />
找自己的所有父元素$("#myid&#8221;).parents()<br />
例子:<br />
$("div.l4&#8243;).parents().each(<br />
function() {<br />
alert($(this).html());<br />
});</p>
<p>会把class=l4的div的所有父元素都得到, 并且alert出他们的html</p>
<p>例子:<br />
$("div.l4&#8243;).parents(&#8221;div.l2&#8243;).each(function() { alert($(this).html()); });<br />
会得到class=l4的父元素, 该父元素必须是div, 而且其class=l2</p>
<p>这里说的所有方法, 都可以带表达式, 表达式的写法参考第一部分</p>
<h2>5. 维护元素</h2>
<p>在body中增加一个元素<br />
$("body&#8221;).append(&#8221;&lt;input type=&#8217;text&#8217; value=&#8217;asd&#8217; /&gt;")<br />
该语句会把这段html插入到body结束标签之前, 结果是&lt;input type=&#8217;text&#8217; value=&#8217;asd&#8217; /&gt;&lt;/body&gt;</p>
<p>$(&#8221;body&#8221;).prepend(&#8221;&lt;input type=&#8217;text&#8217; value=&#8217;asd&#8217; /&gt;")<br />
该语句会把这段html插入到body开始标签之后, 结果是&lt;body&gt;&lt;input type=&#8217;text&#8217; value=&#8217;asd&#8217; /&gt;</p>
<h2>6.AJAX</h2>
<p>用get方法请求一个页面<br />
$.get(&#8221;<a onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');" href="http://www.google.com/">http://www.google.com/</a>, &#8220;q=jquery&#8221;, function(data, status){alert(data)})<br />
表示请求http://www.google.com, 参数是q, 参数的值是jquery, 请求结束后(不管成功还是失败)执行后面的function, 该function有两个固定参数, data和status, data是返回的数据, status是本次请求的状态</p>
<p>用post方法请求一个页面<br />
$.post(&#8230;&#8230;..) 参数同get方法</p>
<h2>7.其他方法</h2>
<p>$.trim(str) 将str前后空格去掉<br />
$.browser 返回当前用户浏览器的类型<br />
$.browser.version返回当前浏览器的版本</p>
<p>&nbsp;</p>
<p>$.ajax({<br />
&nbsp;&nbsp; type: "POST",<br />
&nbsp;&nbsp; url: "some.php",<br />
&nbsp;&nbsp; data: "name=John&amp;location=Boston",</p>
<p>&nbsp;&nbsp; dataType: "script",</p>
<p>&nbsp;&nbsp; cache: false,<br />
&nbsp;&nbsp; success: function(msg){<br />
&nbsp;&nbsp;&nbsp;&nbsp; alert( "Data Saved: " + msg );<br />
&nbsp;&nbsp; }<br />
});<br />
</p>
<p>同步状态下直接得到返回的值:</p>
<p>var html = $.ajax({<br />
&nbsp; url: "some.php",<br />
&nbsp; async: false<br />
}).responseText;<br />
</p>
<img src ="http://www.cnblogs.com/kevin002/aggbug/1256714.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41812/" target="_blank">[新闻]微软宣布将斥资1亿美元购买Novell证书</a>]]></description></item><item><title>在.Net中存放NHibernate的Session值</title><link>http://www.cnblogs.com/kevin002/archive/2008/07/28/1254705.html</link><dc:creator>kevin002</dc:creator><author>kevin002</author><pubDate>Mon, 28 Jul 2008 05:25:00 GMT</pubDate><guid>http://www.cnblogs.com/kevin002/archive/2008/07/28/1254705.html</guid><wfw:comment>http://www.cnblogs.com/kevin002/comments/1254705.html</wfw:comment><comments>http://www.cnblogs.com/kevin002/archive/2008/07/28/1254705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/kevin002/comments/commentRss/1254705.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/kevin002/services/trackbacks/1254705.html</trackback:ping><description><![CDATA[摘要: 最近一个项目要用到.Net，用久了Hibernate直接用ADO.NET手写SQL的话真还有点不适应，还好NHibernate提供了对.Net的ORM支持。在使用Hibernate的时候，可以使用ThreadLoca来存放Session的。ThreadLoca是给每个线程提供单独的静态变量，在一个线程内部共享，而不同的线程间不共享。在.Net中找了好长时间，终于找到了ThreadStaticAtt&nbsp;&nbsp;<a href='http://www.cnblogs.com/kevin002/archive/2008/07/28/1254705.html'>阅读全文</a><img src ="http://www.cnblogs.com/kevin002/aggbug/1254705.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41811/" target="_blank">[新闻]携程谷歌将联合发旅游榜单</a>]]></description></item></channel></rss>