<?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>LINUXQQ &#187; 乱7八糟</title>
	<atom:link href="http://www.linuxqq.net/archives/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linuxqq.net</link>
	<description>LINUXQQ狂人时代</description>
	<lastBuildDate>Tue, 10 Jan 2012 04:39:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>DepCheck indicates Microsoft .NET Framework 3.0 was not attempted to be installed. 安装不上的解决办法</title>
		<link>http://www.linuxqq.net/archives/825.html</link>
		<comments>http://www.linuxqq.net/archives/825.html#comments</comments>
		<pubDate>Tue, 10 Jan 2012 04:39:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=825</guid>
		<description><![CDATA[[01/09/12,22:49:43] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0 was not attempted to be installed.安装不上的解决办法 由于恢复系统安装了 所以就卸载了系统的.net 2.0 3.0 3.5 。但是再安装发觉除了2.0 其他版本都无法安装 全部报[01/09/12,22:49:43] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0 was not attempted to be installed. 解决办法：先用微软自带的.net framework_clean_up 卸载掉所有版本 然后把.net 1.0 2.0 安装上 接下打来windows update更新所有相关的.net framework 的补丁 然后重启 哈哈 自动就把.NET 3.0 3.5 安装好了 转载注明(LINUXQQ)]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/825.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012年新提权大杀器 绝对无毒</title>
		<link>http://www.linuxqq.net/archives/821.html</link>
		<comments>http://www.linuxqq.net/archives/821.html#comments</comments>
		<pubDate>Sat, 07 Jan 2012 07:12:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=821</guid>
		<description><![CDATA[网上搜索到的 不错哦 :下载地址 免杀版 比PR牛B啊 但是新版360 默认禁止添加用户 正在研究]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/821.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sql攻击 WINDOWS下常用工具</title>
		<link>http://www.linuxqq.net/archives/805.html</link>
		<comments>http://www.linuxqq.net/archives/805.html#comments</comments>
		<pubDate>Tue, 22 Nov 2011 03:40:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=805</guid>
		<description><![CDATA[2008年6月，微软和惠普的安全部门合作发布了三个工具，分别是： 微软SQL注入攻击源码扫描器：Microsoft Source Code Analyzer for SQL Injection (MSCASI)。 这个工具给网站开发人员使用。是一个静态扫描ASP代码的工具，可以查找发现第一类和第二类的SQL注入攻击漏洞。 工具官方下载地址：http://support.microsoft.com/kb/954476 本地下载地址： http://cert.sjtu.edu.cn/download/sjtu/sql/msscasi_asp_pkg.exe 惠普的 Scrawlr工具。这个工具可以被网站的维护人员使用，是一个黑箱扫描工具，不需要源代码。指定起始URL开始扫描。确定是不能准确定位代码的漏洞（因为是黑箱测试）。 官方工具下载地址：http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2008/06/23/finding-sql-injection-with-scrawlr.aspx 本地下载地址： http://cert.sjtu.edu.cn/download/sjtu/sql/Scrawlr.msi 微软的URLScan 3.0 Beta。这个工具可以被网站的维护人员使用。它是一个输入过滤工具。如果你发现网站被SQL注入工具，你可以在一边修补代码漏洞的同时，使用这个攻击在过滤掉恶意的输入。当然，修补代码中的漏洞是完全避免SQL注入攻击的真正解决方案。 官方工具下载地址：http://blogs.iis.net/wadeh/archive/2008/06/05/urlscan-v3-0-beta-release.aspx 本地下载地址： http://cert.sjtu.edu.cn/download/sjtu/sql/urlscan_v3_beta_x86.msi SWI的博客上有更进一步的描述。http://blogs.technet.com/swi/archive/2008/06/24/new-tools-to-block-and-eradicate-sql-injection.aspx 那么，这三个工具是如何配合使用的？下面给出一个例子。 步骤一：网站的维护人员使用Scrawlr扫描网站，检查是否存在SQL注入漏洞 步骤二：发现存在漏洞后，通知开发人员。开发人员使用MSCASI对ASP源码静态扫描来确定代码中什么地方导致的SQL注入攻击漏洞。 步骤三：在开发人员修补漏洞的同时，维护人员可以使用URLScan来过滤可能的恶意输入，以确保网站的安全。 这三个工具的配合使用可以很大程度上减少网站被挂马的可能。说实话，现在被挂马的网站实在是太多了！ from：褚诚云blog 今天，我也试了一下urlscan.ini文件， 加强了一下web，感觉这个东西还不错。遇到的问题是： 1. 发现某些中文的文件名图片不能够显示， 解决方法是把urlscan.ini文件中的 [Options] 节的AllowHighBitCharacters项,将值由0改为1,这样就可以显示中文的文件名称了！ 另外参考 urlscan配置文件必须遵从以下规则： （1）此文件名必须为urlscan.ini； （2）配置文件必须和urlscan.dll在同一目录； （3）配置文件必须是标准ini文件结构，也就是由节，串和值组成； （4）配置文件修改以后，必须重新启动IIS，使配置生效； （5）配置文件由以下各节组成： [Option]节，主要设置节； [AllowVerbs]节，配置认定为合法URL规则设定，此设定与Option节有关； [DenyVerbs] 节，配置认定为非法URL规则设定，此设定与Option节有关； [DenyHeaders]节，配置认定为非法的header在设立设置； [AllowExtensions]节，配置认定为合法的文件扩展名在这里设置，此设定与Option节有关； [DenyExtensions]节，配置认定为非法的文件扩展名在这里设置，此设定与Option节有关； 2)具体配置 （1）我们首先来看Option节的配置，因为Option节的设置直接影响到以后的配置，因此，这一节的设置特别重要。此节主要进行以下属性的设置： UseAllowVerbs：使用允许模式检查URL请求，如果设置为1,所有没有在[AllowVerbs]节设置的请求都被拒绝；如果设置为0，所有没有在[DenyVerbs]设置的URL请求都认为合法；默认为1; [...]]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/805.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cisco 3750配置</title>
		<link>http://www.linuxqq.net/archives/801.html</link>
		<comments>http://www.linuxqq.net/archives/801.html#comments</comments>
		<pubDate>Fri, 11 Nov 2011 04:20:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=801</guid>
		<description><![CDATA[控制台密码： (config)#line console 0 　　(config-line)#password 123 　　(config-line)#login 　　VYT密码： (config)#line vty 0 15 　　(config)#password 123 　　(config)#login 　　特权密码： (config)#enable password /secret 123 　　3、在配置文件中密码部分加密显示 　　(config)#service password-encrytion 配置VLAN configure terminal vlan 10 name 122.200.77.0 end 将端口加入vlan configure terminal interface gigabitEthernet 1/0/1 进入要分配的端口 switchport mod access 定义二层口 switchport access vlan 10 把端口分配给某一VLAN end 退出 配置VLAN IP地址 conf t int vlan [...]]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/801.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>子网掩码换算方法</title>
		<link>http://www.linuxqq.net/archives/796.html</link>
		<comments>http://www.linuxqq.net/archives/796.html#comments</comments>
		<pubDate>Sun, 06 Nov 2011 09:01:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=796</guid>
		<description><![CDATA[哎 看过了就忘 这次死死的记住 有点可恨 11111111.1111111.11111111.00000000 1是网络ID 0为主机位 2的8次方 就是代表可用多少主机 反过来算一下 假如我有64个电脑 需要算下这个的掩码 怎么算呢 2*2*2*2*2*2 就是11111111.11111111.11111111.11000000 110000000换算过来就是192 第一行左起第一个二进制1对应十进制的128 第一行左起第二个1对应十进制的64 第一行左起第三个1对应十进制的32 第一行左起第四个1对应十进制的16 第一行左起第五个1对应十进制的8 第一行左起第六个1对应十进制的4 第一行左起第七个1对应十进制的2 第一行左起第八个1对应十进制的1 上面这些关系要牢记，这是进制转换的基础！ 比方说将十进制的133转为二进制，可以这样想：因为133和128比较近，又由于公式表中左起第一个二进制1表示128，所以可以马上将待转换成 8位二进制的最左边的一位确定下来，定为1。再接下来，看到133和128只相差5，而5是4与1的和，而4与1分别对应公式表中的左起第6和第8位 ，所以十进制的133转换为8位二进制表示就是10000101，对应如下： 1 0 0 0 0 1 0 1 （二进制表示的133） 128 0 0 0 0 4 0 1 （十进制表示的133 在算一个 例如75 75与64离的近 确定第1个为1了 75-64=11 所以1+2+4=10001011 等于1 1 1 [...]]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/796.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wireshark LINUX抓包</title>
		<link>http://www.linuxqq.net/archives/793.html</link>
		<comments>http://www.linuxqq.net/archives/793.html#comments</comments>
		<pubDate>Thu, 03 Nov 2011 04:23:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=793</guid>
		<description><![CDATA[centos下安装wireshark相当简单.两条命令就够了.这里.主要是记录写使用方面的东西 安装: 1、yum install wireshark。注意这样并无法使用wireshark命令和图形界面。但提供了抓包基本功能。 2、yum install wireshark-gnome。这样就可以方便的使用了。 如果能登录图形界面终端.那使用和windows下的无区别.但我们的服务器都在国外.要管理的话都是SSH登录只能用命令行了。使用wireshark的命令行工具tshark，在安装的时候会默认给安装上的，使用方法很简单，要捕捉包： tshark -wpacket.txt -i etho -q 这样就会把捕捉到的网络包存放在packet.txt文件里面，要查看详情的话： tshark -rpacket.txt -x -V&#124;more即可. 下面理一下所有参数的作用: -a 设置一个标准用来指定Wireshark什么时候停止捕捉文件。标准的格式为 test:value,test值为下面中的一个。 duration:value 当捕捉持续描述超过Value值，停止写入捕捉文件。 filesize:value 当捕捉文件大小达到Value值kilobytes(kilobytes表示1000bytes,而不是1024 bytes)，停止写入捕捉文件。如果该选项和-b选项同时使用，Wireshark在达到指定文件大小时会停止写入当前捕捉文件，并切换到下一个文件。 files:value 当文件数达到Value值时停止写入捕捉文件 -b 如果指定捕捉文件最大尺寸，因为Wireshark运行在&#8221;ring buffer&#8221;模式，被指定了文件数。在&#8221;ring buffer&#8221;模式下，Wireshark 会写到多个捕捉文件。它们的名字由文件数和创建日期，时间决定。 当第一个捕捉文件被写满，Wireshark会跳转到下一个文件写入，直到写满最后一个文件，此时Wireshark会丢弃第一个文件的数据(除非将files设置为0，如果设置为0，将没有文件数限制)，将数据写入该文件。 如果duration选项被指定，当捕捉持续时间达到指定值的秒数，Wireshark同样会切换到下个文件，即使文件未被写满。 duration:value 当捕捉持续描述超过Value值，即使文件未被写满，也会切换到下个文件继续写入。 filesize:value 当文件大小达到value值kilobytes时(kelobyte表示1000bytes,而不是1024bytes)，切换到下一个文件。 files:value 当文件数达到value值时，从第一个文件重新开始写入。 -B 仅适合Win32:设置文件缓冲大小(单位是MB,默认是1MB).被捕捉驱动用来缓冲包数据，直到达到缓冲大小才写入磁盘。如果捕捉时碰到丢包现象，可以尝试增大它的大小。 -c 实时捕捉中指定捕捉包的最大数目，它通常在连接词-k选项中使用。 -D 打印可以被Wireshark用于捕捉的接口列表。每个接口都有一个编号和名称(可能紧跟在接口描述之后？)会被打印，接口名或接口编号可以提供给-i参数来指定进行捕捉的接口(这里打印应该是说在屏幕上打印)。 在那些没有命令可以显示列表的平台(例如Windows,或者缺少ifconfig -a命令的UNIX平台)这个命令很有用;接口编号在Windows 2000及后续平台的接口名称通常是一些复杂字符串，这时使用接口编号会更方便点。 注意，&#8221;可以被Wireshark用于捕捉&#8221;意思是说：Wireshark可以打开那个设备进行实时捕捉；如果在你的平台进行网络捕捉需要使用有特殊权限的帐号(例如root，Windows下的Administrators组)，在没有这些权限的账户下添加-D不会显示任何接口。参数 -f 设置捕捉时的内置过滤表达式 [...]]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/793.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>感谢北京服务器专家提供接入服务</title>
		<link>http://www.linuxqq.net/archives/785.html</link>
		<comments>http://www.linuxqq.net/archives/785.html#comments</comments>
		<pubDate>Fri, 07 Oct 2011 13:07:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=785</guid>
		<description><![CDATA[感谢北京服务器专家提供接入服务 北京服务器专家是专业提供北京服务器托管和北京服务器租用的一家IDC公司，感谢贵公司提供完美的服务器接入服务. linuxqq博客成立于2007年，经过2次改版，最终确定采用WOREDPRESS程序写出一些大家常用的技术文档以及一些常用的软件，主要是一些服务器技术,针对LINUX+PHP+PYTHON有较强优势。 对此推荐各位选择北京服务器专家的机房去托管你的服务器]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/785.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flv 开源的网页播放器</title>
		<link>http://www.linuxqq.net/archives/704.html</link>
		<comments>http://www.linuxqq.net/archives/704.html#comments</comments>
		<pubDate>Fri, 08 Apr 2011 07:57:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=704</guid>
		<description><![CDATA[发现了一个好用的JW PLAYER 播放器记录下 JW PLAYER 是一个界面简洁、功能齐全的在线flv flash播放器.有着很多可选控制参数。 多个参数可以混合使用,下面选择几个作简要说明： file (FLV文件的地址，如果不设置则默认为jw player flv网页播放器同目录的video.flv) autostart (是否允许自动播放，&#8221;true&#8221;或者&#8221;false&#8221;) image (未播放时的预览图片，只支持JPEG格式) repeat (是否重复播放) clicktext (开始时显示的文字，默认是&#8221;click to play&#8221;) 下载的最新版本flv网页播放器调用说明： &#60;script type=&#8221;text/javascript&#8221; src=&#8221;swfobject.js&#8221;&#62;&#60;/script&#62; &#60;script type=&#8221;text/javascript&#8221;&#62; var s1 = new SWFObject(&#8220;player.swf&#8221;,&#8221;ply&#8221;,&#8221;190&#8243;,&#8221;180&#8243;,&#8221;0&#8243;,&#8221;#FFB901&#8243;); s1.addParam(&#8220;allowfullscreen&#8221;,&#8221;true&#8221;); s1.addParam(&#8220;allowscriptaccess&#8221;,&#8221;always&#8221;); s1.addParam(&#8220;flashvars&#8221;,&#8221;file=/flv/video.flv&#38;image=/flv/preview.jpg&#38;autostart=true&#8221;); s1.write(&#8220;container&#8221;); &#60;/script&#62; 说明： autostart=true是设置自动播放，如果把true改为flash则不自动播放。 file=/flv/video.flv是设置播放flv文件的位置。 image=/flv/preview.jpg是设置未播放时的预览图片，只支持JPG的图片。 flv网页播放器JW Player使用说明(适用旧版本)： 一般调用程序代码 &#60;object type=&#8221;application/x-shockwave-flash&#8221; width=&#8221;400&#8243; height=&#8221;220&#8243;  wmode=&#8221;transparent&#8221; data=&#8221;flvplayer.swf&#8221;&#62; &#60;param name=&#8221;movie&#8221; value=&#8221;flvplayer.swf&#8221; /&#62; [...]]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/704.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>页面输出缓存（页面静态化）的设计</title>
		<link>http://www.linuxqq.net/archives/702.html</link>
		<comments>http://www.linuxqq.net/archives/702.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 01:37:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=702</guid>
		<description><![CDATA[随着网站规模的变大，访问量提升，网站服务器越来越不堪重负，浏览者也会对页面打开的速度怨声载道。 这时候最简单的解决方案就是增加缓存。 网站服务器的缓存有很多中，可以放在数据库和Web应用程序之间，也可以放在Web应用程序和Web服务器之间，还可以放在Web服务器和用户浏览器之间，甚至可以直接放在浏览器端。 其中最简单，需要配置最少的莫过于数据库和Web应用程序之间了，并且见效也最快，因为对于现代计算机系统来说IO是最大的瓶颈。常见的方法就是使用MemCache或者K-V型NoSQL数据库做缓存。 这么安逸了一段时间之后，网站的响应速度还是会降下来，如果你不想增加服务器的话，这时需要做的就是页面输出缓存了。 因为数据库和Web应用程序端的缓存只是将数据库中的键和值缓存下来，访问量大的话有一个命中率的问题，并且一个页面往往包含有大量的需要从数据库查询的值，就算数据库缓存全部命中，这其中也需要一个查询的过程，即时它很快。还有一个问题，就是对于Web应用程序来说，从获取数据到输出页面，中间还需要一些逻辑性运算和模板的渲染过程，这个过程也会消耗一段时间。 如果将一个页面响应的结果，也就是HTML页面，整体缓存下来，Web服务器直接输出缓存结果，这样的速度基本上相当于直接输出静态页面，对于服务器端的负载将会大大减轻。 对于页面输出缓存，或者有人称之为页面静态化，主要有以下几个问题： 页面个性化部分的处理。现在绝大部分网站都有登录给功能，对于同一个页面来说登录前后、不同用户登录后都会有不同的显示，比如说未登录时显示“登录或注册”，登录之后显示“欢迎用户XXX”，这样就会造成网站大部分页面都不能直接缓存。 其实这个问题是在页面个性化部分与非个性化部分合成的时间问题上。传统网站这个个性化部分也非个性化部分是直接放在Web应用程序上的，这样就导致不同用户输出页面的不同，缓存不能进行。如果把这个过程放在页面缓存程序之后，使缓存的结果相同就没有问题了。 常见的方式就是使用SSI、ESI和CSI。 SSI（Server Side Include）这个现在大部分的Web服务器都支持，可以在页面中使用&#60;!&#8211;#include file=&#8221;/user_info.shtml&#8221;&#8211;&#62;来替代原来个性化的部分，然后在Web服务器上就会去寻找这个.shtml文件，将它与页面合成。不过这有一个问题，ssi只能将静态文件与页面合成，这样对于做页面输出缓存意义并不大。 ESI（Edge Side Include）正是为了应付这种场合而出现的，它可以使用类似&#60;esi:include src=&#8221;http://example.com/1.html&#8221; alt=&#8221;http://bak.example.com/2.html&#8221; onerror=&#8221;continue&#8221;/&#62;的XML语法，在页面合成过程中调用一个动态页面，将动态页面的内容与现有网页合成。这样一来就可以将某个用户的个性化信息与缓存的页面文件合成了。ESI最大的问题就是现有Web服务器对此支持度不高。Nginx需要将第三方模块编译进来来支持ESI，代理缓存服务器中Varnish原生支持ESI。 CSI（Client Side Include）或者叫做Browser Side Include，就是在用户浏览器端将个性化信息与非个性化信息合成。说白了就是用ajax异步获取个性化信息，或者直接使用iframe显示个性化信息。实际上这个合成的过程越靠近用户浏览器端越好，这样就可以一直从Web服务器到代理服务器的缓存到CDN都可以用到这些完全相同的页面做缓存。但是使用ajax等方式有一些问题，就是对于不支持或者不开启的JavaScript的浏览器来说就不能正常访问页面了，现在很多网站都要考虑到手机客户端，其中不支持JavaScript的占大多数。并且大量使用ajax的话对用户浏览器来说也是一种负担，并且会造成页面加载很“卡顿”的感觉。 具体的做法还是依赖实际环境来决定。 剩下需要解决的方式是如何来缓存页面。 使用代理缓存服务器是一个比较不错的主意，比如Squid还有比较新的Varnish，它们都可以架设在Web服务器前端作为代理缓存服务器，将页面缓存下来。当页面需要更新的时候可以给它发送一个Purge请求加具体页面URL，就可以使代理缓存服务器去访问Web服务器，重新生成一个新的页面，然后将现有的页面缓存失效。这个过程中当新的用户访问请求达到时，代理缓存服务器还是使用之前的缓存，新的缓存页面生成结束后才使过期的页面失效。这样就不用担心更新缓存过程中所有用户请求都去直接访问Web服务器造成大量的压力了。这其中有一个问题，就是触发这个更新动作的用户，比如说他发布了一条回复造成页面更新，如果页面更新请求与页面缓存更新两个动作是异步的话，假如他的网速足够快就会看到自己刚才发布的帖子没有显示出来，造成重复发帖等动作。这个问题接下来再来想办法处理。 如果不想另外搞一个代理服务器的话，Nginx的fastcgi cache是一个好东西，可以直接将fastcgi的页面缓存下来。配合一个第三方的模块cache purge，可以通过访问/purge/url的方式来时缓存过期。另外Nginx+proxy cache+cache purge也可以达到上面Squid和Varnish的作用。 剩下还有一种方式，使用Nginx的rewrite，将缓存保存为一个静态文件，先检查静态页面是否存在，存在的话rewrite到此，不存在则访问Web应用程序。这样还需要另外配合一个独立的进程，来生成缓存页面。当Web应用程序触发更新时给此进程发送一个信号，缓存进程收到此信号后去Web服务器端或者Web应用程序端请求页面（为了做到松耦合和以后的服务器分离最好直接从Web服务器端），将请求生成的页面文件直接覆盖远缓存的静态文件，这样就可以更新缓存，并且在缓存更新过程中访问者依然可以使用之前的缓存文件。 还有一个问题，当很多用户在同一个时间点内同时触发一个页面的更新动作，这样就会导致此页面频繁更新，并且这些更新是不必要的，这就是所谓的惊群问题。 防止此事件发生，一个解决方案是使用队列。 一般页面发生内容变化是在提交POST请求之后，在此时给缓存更新系统发送一条消息，记录发生更新动作的类型、ID（比如说帖子更新，更新的ID）。缓存更新系统在接受到此消息时将消息进行预处理，根据配置文件计算出影响更新的页面（此帖子的页面，帖子列表的页面，等等）。 将此页面的URL插入进队列，更新程序在队列另一端取URL，每取一次URL就过滤一遍整个队列，将相同的URL队列消息删除出队列。这样就可以保证更新依次页面，就可以相应所有更新事件。取出后依据使用的缓存系统发送相应的Purge请求或者自主生成新的缓存页面覆盖老的野蛮来更新缓存。 这种去重复的队列实现可以用现有的模块，比如Python的一个Queue模块，继承此模块中的类并重写几个方法即可实现这种去重的队列。还可以使用现有的队列系统，甚至直接使用数据库来实现队列。使用数据库有一个好处，就是当整个系统Down掉的时候，系统重启后队列中的消息还存在，可以继续更新这些页面的缓存。如果直接使用内存中的队列的话系统Down掉重启就会导致一些未处理的队列消息丢失，导致这些页面的缓存都没有更新。这种情况出现的几率还有出现后对系统的影响需要根据实际情况斟酌，论坛系统如果发帖不是十分频繁，偶尔某个帖子或者回复没有出现并不是非常严重的问题。 一个好的系统应该是针对发生故障的情况而设计的。假如缓存系统出现问题，导致没有向缓存服务器发送更新请求，这时所有更新动作都不会得到相应，导致用户重复提交数据，可能会发生一些问题。这时如果能停掉缓存服务器，让用户直接访问Web应用程序或许是一个好主意（或者如果没有缓存的话服务器能被直接大量直接访问干掉），如果去做是一个问题。 Some Tips: 上面说的如果异步处理更新动作与缓存更新的话，可能会使更新触发者看不到自己更新的数据。这时可以使用一些小花招，比如现在大部分的论坛系统在发帖后跳转到一个“3秒后跳转到帖子页面”，就可以给缓存系统提供充分的更新缓存时间，对于用户体验来说也不会大打折扣。 有些页面不能使用缓存，比如说帖子列表页面。因为帖子列表页面是会随着最后回复时间来动态更新排列顺序的，一个新帖或者回复可能会导致所有帖子列表分页内容发生变化，而帖子列表分页可能有几千甚至几万页，全部都进行更新的话显然是不可能也没有必要的。因此这些页面不适用页面输出缓存，但我们可以只缓存帖子列表的第一页或者前几页，因为绝大部分的访问请求都是来自与这几个页面，每次更新动作都触发这几个页面进行缓存更新也是没有问题的。 假如网站每日发新帖的数量非常高，导致帖子列表更新十分频繁，这时可以使用另外一种更新触发机制，就是按时间来触发更新。这样定时更新的频率比之前按动作进行更新会少一些，并且也不会过分加重队列的负担。 网站首页的信息可能会比较复杂，触发其更新的来源可能会很多，更新一次的成本也较高，而首页对于事实性的要求也没有那么高（比如说在某个板块发布新贴，这时在首页的最新帖子列表中没有看到此贴，对于绝大部分用户来说并不是什么问题），因此也试用于按时间进行更新的机制，并且这个更新时间的间隔可以适当的拉长一些。 类似的还有帖子回复页，此页面也是一个列表排序页面，但是是顺序时间排列的（帖子列表为倒序时间排列的），因此也十分适用与使用缓存。如果网站当初设计的功能为显示所有楼层，删除某一楼层的话此位置消失，这样的话如果删除一个楼层将会导致此页面和接下来所有页面的内容发生变化。因此在网站设计时最好设计成这样：删除一条回复，此回复还在，只不过内容改为了“评论已删除”，这样就不会触发所有后来页面进行缓存更新了。]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/702.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dlink dir 365 双无线路由</title>
		<link>http://www.linuxqq.net/archives/688.html</link>
		<comments>http://www.linuxqq.net/archives/688.html#comments</comments>
		<pubDate>Sun, 13 Mar 2011 08:01:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[乱7八糟]]></category>

		<guid isPermaLink="false">http://www.linuxqq.net/?p=688</guid>
		<description><![CDATA[  买了2个无线路由 型号是DLINK DIR 365 均有无线功能 2个路由分别简称A,B 一根ADSL接入，B路由接到A路由上。 A：192.168.0.* B:192.168.1.* 配置好后 1楼用A路由上网 2楼用B路由上网 均正常。但是问题就出在需要共享一个打印机，现在只有A路由网段可以使用打印机，B路由网段无法使用，跨网段了。 发现DLINK DIR 365 没有无线网桥功能 郁闷呐。。寻找了半天 发现可以做路由策略 在B路由上设置 凡是目的地192.168.0.*的包 都通过192.168.1.1的WAN口出去 OK了 就这样正常了 说白了做了一个NAT 。实现了无线功能打印 转载注明(LINUXQQ) 在高级里面 找到路由功能]]></description>
		<wfw:commentRss>http://www.linuxqq.net/archives/688.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

