采用多域名解决wordpress附件下载的速度响应问题

    很多人采用wordpress来做图片型的网站,在页面上通常需要加载很多上传的附件图片。虽然wordpress的空间可以指定附件为一个绝对的URL地址,但远远不够解决浏览器下载的线程机制的限制。下面是我针对wordpress的解决办法。

    在说办法之前,先来了解下浏览器的下载线程是什么。简单点来说,就是你在用浏览器打开一个网页页面时,若这个页面上所有图片、样式、js等放在同一个域名之下,那么浏览器向服务器请求时就必须请求一个下载完再请求下一个(或可以同请求几个下载完再继续请求,不同浏览器有所不同)。若这个页面下的图片、样式、js等这些文件都放一个域名并过多的话,打开网页页面时等待的队列也就长。(如你2M的宽带对比4M的宽带是快不了多少的) 解决的思路就是同时下载更多数据,限于同域名下的限制问题,我们可以采用多域名的方式来解决。 若你的空间允许绑定多个子目录,那么可以设多个子域名绑定到wordpress的附件wp-content/uploads/下。 我的是把我的子域名http://oss.tsov.net/和http://oss.tsov.net/绑定到wp-content/uploads/下的。 同时在后台的"设置","媒体"中指定你设定的子域名(若你博客已有数据,可用phpmyadmin执行语句,一次性把附件转换过来), 比如我的设置为:(文件的完整 URL 地址: http://oss.tsov.net) 接着在你主题下的functions.php文件中加入下面代码。

    <?php
    function setting_pic_tsov_net($content) {
    	$pattern="/<img**************/"; (因此处无法显示完整代码,请点击下载完整的代码
    	preg_match_all($pattern,$content,$match);
    	$iNumberOfPics = count($match[0]);
    	for ( $i=0; $i < $iNumberOfPics ; $i++ ){
    		$tsovnet= str_replace('pic.tsov.net','pic'.rand(0,1).'.tsov.net',$match[1][$i]);	
    		$content=str_replace($match[1][$i],$tsovnet,$content);
    	}; 
    	return $content;
    }
    add_filter( 'the_content','setting_pic_tsov_net',12);
    ?>

    上面的代码作用就是把你日志中的图片路径进行随机的替换。 如: http://pic.tsov.net/1.jpg 随机替换成: http://pic2.tsov.net/2.jpg 或 http://pic3.tsov.net/2.jpg 当然,若你站图片非常多,那么可以把随机生成的rand(0,1)改为rand(0,9)。那么你就要把你的子域名:

    http://pic1.tsov.net

    http://pic2.tsov.net

    http://pic2.tsov.net

    http://pic3.tsov.net

    http://pic4.tsov.net

    http://pic5.tsov.net

    http://pic6.tsov.net

    http://pic7.tsov.net

    http://pic8.tsov.net

    http://pic9.tsov.net

    都绑定到wp-content/uploads/下。 若你的一个页面上图片不是很多很多的话。就好不要有过多的子域名(域名解析也要是时间呀)。

    一般控制在2-3个够了。大致可以这个计算一下:一个子域名同时下载5个,那么同一时间里你有多少个需要下载,相应就除以5就是你要用子域名数了。

     

    以上只是我最初的一个实现方法,后来发现采用随机数rand(0,1)图片的路径经常变,这对搜索引擎也许不太好,最好固定,于是我用这么用: $tsovnet= str_replace('pic.tsov.net','pic'.substr(decbin(md5($match[1][$i])),-1).'.tsov.net',$match[1][$i]); 这句就不解释了,太累赘了。不过终于实现我最终的目的了。 当然,上面涉及到很多其它优化的问题,我就不多说了。 另外:比如把子域名指向到不同的空间上,每次发表带附件的日志时,就把附件同步到其它空间上。(这个同步可以写个程序用404下载过去等等怪异的好方法) 说了这么多,大家看时一定一头雾水吧。那就先体验一下实现后的效果吧。https://tsov.net/category/album/

相关文章
狗他爹是如何强奸用户的公告:域名imsu.net归入本人名下优化wordpress的图库(相册)lightbox效果博客与附件分家了wordrepss的HTML编辑模式添加链接增加target="_blank"7月1日 .Com .Net域名涨价写Wordpress博客不自动生成缩略图的方法wordpress实现附件分离到另一服务器wordpress半角引号变成全角引号问题的解决国内DNS服务商还是DNSPod牛解决tsov出国后无法直接在后台备份及发送邮件的问题Tsov-Weather plus升级至1.4版(解决UTF-8编码和指定城市的功能)TSOV的wordpress天气插件功能升级了[紧急通告]TSOV的wordpress天气插件访问量过大,请更换分站地址网站PR更新的感悟正式成为米农,接受中国特色互联网的摧残我的wordpress weather widget(天气插件)饲养蜘蛛技巧用Rewrite实现域名转向
    标签:域名wordpress 评论数:7 发布于:2010-10-25 22:33:08

当前共有7条评论,我也要发表:

    我的名字:

    我的邮箱:

    作者:bombless时间:2012-05-12 20:21:49回复

      以前的时候倒是喜欢强调建立连接的开销。。HTTP 1.1了支持Connection: keep-alive了,又有说要多线程了。。返祖现象么= = 我们主管倒是让我把大图切块,说完全载入花的时间少一点 个人感觉对于不同网络条件的用户来说,体验最好的方案大概是不同的。。

      作者:SimonSu时间:2012-05-14 10:44:36回复

        平衡的问题、。大图切块,文件总体积不会变小反而会变大,另外网站的联接线也会变多,当然也要看你整个网站的联接数了。另外,如果分域名加载的好处是避免浏览器的线程问题,当然解析域名也要时间。还是刚才前面说的一个怎样平衡的问题。

    作者:henry时间:2011-12-05 23:34:21回复

      你好博主,怎么phpmyadmin执行语句,一次性把附件转换过来。语句怎么写,请指教

      作者:SimonSu时间:2011-12-06 09:27:29回复

        你可以参考下:https://tsov.net/where-the-use-of-sql-statements-in-mysql-pages-volume-replacement-characters/

    作者:指舞六弦时间:2010-11-02 23:15:14回复

      simon,我的确一头雾水哟,呵呵

      作者:simon时间:2010-11-03 01:07:12回复

        简洁点说就是浏览器对同一域名上的资源下载有线程限制的。现在可通过把页面上的东西分多几个域名(也不能太多)来实现并行下载,起到快速加载完成。

    作者:Dianso时间:2010-10-26 03:46:24回复

      收藏此文,或许有用