<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[歌声与微笑]]></title> 
<link>http://www.gsywx.com/index.php</link> 
<description><![CDATA[歌声与微笑]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[歌声与微笑]]></copyright>
<item>
<link>http://www.gsywx.com/read.php/.htm</link>
<title><![CDATA[centos网站图片显示变形不完整的解决]]></title> 
<author>admin &lt;admin@gsywx.com&gt;</author>
<category><![CDATA[电脑类]]></category>
<pubDate>Thu, 13 Jan 2011 00:43:55 +0000</pubDate> 
<guid>http://www.gsywx.com/read.php/.htm</guid> 
<description>
<![CDATA[ 
	本内容为原创内容，转载请注明：<br/>本文来自http://blog.gsywx.com<br/><br/><br/>在用centos建立网站环境时，出现了这样的问题：<br/>网站上的图片无法在IE中正确打开，发现都变形了，或色彩变得模糊或一块块的，使用图片另存为，发现图片只有上面一部份，下面部份丢失，或索性整个都不完整。检查网站上的图片完全正确，是用ssh二进制上传的。<br/>重新安装nginx后问题依旧，于是，再安装apache，测试还一样，再用yum安装centos自带的apache，还是如此，后来经朋友查找发现说apache下的sendfile会有某些系统或CPU情况下存在bug，具体不深究它，解决问题即可。<br/>解决方法：<br/>在apache情况下：在httpd.conf中增加语句：EnableSendfile Off <br/>在nginx情况下：修改nginx.conf中的 sendfile on;为 sendfile off;<br/><br/>为了更深地了解此问题，以下内容为搜索来的：<br/><br/>apache 配置中的两个指令EnableMMAP与EnableSendfile详解<br/>访问大文件时>100k,只能送出前30k左右的内容,<br/>在 ie中如何刷新都不能显示完整, 在 firefox中刷新几次后可显示完整,用 wget时,可看出明显的续传的过程.<br/><br/>需要关闭以下两项, 具体还是不知为何,但行之有效:<br/><br/>EnableMMAP 指令 <br/>说明 在递送中使用内存映射(memory-mapping)来读取文件 <br/>语法 EnableMMAP On&#124;Off <br/>默认值 EnableMMAP On <br/>作用域 server config, virtual host, directory, .htaccess <br/>覆盖项 FileInfo <br/>状态 核心(C) <br/>模块 core <br/><br/>此指令指示httpd在递送中如果需要读取一个文件的内容，它是否可以使用内存映射。当处理一个需要访问文件中的数据的请求时，比如说当递送一个使用mod_include进行服务器端分析的文件时，如果操作系统支持，Apache将默认使用内存映射。<br/><br/>这种内存映射有时会带来性能的提高，但在某些情况下，您可能会需要禁用内存映射以避免一些操作系统的问题：<br/><br/>在一些多处理器的系统上，内存映射会减低一些httpd的性能。 <br/>在挂载了NFS的DocumentRoot上，若已经将一个文件进行了内存映射，则删除或截断这个文件会造成httpd因为分段故障而崩溃。 <br/>在可能遇到这些问题的服务器配置过程中，您应当使用下面的命令来禁用内存映射：<br/><br/>EnableMMAP Off <br/><br/>对于挂载了NFS的文件夹，可以单独指定禁用内存映射：<br/><br/><Directory "/path-to-nfs-files"> EnableMMAP Off </Directory> <br/><br/>EnableSendfile 指令 <br/>说明 使用操作系统内核的sendfile支持来将文件发送到客户端 <br/>语法 EnableSendfile On&#124;Off <br/>默认值 EnableSendfile On <br/>作用域 server config, virtual host, directory, .htaccess <br/>覆盖项 FileInfo <br/>状态 核心(C) <br/>模块 core <br/>兼容性 仅在 Apache 2.0.44 及以后的版本中可用 <br/><br/>这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下，当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容)，如果操作系统支持，Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。译者注：Linux2.4/2.6内核都支持。<br/><br/>这个sendfile机制避免了分开的读和写操作以及缓冲区分配，但是在一些平台或者一些文件系统上，最好禁止这个特性来避免一些问题：<br/><br/>一些平台可能会有编译系统检测不到的有缺陷的sendfile支持，特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。 <br/>在Linux上启用IPv6时，使用sendfile将会触发某些网卡上的TCP校验和卸载bug。 <br/>当Linux运行在Itanium处理器上的时候，sendfile可能无法处理大于2GB的文件。 <br/>对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如：NFS或SMB)，内核可能无法可靠的通过自己的缓冲区服务于网络文件。 <br/>如果出现以上情况，你应当禁用sendfile ：<br/><br/>EnableSendfile Off <br/><br/>针对NFS或SMB，这个指令可以被针对目录的设置覆盖：<br/><br/><Directory "/path-to-nfs-files"> EnableSendfile Off </Directory> <br/> <br/><br/><br/>Tags - <a href="http://www.gsywx.com/go.php/tags/centos/" rel="tag">centos</a>
]]>
</description>
</item><item>
<link>http://www.gsywx.com/read.php/.htm#blogcomment</link>
<title><![CDATA[[评论] centos网站图片显示变形不完整的解决]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.gsywx.com/read.php/.htm#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>