技术掘金 - 建站优化/相关
type: channel
link: http://blog.guqiankun.com/category/optimiza/
items: IIS Express杂记
items: Jexus 中的 ASP.NET 前置缓存
items: Jexus Web Server支持高并发请求的优化技巧
items: CodeIgniter在Nginx中的Rewrite Rules配置
items: LLsMP一键安装包及使用教程
items: 开启SAE的Gzip压缩为WordPress提速
items: SEO的数据分析II——如何改善网站收录
items: SEO的数据分析I——开头和收录部分
items: WordPress for SAE优化
items: 使用wordpress主题的简单优化

IIS Express杂记
type: item
date: 2017-02-25T19:52:00+08:00
description: web项目的缓存目录：C:\Users\Administrator\AppData\Local\Microsoft\WebsiteCacheIISExpress的日志目录：C:\Users\Administrator\Documents\IISExpress\LogsIISExpress的配置目录：C:\Users\Administrator\Documents\IISExpress\configapplicationhost.config文件比较重要，在system.applicationHost > sites结点下定义每个托管的站点配置，如下示例： <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> <binding protocol="http" bindingInformation=":8080:localhost" /> bindingInformation默认监听的是localhost，也就是说别人是无法访问你的本地站点的，vs创建出来的web项目默认值就是这个，但是可以通过修改配置文件再通过命令启动IIS Express打到目的。"C:\Program Files\IIS Express\iisexpress.exe" /site:site-name or site-id

Jexus 中的 ASP.NET 前置缓存
type: item
date: 2013-08-22T09:41:00+08:00
description: 请问Jexus 中的 ASP.NET 前置缓存体现在哪里？实现方法：在需要前端缓存的ASPX网页靠前的部分，加上下面一句就行：<%Response.AddHeader("PageCache-Time","60");%\>解释： 一、ASP.NET前置缓存，是Jexus把指定的ASP.NET网页内容缓存起来，在指定的时间内，所有对这个网页的访问，Jexus都用这个缓存内容回应，而不再驱动ASP.NET引擎对这个网页反复处理。 二、前端缓存的优点在性能方面，本质上是以最简单的方式把“动态网页静态化”，因此，缓存期中，被缓存的网页的响应速度绝不亚于普通的静态文件，比原ASPX，快3-6倍；弱点是，在缓存期中，这张网页无法反映数据的变化（因为已经静态化），所以，不适合数据内容随时都在发生变化的交互式网页。 三、ASP.NET前置缓存的指令是通过Resonse.AddHeader向Jexus发出的。AddHeader含两个参数，在这里，第一个参数必须是“PageCache-Time”，目的是告诉Jexus，这是一条缓存指令，第二个参数是缓存的时间，单位是秒，这里的“60”即是指缓存60秒的意思。

Jexus Web Server支持高并发请求的优化技巧
type: item
date: 2013-08-16T12:37:00+08:00
description: Jexus web server每个工作进程的最大并发数固定为1万，最多可以同时开启4个工作进程，因此，每台Jexus服务器最多可以到支持4万个并发连接。但是，按照linux系统的默认设定，linux是不能支持这么高的并发请求的，只有对linux进行一些必要的优化，才能达到让Jexus支持大并发的目的。一、调整文件描述符数量限制编辑 /etc/security/limits.conf，更改或添加入如下内容：soft nofile 20000\ hard nofile 20000二、调整网络参数编辑“/etc/sysctl.conf”，更改或添加如下内容：net.core.somaxconn=8192\ net.ipv4.tcp\_syncookies=1\ net.ipv4.tcp\_tw\_reuse=1\ net.ipv4.tcp\_tw\_recycle=1\ net.ipv4.tcp\_fin\_timeout=30\ net.ipv4.tcp\_keepalive\_time=1200\ net.ipv4.tcp\_max\_syn\_backlog=8192\ net.ipv4.tcp\_max\_tw\_buckets=10000如果启用了iptables防火墙并加载了ip\_conntrack模块，还需加入：net.ipv4.ip\_conntrack\_max = 10240注：ubuntu是“net.ipv4.netfilter.ip\_conntrack\_max”。上述参数修改完成后，请用"sysctl -p" 命令使其生效。三、整调Jexus工作进程数Jexus默认工作进程数为1，为了支持更大的并发数量，应根据服务器CPU内核数量及内存大小，合理调整工作进程数量，建议每6-8核CPU用一个进程，最多可设4个进程。方法是，编辑jws.conf，去掉“httpd.processes”项前边的“\#”号，把进程数填写到等号右边（Jexus最大值不超过4）。注：1）进程数与cpu的总核数有关，建议8核以内设为2，16核设为3，更多内核数就设为4。2）进程数还与服务内存及WEB应用所占内存的多少有关，建议每个工作进程平均内存可用量不低于512M。四、mono版本选择建议使用mono最新的成熟版本。

CodeIgniter在Nginx中的Rewrite Rules配置
type: item
date: 2013-06-16T06:49:00+08:00
description: 为了学习CodeIgniter的使用,今天把www主机名下的一些页面改写了。可是由于在我本地测试是用的Apache Web服务器，正式发布用的是Nginx Web服务器，它是不支持Apache中的.htacess和pathInfo的，所以得重新作相关配置。首先，推荐一个工具convert-apache-htaccess-to-nginxIf you are a CodeIgniter enthusiast, you know that finding rewrite rules for Apache (htaccess file) is relatively easy, but doing the same for Nginx rewrite rules is not all that simple. Use these Nginx rewrite rules to get your next CodeIgniter project up and running.So I had a little fun with Nginx this weekend, I setup a rackspace server, installed Nginx (with PHP and MySQL), and installed CodeIgniter.If you are a CodeIgniter enthusiast, you know that finding rewrite rules for Apache (htaccess file) is relatively easy, but doing the same for Nginx rewrite rules is not all that simple. The rules that follow are from my original article: CodeIgniter htaccess (for Apache) and are an exact translation into Nginx rewrite rules.CodeIgniter Nginx ConfigHere is the entire config file that I use. Remember that some of these rules are commented out, you will have to explicitly enabled them by removing the comments (removing the “#” from in front of the rule).server { server_name .example.com; access_log /var/log/nginx/example.com.access.log; root /var/www/example.com/html; index index.php index.html index.htm; # enforce www (exclude certain subdomains) # if ($host !~* ^(www|subdomain)) # { # rewrite ^/(.*)$ $scheme://www.$host/$1 permanent; # } # enforce NO www if ($host ~* ^www\.(.*)) { set $host_without_www $1; rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; } # canonicalize codeigniter url end points # if your default controller is something other than "welcome" you should change the following if ($request_uri ~* ^(/welcome(/index)?|/index(.php)?)/?$) { rewrite ^(.*)$ / permanent; } # removes trailing "index" from all controllers if ($request_uri ~* index/?$) { rewrite ^/(.*)/index/?$ /$1 permanent; } # removes trailing slashes (prevents SEO duplicate content issues) if (!-d $request_filename) …

LLsMP一键安装包及使用教程
type: item
date: 2013-05-27T07:25:00+08:00
description: LLsMP顾名思义是Linux+LiteSpeed+MySQL+PHP的一套Web环境。相信可能大家对LNMP更熟悉一些，至于孰好孰坏，我在这里也不卖弄了，毕竟自己也是刚刚接触LLsMP，所以不方便多说，但是从现有资料来看，LiteSpeed的负载能力很强，占用资源也极低，而且对于.htaccess的rewrite规则支持也非常不错，这也是Nginx一个很大的缺陷吧（许多伪静态的规则需要自己完成…）。LLsMP一键安装包及使用教程本文介绍的LLsMP一键安装包是llsmp.org进行发布，本文仅对常用设置与命令进行整理汇总！安装LLsMP安装更多附加组件LLsMP相关管理命令LLsMP常用目录截止本文发表，最新版本0.6已知的问题安装LLsMP支持平台:CentOS 5/6 , Debian 5/6 , Ubuntu 10/11安装命令:安装PHP5.3版本完成之後要重启MYSQL/etc/init.d/mysql startCentOS: PHP5.2 wget http://llsmp.googlecode.com/files/llsmp0.6_centos.tar.gz;tar zxvf llsmp0.6_centos.tar.gz;cd centos;sh install.sh PHP5.3 wget http://llsmp.googlecode.com/files/llsmp0.6_centos.tar.gz;tar zxvf llsmp0.6_centos.tar.gz;cd centos;sh install.sh php5.3 Debian: PHP5.2 wget http://llsmp.googlecode.com/files/llsmp0.6_debian.tar.gz;tar zxvf llsmp0.6_debian.tar.gz;cd debian;sh install.sh PHP5.3 wget http://llsmp.googlecode.com/files/llsmp0.6_debian.tar.gz;tar zxvf llsmp0.6_debian.tar.gz;cd debian;sh install.sh php5.3 Ubuntu: PHP5.2 wget http://llsmp.googlecode.com/files/llsmp0.6_ubuntu.tar.gz;tar zxvf llsmp0.6_ubuntu.tar.gz;cd ubuntu;sh install.sh PHP5.3 wget http://llsmp.googlecode.com/files/llsmp0.6_ubuntu.tar.gz;tar zxvf llsmp0.6_ubuntu.tar.gz;cd ubuntu;sh install.sh php5.3 安装更多附加组件：安装eAccelerator : sh /root/llsmp/eaccelerator.sh安装Zend Optimizer : sh /root/llsmp/zend_optimizer.sh安装ionCube Loader : sh /root/llsmp/ioncube.sh安装Google Performace Tools : sh /root/llsmp/perftools.sh安装FTP(vsftpd) : sh /root/llsmp/vsftpd.sh安装Nginx前端 : sh /root/llsmp/nginx.shLLsMP相关管理命令：创建Litespeed虚拟主机 : sh /root/llsmp/vhost.sh添加FTP账号 : sh /root/llsmp/vsftpd.sh重要！虚拟主机权限修正: chown -R nobody:nobody /home/wwwroot/域名/html创建Nginx虚拟主机 : sh /root/llsmp/nginx.sh备份指令 : sh /root/llsmp/backup.sh重启Litespeed : /etc/init.d/lsws restart重启MySQL : /etc/init.d/mysql(d) restart重启Nginx : /etc/init.d/nginx restartLLsMP常用目录：Litespeed管理后台 : http://{ip}:7080phpMyAdmin : http://{ip}/phpmyadmin/php.ini目录 : /usr/local/lsws/lsphp5/lib/php.iniMySQL配置文件my.cnf : /etc/my.cnf (Centos) | /etc/mysql/my.cnf…

开启SAE的Gzip压缩为WordPress提速
type: item
date: 2013-05-18T09:39:00+08:00
description: 自从把WordPress搬家到SAE之后、就不用在担心网站时不时不能访问的问题、速度也还不错。对于SAE上的博客来说、开启Gzip技能提高访问速度还能减少云豆的消耗(云豆实实在在的钱100块换1W云豆)于是今天测试了下SAE的压缩功能、在chianz上面测试了一下发现SAE默认是开启Gzip压缩功能的、后来去查帮助发现可以在SAE后台开启Gzip压缩、但是在后台开启Gzip压缩之后发现SAE默认只对静态文件进行压缩、但是WordPress我们是做成伪静态的、所以文章都没有被压缩。各种捣鼓之后搞定了SAE上面对WordPress的伪静态压缩。下面详细说明下SAE的压缩功能登录SAE后台选择好应用之后到AppConfig页面然后选择<页面压缩>之后需要输入完全密码在<页面压缩>界面在按照文件类型压缩里面讲所有文件都添加进去、随便在设置下按内容长度压缩我设置的10240字节(10K)到这里之后SAE后台的设置完成了、但是如果你去测试的话发现只有jpg、png、css之类的被压缩了、而文章页面完全没有被压缩。接下来我们打开index.php文件、找到define(‘WP_USE_THEMES’, true);这行、在这行下面添加ob_start(‘ob_gzhandler’);然后保存通过SVN上传到SAE上。(当然你也可以直接在SAE后台代码管理里面修改文件)Index.php更新完成之后再次去测试下Gzip压缩是否生效、这个时候我们的压缩就成功了、压缩率在80%左右、一个100K的文件压缩到20K这绝对能剩下不少的豆豆的。PS:如果还有什么疑问可以给我留言、会为大家解决的。

SEO的数据分析II——如何改善网站收录
type: item
date: 2013-04-28T15:24:00+08:00
description: 距离上一篇SEO的数据分析已经过了好久了，最近觉得应该写一些实际点的内容看看SEO到底怎么做。 先明确一些基本点，一个网页被收录与否，有两个因素是否被爬虫爬过页面质量是否过关上一篇文章已经提过了收录率这么一个指标，很多网站都懒得去做这个指标，“我看看site的数据不就行了！”，事实上没有这个指标，很多工作就无从下手。从数据中找出问题，利用数据指导解决方案，分析数据验证工作成果。 最近看了《深入浅出数据分析》这个本，觉得不错，把数据分析的方法讲得很生动，建议有兴趣的从事数据分析的同学可以买本看看。 任何数据分析由，目标->分析->评估->决策，四个环节组成。目标：我们想看一下网站的收录情况如何，在SEO方面是否还有提高的机会。分析：收录情况什么算好什么算坏，是不是用一些指标来衡量？网站的收录情况是不是过于笼统，是不是应该细分下各个页面的收录情况？评估：于是我们需要下面一些数据网站的页面层级关系各个层级页面带来的SEO流量各个层级页面的收录情况如何SEO流量的占比可以从Google Analytics中过滤出来。页面数量可以从数据库获得，或者通过火车头or自制小脚本抓取统计。收录率可以将获取的页面通过工具进行搜索，火车头也可以。问题立马凸显！1+2级目录页带来了大量的流量，收录率不是很好，优化收录的流量提升突破口在此！产品页面数量很多，收录也不是很理想，但是带来的流量有限，除了收录问题，还有页面内容的问题，本文中先不管它了。决策：我们的结论是立刻展开行动对目录页面进行收录的优化。看到这边，似乎刚开始的目标：“通过优化收录提升流量”演变成了新的目标：“如何提高目录页面的收录量”这边能不能再次通过数据分析的方法进行SEO呢？答案是肯定的！我们再来重新走一遍 目标->分析->评估->决策 的过程目标：提高目录页面的收录量分析：通过本文开始的有关收录的两个因素，我们需要检查一下，网页是否被爬虫爬行过，网页的质量是不是过关。关于爬虫的情况，我们需要分析日志，才能确定。于是我们从日志中拆分一系列数据看看页面是否真的被爬行过。由于页面质量似乎是一个很难衡量的值，于是我们可以用相同模板下的：已被爬行的页面数量/已被爬行并且被收录页面数量来评估该模板页面质量对收录的影响大小。如果被爬的页面都被收录了，那至少说明这套页面的内容搜索引擎还算认可。（实际情况远比这个复杂，而且收录后也有可能因为质量问题被删除，但总比什么参照都没有要好，对吧！）评估：（敏感信息用编号代替，均为真实数据）先看一下爬虫日志的情况，通过Shell脚本，我们可以分析出。目录总计被爬行的次数为13000次左右不重复的目录爬行次数为5500次左右频道A下的目录几乎被100%抓取过至少1次，频道B的目录抓取也不错，有70%被至少抓过一次。其余频道下的目录被抓取的覆盖率不到30%不要觉得这个结果很神奇，其实很多网站都会面对这样的糟糕问题，只要你把数据不断的细分，细分，再细分，总会观察出一些端倪的。关于日志分析，不要迷信任何的日志分析软件，那都是给懒人用的，自制脚本+Excel才是王道，可以拆分显示出任何你想要的数据，当然，甚至可以连Excel都不要。然后，我们统计了一下被抓得最频繁的频道A和频道B，目录页的收录率频道A和B是很让人放心的，说明页面质量没问题，但是余下的收录情况就让人比较担心了。决策：通过上面的数据评估，我们已经得到了如下结论。页面质量并不是影响收录的原因。频道A，B的抓取量异常的高，通过调查了解，原来是首页上的目录页，显示的全是频道A下的目录页，首页又拥有全站最高的权重。频道B拥有比其他频道强大的外链资源，权重也非常高。除了A, B频道，其他频道的抓取情况不容乐观，抓取入口太少，太深，进而影响了收录情况。很明显，现在频道A从站内的角度来说太强大了，必须进行一些“劫富济贫”的运动来降低频道A的抓取量，转移到其他频道中去。同时，需要给爬虫提供更多的入口抓取频道页。现在问题变得清晰起来，我们开始把工作分成两部分：1.提供更多的入口 2.将资源平分给各频道而不是集中在少数几个频道上。提供入口工作：把目录页的URL制作成sitemap。提交给搜索引擎，并且将其设置为比较高的抓取权重。完善面包屑导航，将面包屑导航划分得更加细致，以提供更多入口在其他产品中推荐目录页资源平分工作：（一些概念：任意页面都有可能成为爬虫入口，百度爬虫抓取深度有限，页面相对入口越浅，被抓取的概率越高。）原先首页指向的都是频道A的目录页+产品页，将其全部nofollow，确保从首页进入的爬虫，全部抓取到频道页，通过频道页再进入目录页（其实这个不算太重要）原先频道页指向自身的产品页，将其全部nofollow（确保从频道页入口的爬虫，最大程度的抓取目录页）从目录页返回到首页的链接，将其全部nofollow。减少一些页…

SEO的数据分析I——开头和收录部分
type: item
date: 2013-04-27T15:21:00+08:00
description: 虽然有些文章很老，但是到现在已经很有指导性作用。我这边也先不借用谁的理论，我们从事实出发，好好回想一些用户是如何通过搜索引擎来到我们网站的？用户在搜索框中输入一个关键词用户在搜索结果页面中阅读大量结果用户点击进入某个它满意的结果OK，这是最简单的一次用户访问，事实上用户还有一些其他情况，本文先不展开讨论。我们还是针对每一条用户操作，设定一些问题，然后再对应的问题，我们来找一些数据出来解决这个问题。我们想知道用户搜索了什么关键词？这个关键词的目的是什么？我们的页面能不能满足用户的这种需要呢？我们的页面，如何出现在搜索结果页面中？如何在搜索结果页面中脱颖而出，让用户点击你？如果把这三点做好，我相信一个网站的SEO流量绝对不会低。我们如何开始做？（夜息注：本文没有一步速成的方法，如果想一步登天可以绕道）就拿第二个问题来看，我们的页面，如何出现在搜索结果中？这是一个看似很愚蠢的问题，“哈哈，不就是收录的问题吗？”，有人会说，“我的网站早就被百度收录了，但是什么流量也没有”。我们来看看下面这个例子。这个网站百度收录有7百多万页面，看起来不错，我们到这个网站上去看看。有一个叫“国际酒店”的频道，上面写有13万酒店预订服务信息。换句话说，我至少有13万个不重复页面，来描述这些酒店信息。百度收录1770，Google收录18200，如果算上一些索引页，那总体收录比率只有1%，甚至更少。(夜息注：inurl的查询方法并不是很准确，所以还有待考证，本文只是做一个例子)再换言之，如果我在百度，Google上搜索大部分的国际酒店预订信息，这个网站的页面可能不会出来在搜索结果中。因为根本还没被收录。看到一个10年的数据，说中国10年的时候有5000多万人次出境。如果估算30%人需要订酒店入住，那这就是一个巨大的流量机会了。很显然，这个网站这这块细分蛋糕上还有很大的提升空间。如果作为SEO集中精力解决这个频道的收录问题，相信对网站业务有很明显的提升。如何解决收录问题，我相信很多人已经很有办法了。我也就不老声长谈了，很多东西都能在上面推荐的文章中找到，就总结一下我自己分析的SEO数据。某频道爬虫每日抓取量某频道爬虫每日不重复抓取量某频道爬虫单页下载时间某频道网页响应速度某频道每日爬虫到访次数某频道Top目录某频道收录比例抽查某频道响应代码统计依靠这些数据，我们很清楚的就能了解到某频道的网站收录情况如何，问题出在哪里。是压根没爬到？还是爬太少？还是爬不全？还是页面质量太低？还是服务器配置错了？还是服务器Down掉了？一切问题，都逃不出这些数据的法眼。

WordPress for SAE优化
type: item
date: 2013-04-18T15:08:00+08:00
description: 最近一段时间在思索如何让ZenBlog的访问速度变快，因为之前用的是sae的域名绑定方案，www.guqiankun.com 的域名解析到的其实是境外的IP，我测试了一下，除了移动的线路，电信和网通的线路访问的都很慢，但是如果直接访问 abc.sinaapp.com 的话基本上是秒开的。我做的第一次优化是给config文件添加了一条重写规则，如下：- rewrite: ^(.*)$ http://abc.sinaapp.com/$1 效果还是很不错的^_^

使用wordpress主题的简单优化
type: item
date: 2013-04-01T14:43:00+08:00
description: 昨天晚上对蹭书网的主题做了一下简单优化，参考的是前Yahoo前端性能工程师写的《高性能网站建设指南》里的14条黄金规则，这些不仅仅对web前端人员有用，相信对广大站长在优化他们的站点的时候也有用以下介绍一些详细细节：减少HTTP请求次数合并CSS、JS，改进首次访问用户等待时间，进入wordpress的主题目录，一般目录下都会有个style.css，除此之外有些主题可能还有css、style之类的包含.css文件的文件夹，我们需要做的就是把其他的.css文件里的内容copy到style.css里面,然后移除head里面对其他.css文件的应用；同理js文件也一样。PS.图片的操作麻烦一点，需要用到工具合并并且需要一些css改写的功底为文件头指定Expires使内容具有缓存性。避免了接下来的页面访问中不必要的HTTP请求。使用gzip压缩内容压缩任何一个文本类型的响应，包括.html，.css，.js，XML文件，都是值得的。以上2、3两点一般都在相应的控制面板有设置的，比较方便，就是选择你需要的文件类型添加。把CSS放到顶部，把JS放到底部这是为了把网站信息更快呈现给访客，防止js加载对之后资源造成阻塞。 选择.css文件放到标签里，.js文件放到footer.php里的前面，相信大家的统计脚本就是写在这里的^_^压缩JS和CSS把我们的这些文件内容进行压缩，这些工具从搜索引擎上搜索，有很多，一般我都是选择对内容简单地格式化压缩，移除不必要的空格和换行，使得内容只有一行，减小文件；