<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>寂静的深海 &#187; IIS</title>
	<atom:link href="http://www.deepseath.com/?feed=rss2&#038;tag=iis" rel="self" type="application/rss+xml" />
	<link>http://www.deepseath.com</link>
	<description></description>
	<lastBuildDate>Mon, 29 Jan 2024 09:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP在Windows下的安装</title>
		<link>http://www.deepseath.com/?p=1059</link>
		<comments>http://www.deepseath.com/?p=1059#comments</comments>
		<pubDate>Wed, 08 Feb 2012 16:03:45 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[日积月累]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=1059</guid>
		<description><![CDATA[很久没在IIS6配置PHP了。因为服务器重装系统，今天配置了PHP。 我不习惯将PHP文件copy到系统目录内（system32），会导致日后升级比较麻烦。 PHP在IIS6下安装很简单，主要是读取指定的php.ini文件路径的设置问题。 我是通过注册表的IniFilePath来定义的，可以将下面的代码另存一个.reg文件，然后导入到注册表内。记得将C:\\PHP5改为实际的PHP存放目录。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\php] "IniFilePath"="C:\\php5" 另外，一定要将PHP存放路径加入到系统环境变量Path里面去。否则会导致无法加载dll扩展的情况发生。这一步我就给忘了，结果启动iis的时候总会弹出一个类似如下的警告： 弹出应用程序: Warning: PHP Startup: Unable to load dynamic library '*****\php_curl.dll' - 找不到指定的模块。 &#160;]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=1059</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows2003计划任务实现服务器自动重启</title>
		<link>http://www.deepseath.com/?p=989</link>
		<comments>http://www.deepseath.com/?p=989#comments</comments>
		<pubDate>Thu, 29 Sep 2011 02:36:28 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[日积月累]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Win2003]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[计划任务]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=989</guid>
		<description><![CDATA[最近服务器刚刚更换了一块新硬盘，同时也将PHP升级了一下，然后不知道什么原因（因为这两个维护导致的或是其他的）IIS运行PHP的站点每隔一阵就会无法访问，而静态页面的站点是可以访问的，最为奇怪的是，貌似每次发生这样的故障的间隔期间基本是差不多的，尝试检查了一下，没发现什么意外情况，连系统的日志以及IIS自身的日志都没有什么异常记录。同时也是比较懒得详细检查，所以干脆直接搞了定时重启服务器。 这绝对是一个非常非常非常懒惰的行为，可确实是没什么更好的办法了，如果有朋友能知道这是怎么个原因的话不妨告诉一下，千恩万谢！！！ 先搞定个Windows计划任务自动定时重启机器吧。关于设置Windows计划任务的操作本没什么技术含量本不想弄的，但刚巧前一阵还真有几个朋友问过这方面的操作的，看来有必要普及一下，呵呵。如果你比较熟悉Windows计划任务了，可以不用往下看了^_^ 首先，得确定一个访问量相对比较低的时段进行重启操作，根据若干的站点流量日志分析，基本上访问量比较低的时段几乎平均在每日的凌晨4点左右，估计大多数人这个时候都在睡觉吧^^，正是重启的好时间。 确定好重启的时间后，开始设置计划任务，打开Windows控制面板，找到“计划任务”，打开。点击“添加新计划任务”，会弹出一个“计划任务向导”对话窗，点击“下一步”，会选择程序，点击浏览，找到“c:\windows\system32\shutdown.exe”确定，然后下一步，设置计划任务的名称和执行时间。“下一步”后，设置具体的时间。再下一步设置Windows登录用户名和密码，点击确认完成。然后再次打开这个计划任务的高级属性。将运行内的执行程序后面加入两个参数。“/r /f”，变成“c:\windows\system32\shutdown.exe /r /f”这样执行的就是强制重启计算机命令了。 如下图：]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=989</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS的一个优化策略</title>
		<link>http://www.deepseath.com/?p=956</link>
		<comments>http://www.deepseath.com/?p=956#comments</comments>
		<pubDate>Sun, 18 Sep 2011 16:26:43 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[日积月累]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=956</guid>
		<description><![CDATA[Win系统以IIS做web服务是首选，在Windows2003以后的IIS可以对每个站点设置不同的“应用程序池”，这样的好处是当某个站点当掉的时候不至于影响其他站点。 实际应用中，我比较主张将网站的静态文件存放于单独的一个站点，如果有条件的话，甚至为这个站点单独启用一个于主服务站点不同的域名（提高页面数据的并行下载能力），并将这个静态站点的执行权限全部关闭，因为是纯静态的数据不需要执行脚本。为其设置Header有效期。以及将ETag设置为空。这样下来，这个静态文件站点初具一些优化条件了。但还有一个地方需要注意，那就是它所使用的应用程序池，为这个站点单独设置一个应用程序池是肯定的，另外，因为这个站点不执行脚本，只是静态数据，因此也就不涉及到工作进程回收的问题了，这个时候将应用程序池设定内的“回收工作进程池”应该关闭，这样确保站点不会回收进程导致iis的意外发生。 这样做下来，这个静态文件站点应该相对效率就高一些了。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=956</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP协议的那些事儿</title>
		<link>http://www.deepseath.com/?p=567</link>
		<comments>http://www.deepseath.com/?p=567#comments</comments>
		<pubDate>Wed, 23 Dec 2009 01:36:40 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[网络文摘]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTP协议]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=567</guid>
		<description><![CDATA[什么是http连接？一张页面加载过程中，又是图片又是样式、脚本，对于这些东西的请求，是共用一个连接还是多个连接？ 网上有人说，为了节省连接数，应该尽量将外部CSS，js合并，或者内联；甚至图片也合成一张，再用CSS定位。显然，在这里，一个请求就用一个连接，请求完成连接即被关掉。 但IIS里，有选项“保持HTTP连接”，且有超时时间可供设置。如果每请求一样东西，就开启一个连接，并且这个连接迟迟不死，保持激活，那么要多少连接才够用？这里的意思，应该是一个连接可以供多次使用。 究竟哪个才对？ 其实都对。 http协议无状态，无连接。无连接的含义就是限制每次连接只处理一个请求，收到应答后即断开。但据说这个是http1.0。 http1.1里，提出了持久连接（persistentconnection）的概念，也就是说同一条 HTTP连接，可以依次处理多个请求。据说目前大多数浏览器都支持这个。想想也有道理，建立一个http连接，消耗的成本是很高的，类似数据库连接，所以 我们都尽量在一个数据库连接里完成所有的操作，正如你到超市里买东西，不可能去一趟只买一样，不然的话，买齐所有东西天都黑了。 不过，即使有持久连接的概念，还是有点疑惑:同一张页面真的只用一个连接吗？假如有些东西特别大，比如图片，其他元素等不及了怎么办？会不会另外开辟一个连接？http超时时间如果都设20分钟，未免太浪费了吧？ 另外，就算同一张页面只用一个连接，将css、js、图片合并，也有意义。因为数量少了，发送的请求也少了，这个对性能应该也有影响。 ========================================= 附录1： 一个典型的网页，是由一个 html 文件和内嵌的各类元素组成的，这些元素包括页面内的图片，css文件，javascript 文件等等。每一个内嵌的元素在 HTTP 协议的层面上和那个 html文件是没有区别的：也就是都需要浏览器去服务器上抓下来。一个早期典型的浏览器是这样实现的：当用户敲入网址之后，浏览器和服务器建立连接，请求 这个html 页面，然后边接收服务器发送的 html页面，边解析，碰到内嵌元素，可以立即开第二条连接请求。另外，如果内嵌元素很多，他可能会开多条连接同时请求。当所有需要的元素都下载完毕之 后，浏览器就会将页面画出来。这个过程就是最早期的 HTTP/1.0 协议所设想的浏览器实现。 HTTP/1.0 这种多连接的运作模式是可以改进的。建立 TCP连接的过程是这样：客户端给服务器发一个网络包说我要和你建立连接，服务器收到之后回一个网络包说“我愿意”，然后客户端要再发给服务器一个网络包 说“好那咱们开始传数据吧”。这一来一去三个包才能建立 TCP连接。连接建立之后，浏览器给服务器发请求，服务器给浏览器回应。完事之后又要来回几个网络包关闭 TCP连接。如果页面有很多文件长度很短的元素，每个元素都需要单建一条连接就会导致网络上大量的都是 TCP 建立连接和断开连接的网络包。另外，TCP有一个特性叫做 slow start，其含义可以大致这样解释：TCP连接要求发送端发送一定数量的网络包之后接收端就要回一个“我收到”的网络包，而且网络包在经过每个路由器的 时候包头都要被重写，所以在网络不丢包的情况下网络包越大网络的效率就越高。TCP 连接寻找最优网络包大小的方法是，在 TCP连接建立的初期，网络包的大小是很小的，根据网络状况，两端的程序才会逐步增大网络包的大小以适应带宽提高网络传输的效率。所以浏览器给服务器发请 求，如果每发一个请求就关闭连接的话，那这个连接的数据传输很难达到带宽所能承载的速度。 基于这种种原 因，HTTP/1.1 很快出来了，提出了持久连接（persistentconnection）的概念，也就是说同一条 HTTP连接，可以依次处理多个请求，同时用一定的机制保证各个请求之间的分离性。具体的操作过程是：服务器给浏览器发送回应之后，并不马上关闭连接；浏 览器判断上一个请求的回应已经收完的情况下，可以在这同一个连接上发第二个请求。这种运作模式大大减少了网络包，实验也表明这种做法很有效。但是，由于服 务器上保持连接要占用一定的资源，所以一般服务器不会永久保持持久连接，而且也不推荐浏览器和服务器之间建立过多的持久连接。 持 久连接可以进一步提速。这就是 pipelining了。上面可以看到，浏览器需要等待持久连接里上一个请求的回应完全收完才能发送后面的请求。如果和服务器的连接比较慢，往往持久连接 大部分时间都花在等待而非数据发送/接收上。pipelining的意思是，浏览器可以在一个持久连接里一次给服务器发送多个请求，服务器在这个连接上依 次回应这些请求。这种运作方式和浏览器缓存结合起来的时候会尤其有效果。比方，图片浏览过后会存在浏览器缓存中，再次请求的时候浏览器会对服务器说，我这 里已经有这个图片的缓存了，修改时间是XXXX，如果服务器上这个图片在这之后没有修改过，就不用重发了。这种情况下，服务器会发一个很短的 304 Not Modified [...]]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=567</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
