<?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>技术&#38;生活</title>
	<atom:link href="http://web302.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://web302.com</link>
	<description>web技术研究、记录</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:57:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP中错误处理</title>
		<link>http://web302.com/2012/02/php-error-handling/</link>
		<comments>http://web302.com/2012/02/php-error-handling/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 06:41:43 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://web302.com/?p=295</guid>
		<description><![CDATA[PHP提供了很多的错误等级，这里不一一罗列出来，有兴趣可以翻翻PHP的手册获取。本文主要是讲述在生产环境和开发环境中，错误的处理方式。
1 错误等级
在生产环境中建议 error_reporting(E_ALL ^ E_NOTICE) ，意义是除了notice，其他错误都会记录在案。
在开发环境中如果想严格控制错误，那么可以这样：error_reporting(E_ALL &#124; E_STRICT); 这里几乎所有的错误都会记录，其实也可以和生产环境一致，notice不记录。
2 错误相关的配置(php.ini)
display_errors   是否展示错误，建议开发环境On，生产环境一定要Off，
log_errors  是否记录错误到日志文件中，建议开发环境On，如果你生产环境并发请求比较大，建议Off，当你生产环境出现莫名其妙的问题可以打开几分钟记录一下。
error_log   错误日志的文件路径，当log_errors为On的时候，出现错误的时候，会把错误记录到此文件中。
综上所述，建议在开发环境中如下配置
display_errors = On
log_errors = On
error_log = &#8220;/path/to/php/log/file&#8221;
生产环境中这样配置：
display_errors=Off
log_errors=Off   #当需要定位问题的时候，可以改为On
error_log = &#8220;/path/to/php/log/file&#8221;
3 自定义错误处理方式
有时候需要对错误进行更加高级的处理，那么可以使用函数set_error_handler。如set_error_handler(&#8216;my_error_handler&#8217;)，出现错误的时候会调用函数my_error_handler来处理，也可以这样set_error_handler(array(&#8216;eobj&#8217;,'emethod&#8217;))，这样的话，出现错误会调用eobj对象中的emethod方法。这里要注意的是，如果你这样声明了自定义错误处理，那么如果你设置了日志记录的配置都不起错用，就是说出现错误了也不会记录到配置文件中的error_log中，当然如果错误是致命错误，编译都没通过，那就会记录到error_log中。
有时候需要自己主动抛出错误的时候可以使用trigger_error。想象某个场景，你提供的某个接口需要一个关键的参数，而调用人确没有给或者给的参数不符合要求，那么可以trigger_error(&#8216;param $obj is not valid&#8217;);  更加详细的使用方法请参看手册
]]></description>
		<wfw:commentRss>http://web302.com/2012/02/php-error-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为什么要用安全模式？</title>
		<link>http://web302.com/2011/08/why-use-safe-mode/</link>
		<comments>http://web302.com/2011/08/why-use-safe-mode/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 02:50:32 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php安全]]></category>

		<guid isPermaLink="false">http://web302.com/?p=291</guid>
		<description><![CDATA[什么是安全模式？
为了解决一些共享服务器上的安全问题而设立的模式，有一些文件操作的属主检查和一些函数的限制等等。在一些ISP供应商提供的服务器上面，一台服务器往往运行了N个web site，所以为了保证每个站点以及操作系统的安全，这些服务器往往启用了安全模式。
有什么影响？
安全模式才初衷是为了保证操作系统的安全性以及各个web site的安全性。操作系统的安全性可以防止用户恶意的调用一些系统命令以及限制一些文件的访问，所以会限制了exec、system等函数有一个目录检查，如果执行的命令在safe_mode_exec_dir 下面才可以被允许执行。其次会限制一些文件操作的相关函数，比如fopen、mkdir、copy、unlink、link、rename、chown等，这里会检查被操作的目录或者文件是否与被执行的脚本有相同的 UID（所有者）。其他的影响请参看手册/安全/安全模式。
真的有用吗？
正如手册所说：在PHP这一层解决服务器的安全性问题，似乎不太靠谱。对于ISP提供商来说，启用安全模式是必须的，但是还需要其他的安全性限制，比如限制配置disable_functions、disable_classes，每个用户建立自己的执行账户等。而对于公司的服务器来说，没必要启用安全模式，但是代码的安全要严格查询，尤其是一些根据用户的输入来处理对应的文件，这一步要检查是否有漏掉导致引入了一个系统文件等。
]]></description>
		<wfw:commentRss>http://web302.com/2011/08/why-use-safe-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ini_set知多少</title>
		<link>http://web302.com/2011/07/ini_set-know/</link>
		<comments>http://web302.com/2011/07/ini_set-know/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 01:27:50 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php配置]]></category>

		<guid isPermaLink="false">http://web302.com/?p=288</guid>
		<description><![CDATA[想必大家都用过这个函数，可以动态的修改php的配置项。但是是不是所有的配置项都可以用ini_set来修改呢？答案肯定是否定的！因为如果都可以修改，那么有些ISP的disable_functions等安全性配置可以轻松被突破，那么哪些是可以修改的呢？本文就来寻找一下答案。
打开你的PHP手册，找到附录中的php.ini配置选项列表，每个配置选项都有一个可修改范围，范围有下面几种值：
PHP_INI_PERDIR 可以在php.ini    .htaccess   http.conf中设置。.htaccess和http.conf只能适用于apache的web server，并且是模块安装的才可以。手册中看到upload_max_filesize的配置范围就是PHP_INI_PERDIR，那么在.htaccess或者http.conf中这样配置：

php_value upload_max_filesize 180M

。这样你的上传文件的最大文件大小是180M了。
PHP_INI_SYSTEM 只能在php.ini和http.conf中配置。http.conf中的配置方法参看上面实例。
PHP_INI_ALL 可以在任何地方配置，所以只有访问是这个的才能在脚本中配置，所以ini_set可配置的选项只能是这个范围之内的。
PHP_INI_USER 手册上说是可以在用户的脚本中可以配置，但是没有找到一个范围是这个的配置选项。
]]></description>
		<wfw:commentRss>http://web302.com/2011/07/ini_set-know/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给你的PHP加速</title>
		<link>http://web302.com/2011/07/to-speed-up-your-php/</link>
		<comments>http://web302.com/2011/07/to-speed-up-your-php/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 05:10:45 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[xcache]]></category>

		<guid isPermaLink="false">http://web302.com/?p=286</guid>
		<description><![CDATA[PHP作为一种解释性的语言，可以快速的构建各种WEB服务，并且有着良好的扩展性和维护性。然而每次请求时候，都会把PHP源码解释编译成操作系统可识别的机器码然后再执行，这样下来每次请求都会重复的进行解释编译，那有没有什么方法可以不重复解释编译呢？本文就介绍几种常用的PHP加速器。
什么是PHP加速器？
通过前面的了解，每次HTTP的请求都会进行一个过程：把编译解释成操作系统可以直接运行的机器码。这是一个重复的工作，加速器的功能就是把这一过程缓存起来重复使用。常用的加速器有：Alternative PHP Cache (APC)、XCache、eAccelerator。
Xcache
安装方式无非就是标准的PECL的按照方式，下面就说一下关键的配置文件和查看统计信息的方法。
配置
xcache.cacher = On    开启opcode 缓存器  当size为0时候无效
xcache.size  = 64M 缓存大小一般的网站64M足够，如果此台WEB SERVER有多个vhosts，那么可以适当的增加到256M或者512M等
xcache.count  CPU个数，如果是双核算2，8核的是8
xcache.var_size 同xcache.size
xcache.var_count 同xcache.count
xcache.ttl  缓存项目的ttl(Time To Live) 生命周期，0是永远
xcache.gc_interval  扫描过期项目的时间间隔, 0不扫描,
xcache.coverager  是否启用代码覆盖，测试时候发现关闭次选项加速效果更好
统计信息
拷贝源码中的admin目录下的文件到你的网站的目光目录下（比如是xcacheadmin），那么输入http://yourdomain/xcacheadmin/，这里会有验证框弹出，输入配置中的admin和pass即可。
eaccelerator
安装方式也是标准的PECL安装方式
配置
eaccelerator.shm_size = &#8220;8&#8243;     eAccelerator 可以使用的共享内存的数量 (以兆为单位) . &#8220;0&#8243; 是指操作系统的默认值. 默认值是 &#8220;0&#8243;.
eaccelerator.cache_dir = &#8220;/tmp/eaccelerator&#8221;
eaccelerator.enable = &#8220;1&#8243;  是否开启 1打开 0关闭
eaccelerator.optimizer = &#8220;1&#8243;    是否开启内部优化 1打开
eaccelerator.check_mtime = &#8220;1&#8243;  是否开启文件修改的检测 1开启 0关闭
eaccelerator.debug = 0  是否打开日志记录。&#8221;1&#8243; 为开启，&#8221;0&#8243; 为关闭。默认值为 &#8220;0&#8243;。会将缓存命中得记录写入日志。
eaccelerator.filter [...]]]></description>
		<wfw:commentRss>http://web302.com/2011/07/to-speed-up-your-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>kohana3在nginx中的重写配置</title>
		<link>http://web302.com/2011/07/kohana3-in-nginx-rewrite-the-configuration-in-the/</link>
		<comments>http://web302.com/2011/07/kohana3-in-nginx-rewrite-the-configuration-in-the/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 03:21:13 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[kohana3]]></category>

		<guid isPermaLink="false">http://web302.com/?p=282</guid>
		<description><![CDATA[在公司内部推广过kohana3，反应还算可以。不过有好几次同事来咨询在nginx下的重写配置，下面作为备忘：

 location / &#123;
         root   /data/vhosts/k3.com/public_html;#这里改为你对应的目录
         index  index.php index.html index.htm;
          if &#40;!-e $request_filename&#41; &#123;
              [...]]]></description>
		<wfw:commentRss>http://web302.com/2011/07/kohana3-in-nginx-rewrite-the-configuration-in-the/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>真的了解memcached吗？</title>
		<link>http://web302.com/2011/07/memcached-really-understand-it/</link>
		<comments>http://web302.com/2011/07/memcached-really-understand-it/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 01:37:19 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://web302.com/?p=280</guid>
		<description><![CDATA[1 什么是memcached？
Memcached 是一个高性能的分布式内存对象缓存系统，基于一个存储键/值对的hashmap，也就是常说的Key-Value。主要特性是分布式和内存存储，所以读写速度是非常神速的，1.5W/s没问题的。
2 memecached启动参数
memcached -d -m 2048  -p 11211 -P /tmp/memcached.pid
-d 守护模式
-m 分配最大的内存单位MB
-p 监听端口
-P 保存pid的文件，只有-d的时候才有效果
其他的参数见memcached -h
结合上面的启动参数，关闭memcached的命令是：kill `cat /tmp/memcached.pid`   ，需要注意的是：memcached是存储在内存中，所以kill之后，存储的数据全部没了。
3 服务器状态
使用命令：telnet memcached-server-address port，这样就可以连接上memcached服务器，然后输入stats 即可得到服务器各项状态数据，主要状态说明：
pid 服务器进程id
uptime 服务器运行秒数
time 服务器当前时间锉
version 服务器版本
pointer_size 操作系统指针大小(32位的就是32)
rusage_user 进程累计用户时间
rusage_system 进程累计系统时间
curr_connections  当前打开的连接数
total_connections 系统启动后的连接总数
cmd_get   get请求总数
cmd_set  set请求总数
cmd_flush  flush请求总数
get_hits  get请求命中次数
get_misses  get未命中次数
delete_misses   delete未命中次数
delete_hits delete命中次数
threads  线程数
bytes 存储的item占用的 字节数
curr_items 当前item数目
total_items  系统启动后的总字节数目
evictions  为获取空闲内存而删除的items数（分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items）
limit_maxbytes   分配的内存大小
bytes_read  读取字节数目
bytes_written  发送字节数目
缓存命中率 = get_hits/cmd_get * 100% 
4  php-client
有三种php-client：
1）MemcachedClient.php   [...]]]></description>
		<wfw:commentRss>http://web302.com/2011/07/memcached-really-understand-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>httpsqs配置记录&amp;php client</title>
		<link>http://web302.com/2011/07/httpsqs-configuration-record-php-client/</link>
		<comments>http://web302.com/2011/07/httpsqs-configuration-record-php-client/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 08:16:54 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://web302.com/?p=276</guid>
		<description><![CDATA[什么是httpsqs?
基于http的开源队列服务，使用Tokyo Cabinet 的 B+Tree Key/Value来做持久化存储。
适用于什么应用场景？
比较适合于比较慢而又没有特别高的时效性的应用。比如发送邮件（用户进行了某个操作，需要发送邮件给他的email账户通知。）、图片裁剪、视频转换、日志记录等。这些时效性要求不怎么高，这样就可以采用异步方式 ，让后台来集中处理，可以降低前台的服务压力。
具有什么特点？
支持http GET/POST协议，所以支持HTTP协议的都可以和他通信。
非常快速
高并发
更加详细的内容见官方网站：http://blog.s135.com/httpsqs/
官方提供了两种php client。1）php扩展（门槛高、不使用于win下的用户） 2）httpsqs_client.php （这个代码真不敢恭维）。所以自己写了一个httpsqs的类，供大家使用。

&#60;!--?php class Httpsqs&#123; 	private $host; 	private $port; 	private $auth; 	private $charset; 	private static $sockets=array&#40;&#41;; 	public function __construct&#40;$host,$port,$auth='',$charset='utf-8'&#41;&#123; 		$this---&#62;host = $host;
		$this-&#38;gt;port = $port;
		$this-&#38;gt;auth = $auth;
		$this-&#38;gt;charset = $charset;
	&#125;
&#160;
	public function get&#40;$name,$kt=0&#41;&#123;
		$query  = $this-&#38;gt;build_query&#40;$name,'get'&#41;;
		return $this-&#38;gt;execute&#40;$query,'GET','',$kt&#41;;
	&#125;
&#160;
	public function put&#40;$name,$body,$kt=0&#41;&#123;
		$query = $this-&#38;gt;build_query&#40;$name,'put'&#41;;
		return $this-&#38;gt;execute&#40;$query,'POST',$body,$kt&#41;;
	&#125;
&#160;
	public function reset&#40;$name&#41;&#123;
		$query = $this-&#38;gt;build_query&#40;$name,'reset'&#41;;
		$r = $this-&#38;gt;execute&#40;$query&#41;;
		if&#40;$r &#38;amp;&#38;amp; $r&#91;'data'&#93; == [...]]]></description>
		<wfw:commentRss>http://web302.com/2011/07/httpsqs-configuration-record-php-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再谈pop.js</title>
		<link>http://web302.com/2011/04/talk-pop-js/</link>
		<comments>http://web302.com/2011/04/talk-pop-js/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 14:40:37 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://web302.com/?p=231</guid>
		<description><![CDATA[弹出层相信是在JS需求中随处可见，之前写过类似的文章，见：http://web302.com/2010/09/v-colombias-pop-pop-up-plug-in-changes-to-the-points/   但是经过一段时间使用，做了如下修改：

/*
1.自动化show,
2.增加onShow和onHide事件
3.自动寻找关闭按钮和移动标题栏
*/
&#40;function&#40;$&#41;&#123;
	function drop&#40;objs,dragDivid&#41;&#123;
		objs.css&#40;'cursor','move'&#41;
			.unbind&#40;'mousedown'&#41;
			.bind&#40;'mousedown',function&#40;e&#41;&#123;
				var posX;
				var posY;
				var fdiv = document.getElementById&#40;dragDivid&#41;;
				if&#40;!e&#41; e = window.event;
				posX = e.clientX - parseInt&#40;fdiv.style.left&#41;;
				posY = e.clientY - parseInt&#40;fdiv.style.top&#41;;
				function mousemove&#40;ev&#41;&#123;
					if&#40;ev==null&#41; ev = window.event;
					fdiv.style.left = &#40;ev.clientX - posX&#41; + &#34;px&#34;;
					fdiv.style.top = &#40;ev.clientY - posY&#41; + &#34;px&#34;;
					return false;
				&#125;
				$&#40;document&#41;.unbind&#40;'mousemove',mousemove&#41;;
				$&#40;document&#41;.mousemove&#40;mousemove&#41;.mouseup&#40;function&#40;&#41;&#123;
					$&#40;document&#41;.unbind&#40;'mousemove',mousemove&#41;;
				&#125;&#41;;
			&#125;&#41;;
	&#125;
	function setDivPox&#40;jqBackDiv,jqPopDiv,isScrollEvent&#41;
	&#123;
		//自动判断当前是否支持W3C标准的
		var bodyObj = document.documentElement;
		//文档没有DOCTYPE声明，是 HTML文档,否则是XHTML文档
		if&#40;document.compatMode == 'BackCompat'&#41;&#123;
			bodyObj = document.body;
		&#125;
		//--设置遮罩层为满屏
		jqBackDiv.width&#40;Math.max&#40;bodyObj.scrollWidth, document.documentElement.clientWidth&#41;&#41;;
		jqBackDiv.height&#40;Math.max&#40;bodyObj.scrollHeight, document.documentElement.clientHeight&#41;&#41;;
		//调整要显示的DIV的位置
		var dleft = bodyObj.clientWidth/2 - jqPopDiv.width&#40;&#41;/2;
		var dtop = bodyObj.clientHeight/2 [...]]]></description>
		<wfw:commentRss>http://web302.com/2011/04/talk-pop-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>强大的表单验证工具jquer tools-Validator</title>
		<link>http://web302.com/2010/10/powerful-form-validation-tool-jquer-tools-validator/</link>
		<comments>http://web302.com/2010/10/powerful-form-validation-tool-jquer-tools-validator/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 09:55:44 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://web302.com/?p=211</guid>
		<description><![CDATA[jQuery的tools插件是很贴近实际需求的UI扩展，有tab,tip等，今天介绍表单验证的插件：Validator。
表单验证在WEB项目中太常见了，很简单，但是很烦琐。toos家族中Validator就是来拯救大家的。 下面来简单介绍一下：
一 基本用法
如果要验证某个表单，你仅仅需要一行代码：

$&#40;&#34;#myform&#34;&#41;.validator&#40;&#41;;

当表单提交的时候，就会来验证。验证规则写在表单元素的属性中，比如某个输入框是必填项目，那么就这样：

&#60;input required=&#34;required&#34; name=&#34;name&#34; type=&#34;text&#34; /&#62;

中间的required就是表示这个表单项目是必填！
更加详细的demo请看：http://flowplayer.org/tools/demos/validator/index.html
二 几个配置说明
1 singleError 是否依次验证，还是一次验证所有。如果你想一次验证一个，就设为ture，否则为false
2 effect 错误信息展示的效果，默认为default。你可以建立自己的effect：

$.tools.validator.addEffect&#40;&#34;wall&#34;, function&#40;errors, event&#41; &#123;
	$.each&#40;errors, function&#40;index, error&#41; &#123;
		// erroneous input
		var input = error.input;//出错的input表单项目
		// error messages for the input (Array)
		var errors = error.messages;//出错的信息，一般取errors[0]
                         [...]]]></description>
		<wfw:commentRss>http://web302.com/2010/10/powerful-form-validation-tool-jquer-tools-validator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE6中的缓存问题</title>
		<link>http://web302.com/2010/10/ie6-cache-problem/</link>
		<comments>http://web302.com/2010/10/ie6-cache-problem/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 17:55:25 +0000</pubDate>
		<dc:creator>effect</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://web302.com/?p=216</guid>
		<description><![CDATA[今天碰到一个诡异的问题：IE8，FF访问都是正常的情况下，IE6出现了如下情况：
1 清除缓存的情况下，首次访问，正常
2 刷新页面，JS报错：缺少&#8221;，或者报错缺少}
大家都知道,IE6的报错很怪异，找不准文件，行数和字符数不能定位，但是在附近能找到。IE6下也没有JS的调试工具（也许有，但是我没用过）。
好了，说一下我的应用场景：在个人中心的某个业务要展示空间的信息，要展示个人空间的信息。
我是这样处理这个逻辑的：载入个人空间信息的JS文件，然后渲染出来。说通俗一点就是在这个页面加载一段JS，这段JS保存了用户空间的信息，然后展示之。
原来不能确定这个JS错误是这一段JS引起，后来观察，发现到展示个人空间的信息的时候卡住了。但是这个JS文件也是正常的，我下载到本地，然后载入他，也没报错。
好，现在好好分析下问题，抓住几个关键点：
1 清除缓存后，首次访问，正常，第二次访问异常。
2 使用抓包工具，这个URL第二次请求是提示用的cache。
所以可能是浏览器cache导致的问题。
现在解决方法：加载这个JS的时候加个时间锉，确保每次都是拉取最新的文件，而不是从缓存中读取。
为什么会这样呢？
也许是和文件的编码有关，因为我页面的编码是UTF-8，而空间信息JS的编码是GBK，我读取这个JS的时候制定了编码是GBK，但是当使用cache的时候，或许这个charset不起作用。
总结：当页面编码和JS文件编码不一致的时候，要注意IE6下的缓存，导致了JS文件的乱码！
]]></description>
		<wfw:commentRss>http://web302.com/2010/10/ie6-cache-problem/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

