destoon二次开发-修改seo分类标题逻辑

destoon列表页的title,keywords,description逻辑修改。在后台destoon后台seo模块中,存在seo相关的设置:title,keywords,description。大型的网站中的分类列表页的tkd设置非常多,为了更加方便。故修改原来的逻辑:如果分类的seo已经设置,这调用分类的,否则就调用模块的设置并且只调用当前分类的名称({$catname})。

例子:

销售模块中的行业分类seo的title设置为:
专业母婴健康|孕妇保健_母婴保健法及孕妇保健品

destoon中的seo优化设置的列表页title:

最新{$catname}产品报价_{$catname}产品价格推荐{页码}-{网站名称}

设置分类的seo后,前台显示的title,keywords,description如:
http://www.xcbjp.com/sell/list/33/

未设置分类seo,而在销售模块设置seo数据后,前台显示title,keywords,description如:

http://www.xcbjp.com/sell/list/58/

  //如果seo分类标题填写则调用,否则调用seo模块设置中的默认设置。
  include\seo.inc.php
  代码中判断为列表后,修改如下:
 if($MOD[‘title_list’]) {
        if($CAT[‘seo_title’]){
          $seo_title=$CAT[‘seo_title’];
        }else{
          eval("\$seo_title = \"$MOD[title_list]\";");
        }
    } else {
      $seo_title = $seo_cattitle.$seo_page.$seo_modulename.$seo_delimiter.$seo_sitename;
    }

Nginx Gzip 压缩模块优化网页conf配置

随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢?
gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。gzip 的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的巨大多数浏览器 都支持解析gzip过的页面。
Nginx的压缩输出有一组gzip压缩指令来实现。相关指令位于http{….}两个大括号之间。

gzip on;
//该指令用于开启或关闭gzip模块(on/off)

gzip_min_length 1k;
//设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。

gzip_buffers 4 16k;
//设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。

gzip_http_version 1.1;
//识别http的协议版本(1.0/1.1)

gzip_comp_level 2;
//gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)

gzip_types text/plain application/x-javascript text/css application/xml
//匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。
gzip_vary on;
//和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

nginx 配置gzip段如下:

gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;

注意:

不要在gzip_types中增加text/html,若增加会出现下面错误

#Starting nginx: [warn]: duplicate MIME type “text/html” in /usr/local/nginx/conf/nginx.conf:23

解决办法:去掉下面一行中的“text/html”。

gzip_types  text/plain text/html  text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

原因:text/html根本就不需要写的,gzip默认就会压缩它的,只不过以前的nginx版本不提示这个警告而已,新版本的会出这个警告。

 

软件行业公司员工薪酬排行榜

最近,美国科技媒体SAI联同Glassdoor.com一起列出了科技行业前25家薪水最为丰厚的公司。

1. 冠军:思科的员工薪水排名第一!

平均薪水: 122,314美元

薪水最高的职位:高级总监(208,679美元)

薪水最低的职位:客户支持工程师(69,683美元)

2. 雅虎为员工支付的薪水依然非常可观

平均薪水: 118,290美元

薪水最高的职位:产品管理总监(154,330美元)

薪水最低的职位:销售经理(64,333美元)

3. Guidewire的工作环境非常优秀,其薪水也很好。

平均薪水: 117,515美元

薪水最高的职位:高级集成架构师(132,250美元)

薪水最低的职位:质量保证工程师(95,625美元)

4. Twitter是目前员工薪水最高的创业公司之一。

平均薪水: 116,324美元

薪水最高的职位:系统软件工程师(130,000美元)

薪水最低的职位:产品设计师(98,222美元)

5. Zynga的工作环境可能并不那么有趣,但是薪水非常好。

平均薪水: 111,004美元

薪水最高的职位:工作室总经理(158,976美元)

薪水最低的职位:游戏设计师(77,767美元)

6. Intuit是一家老公司,但是其员工的薪水依然很好。

平均薪水: 110,575美元

薪水最高的职位:高级产品经理(134,525美元)

薪水最低的职位:旋转开发专员(Rotational Development Associate,61,161美元)

7. Adobe是Photoshop的研发公司,资金雄厚,完全能够支付得起员工的高薪。

平均薪水: 109,241美元

薪水最高的职位:高级计算机科学家(142,076美元)

薪水最低的职位:财务分析师(65,600美元)

8. SAP美国公司是全球性的大公司,所以它能支付员工高薪。

平均薪水: 108,932美元

薪水最高的职位:资深总监(165,974美元)

薪水最低的职位:技术顾问(89,737美元)

9. MITRE要负责处理海量的数据,所以它以高薪雇佣了优秀的工程师。

平均薪水: 107,795美元

薪水最高的职位:首席信息系统工程师(153,606美元)

薪水最低的职位:软件系统工程师(72,288美元)

10. IBM研发人员的薪水非常好。

平均薪水: 107,242美元

薪水最高的职位:研发人员(153,420美元)

薪水最低的职位:计算机程序员(67,103美元)

11.拉里-埃里森依然舍得为甲骨文的员工支付高昂薪水。

平均薪水: 106,350美元

薪水最高的职位:技术顾问(150,973美元)

薪水最低的职位:程序分析员(62,975美元)

12. 谷歌,终于谈到谷歌了。

平均薪水: 106,104美元

薪水最高的职位:高级软件工程师(140,481美元)

薪水最低的职位:客户策略师(60,909美元)

13. Salesforce.com绝不雇佣傻瓜,员工的薪水非常不错。

平均薪水: 105,354美元

薪水最高的职位:技术部骨干(149,385美元)

薪水最低的职位:销售工程师(79,351美元)

14.英伟达的专业硬件工程师的薪水非常丰厚。

平均薪水: 104,858美元

薪水最高的职位:高级硬件工程师(122,477美元)

薪水最低的职位:产品工程师(85,382美元)

15.亚马逊是世界上最重要的公司之一,所以员工也不介意薪水稍微低了那么一点。

平均薪水: 104,854美元

薪水最高的职位:软件开发经理(132,442美元)

薪水最低的职位:订单分拣员(62,397美元)

16. 苹果商店上班的专员薪水其实并不高,但该公司工程师的薪水却非常具有竞争力。

平均薪水: 103,965美元

薪水最高的职位:产品设计工程师(117,185美元)

薪水最低的职位:Mac专家(26,561美元)

17. LinkedIn的工作环境在世界上首屈一指,员工的薪水同样为六位数。

平均薪水: 102,359美元

薪水最高的职位:首席软件工程师(148,125美元)

薪水最低的职位:销售督导专员(53,667美元)

18. Facebook是一款拥有上亿名用户的互联网产品。员工的薪水也十分可观。

平均薪水: 101,843美元

薪水最高的职位:产品经理(133,571美元)

薪水最低的职位:用户运营分析师(43,518美元)

19.微软的员工平均薪水依然达到了六位数,即使员工的数量非常多。

平均薪水: 100,236美元

薪水最高的职位:研发人员(124,126美元)

薪水最低的职位:技术销售经理(80,186美元)

20. 思杰系统公司的工作环境十分理想,这或许导致其日常运营成本显得稍微有些高。

平均薪水: 99,026美元

薪水最高的职位:高级软件开发工程师(110,069美元)

薪水最低的职位:质量保证工程师(73,378美元)

21.高通的硬件工程师薪水很不错,但是平均薪水依然较低。

平均薪水: 95,019美元

薪水最高的职位:硬件工程师(121,543美元)

薪水最低的职位:系统测试工程师(76,823美元)

22. Research in Motion现在正处于泥潭之中,这很可能是因为员工的薪水相对整个行业依然较低 。

平均薪水: 92,427美元

薪水最高的职位:高级产品经理(125,667美元)

薪水最低的职位:硬件设计师(68,333美元)

23.英特尔青睐研究人员,但是他们的平均工资依然比较低。

平均薪水: 91,681美元

薪水最高的职位:高级研究员(113,857美元)

薪水最低的职位:生产技术员(56,770美元)

24. Groupon由一群销售人员在运作,但他们的报酬比工程师要稍微低一些。

平均薪水: 72,949美元

薪水最高的职位:技术类职位(115,140美元)

薪水最低的职位:客户经理(37,040美元)

25. Rackspace公司拥有梦幻般的工作环境,不过平均薪水看上去确实很低。

平均薪水:72,946美元

薪水最高的职位:总监(117,250美元)

薪水最低的职位:客户经理(50,047美元)

Windows搭建Memcache的Java和php环境详解教程

在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。

Memcached是什么?
Memcached
是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).
Danga Interactive
为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。

Memcached的特点
Memcached
的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。

Memcached的使用

Windows下的Memcache安装

1、下载memcache for windows。下载地址:

memcached 1.2.4 Win32 Beta

   解压(本例中解压到c:\memcached)
2
、在命令行状态下输入: c:\memcached\memcached.exe -d install 。至此memcached已经安装成windows服务
3
、在命令行下输入: c:\memcached\memcached.exe -d start 以启动memcached服务。当然也可以选择在windows服务中启动

4、修改端口方法:
c:\memcached\memcached.exe -p 12345 -m 1024 -d start  ,  -p 表示要修改的端口, -m表示占用的最大内存(单位为M)。
但是无论怎么调用这个命令,发现端口一直还是11211。
打开windows服务控制面板一看,发现memcached.exe 默认安装的服务器启动参数中根本没写-p -m的参数,只有1个 -d runservice参数。
所以不管用什么命令启动服务都是没用的,于是就想到直接修改windows服务的启动参数,操作如下,打开注册表,找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
其中的ImagePath项的值为:”c:\memcached\memcached.exe” -d runservice
改成:”c:\memcached\memcached.exe” -p 12345 -m 128 -d runservice
保存后重新启动memcached服务,然后在命令行中输入netstat -n -a  看看现在端口是不是改啦,^_^。


你没看错,就是这么简单,简简单单的三步memcache的服务器端就准备完毕

 

Java引用Memcached模块支持

       客户端使用
下载memcached java clienthttps://github.com/gwhalin/Memcached-Java-Client/downloads

       1 解压后将java_memcached-release_2.6.6.zip  jar包添加到工程的classpath
2
利用memcached java client 一个简单的应用

 



package com.danga.MemCached.test;    

 

import java.util.Date;    

 

import com.danga.MemCached.MemCachedClient;    

import com.danga.MemCached.SockIOPool;    

 

 

public class Test {        

    protected static MemCachedClient mcc = new MemCachedClient();       

 

    static {       

        String[] servers ={“192.168.40.4:12000”};       

 

        Integer[] weights = { 3 };       

 

        //创建一个实例对象SockIOPool     

        SockIOPool pool = SockIOPool.getInstance();       

 

        // set the servers and the weights    

        //设置Memcached Server    

        pool.setServers( servers );       

        pool.setWeights( weights );       

 

        // set some basic pool settings       

        // 5 initial, 5 min, and 250 max conns       

        // and set the max idle time for a conn       

        // to 6 hours       

        pool.setInitConn( 5 );       

        pool.setMinConn( 5 );       

        pool.setMaxConn( 250 );   &nb
sp;   

        pool.setMaxIdle( 1000 * 60 * 60 * 6 );       

 

        // set the sleep for the maint thread       

        // it will wake up every x seconds and       

        // maintain the pool size       

        pool.setMaintSleep( 30 );       

 

        // Tcp的规则就是在发送一个包之前,本地机器会等待远程主机    

                  // 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,    

                  // 以至这个包准备好了就发;    

                  pool.setNagle( false );       

        //连接建立后对超时的控制    

                  pool.setSocketTO( 3000 );    

        //连接建立时对超时的控制    

                  pool.setSocketConnectTO( 0 );       

 

        // initialize the connection pool       

        //初始化一些值并与MemcachedServer段建立连接    


pool.initialize();    

 

 

        // lets set some compression on for the client       

        // compress anything larger than 64k       

        mcc.setCompressEnable( true );       

        mcc.setCompressThreshold( 64 * 1024 );       

    }       

 

    public static void bulidCache(){       

        //set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。    

        //因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值,除以1000以后都是0,即永不过期    

        mcc.set( “test”, “This is a test String” ,new Date(11211));   

    //十秒后过期    

 

    }       

 

    public static void output() {       

        //cache里取值    

        String value = (String) mcc.get( “test” );       

      &nb
sp; System.out.println(value);        

    }       

 

    public static void main(String[] args){       

        bulidCache();      

        output();           

    }     

 

}       



php安装Memcached模块支持

1、下载php_memcache.dll模块,你可以从http://downloads.php.net/pierre/找到对应的版本,
php5.3
的直接下载http://shikii.net/blog/downloads/php_memcache-cvs-20090703-5.3-VC6-x86.zip

2、修改php.ini,添加如下内容:

extension=php_memcache.dll

3、重启apache服务器,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

测试windows下的Memcached

测试代码如下:

<?php $mem = new Memcache; $mem->connect(“127.0.0.1”, 11211); $mem->set(‘key’, ‘Hello Memcached!’, 0, 60); $val = $mem e=”color:#339933″>->get(‘key’); echo $val;

更多测试代码,需要移步:
http://www.php.net/manual/en/memcache.examples-overview.php

Memcached的基本设置

-p 监听的端口
-l
连接的IP地址, 默认是本机
-d start
启动memcached服务
-d restart
重起memcached服务
-d stop|shutdown
关闭正在运行的memcached服务
-d install
安装memcached服务
-d uninstall
卸载memcached服务
-u
以的身份运行 (仅在以root运行的时候有效)
-m
最大内存使用,单位MB。默认64MB
-M
内存耗尽时返回错误,而不是删除项
-c
最大同时连接数,默认是1024
-f
块大小增长因子,默认是1.25
-n
最小分配空间,key+value+flags默认是48
-h
显示帮助

Memcache安装参考资源

http://www.codeforest.net/how-to-install-memcached-on-windows-machine
http://shikii.net/blog/installing-memcached-for-php-5-3-on-windows-7/