1、性能优化
首先想到的是内置的性能优化,在后台的 全局 – 性能优化
discuz服务器优化:
是否优化更新主题浏览量:是
查看数开启防刷新:是。如果选择“否”,主题、空间、日志每访问一次,浏览量增1,会增大服务器压力,建议选择“是”
附件下载量延迟更新:是。延迟更新附件的浏览量,可明显降低访问量很大的站点的服务器负担,建议开启本功能
最大在线人数:范围 10~65535,建议设置为平均在线人数的 10 倍左右
在线保持时间(分钟):根据访问情况设置合理的数值,访问量大的站点应当调小该数值,设置范围 5 – 60,过大或者过小的设置都有可能会增大服务器资源开销
开启图片延时加载:是。当开启后,页面中的图片在浏览器的当前窗口时再加载,可明显降低访问量很大的站点的服务器负担,建议开启本功能
参与模块聚合数据条数:此值影响模块聚合时MYSQL检索数据的条数,设置太大将严重影响MYSQL的性能,设置太小将会影响模块聚合结果数据的理想程度。0为关闭此功能
是否关闭session机制:关闭session机制以后,可明显降低站点的服务器负担,建议在线用户数超过2万时开启本功能(注意:游客数和用户的在线时长将不再进行统计,论坛首页和版块列表页面的在线用户列表功能将不可用)
discuz内存优化
启用内存优化功能将会大幅度提升程序性能和服务器的负载能力,内存优化功能需要服务器系统以及PHP扩展模块支持
目前支持的内存优化接口有 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache、Redis、YAC、APCu,优化系统将会依据当前服务器环境依次选用接口
内存接口的主要设置位于/config/config_global.php 当中,您可以通过编辑 config_global.php 进行高级设置,详细参考 discuz config_global.php文件设置说明
discuz论坛页面缓存设置优化
缓存论坛首页有效期:设置论坛首页缓存更新的时间,单位为秒,0 为关闭(此处关闭以后,缓存系数将不再起作用),建议设置为 900。此功能只针对游客
缓存帖子有效期:设置帖子页面缓存更新的时间,单位为秒,0 为关闭。请根据实际情况进行调整,建议设置为 900。另外,请通过编辑论坛来指定帖子页面缓存系数
缓存系数:页面缓存功能可以将会员经常访问的主题临时缓存起来,缓解大型论坛服务器压力。缓存阀值范围 0 – 100,建议设置为 40 ,0 为关闭。在磁盘空间允许的情况下,适当调高缓存系数,可以提高缓存效果
2、discuz防灌水设置
discuz有一套完善的防灌水设置,我们可以设置邀请注册、邮箱验证、只能QQ/微信登陆、发帖时间间隔、词语过滤等
词语过滤是非常关键的,一不小心论坛就会被关闭,甚至更严重,已经有很多先例了,所以设置一套完整的敏感词过滤机制非常重要
3、dicuz手机端优化设置
现在互联网的流量都集中在移动端了,一个好的手机模板非常重要!discuz手机模板可以采用移动网页加速器(MIP)。①MIP 提供与 MIP Runtime 兼容封装好的组件来实现,不允许自定义 JavaScript 。②使用inline的css,CSS 内联可以减少客户端的开销。③MIP缓存能够帮站长加速网页,MIP-Cache 将会把 MIP 网页缓存到百度 CDN 中。更多MIP详情请参考https://www.mipengine.org/doc/03-principle-of-mip.html
4、https设置
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。
HTTPS和HTTP的区别主要为以下四点:
①、https协议需要到ca申请证书,一般免费证书很少,需要交费。
②、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
③、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
④、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
5、discuz SEO优化
伪静态设置:URL 静态化可以提高搜索引擎抓取,开启本功能需要对 Web 服务器增加相应的 Rewrite 支持
设置完以后要在.htaccess文件写入伪静态代码
6.discuz CDN优化
CDN的全称是Content Delivery Network,即内容分发网络。依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。特别是js、css、图片,放在cdn上加载速度更快。
7、discuz开启Gzip
假设我们访问的一个页面有100kb,如果已经开启Gzip了,服务器会把这个页面压缩成zip文件,可能只有10kb或更小,就会节省带宽和下载时间。当浏览器可以下载zip文件,解压,并且渲染给用户。下载很快,页面加载也很快。
8、discuz数据库优化。
数据表优化可以去除数据文件中的碎片,使记录排列紧密,提高读写速度。
后台 – 站长 – 数据库 – 优化
后台 – 站长 – 帖子分表/用户表优化/主题分表。分表功能可以将帖子分在不同的数据表中,适合帖子数很多并且运行效率受到影响的站点使用
9、discuz插件筛选
在没有必要的情况尽量少装插件,有些插件调用很多sql反而降低效率
10、discuz模板优化
精简压缩css/js文件,尽量减少js的使用,或者使用封装好的js
discuz config_global.php文件设置说明
<?php
$_config = array();
// ---------------------------- CONFIG DB ----------------------------- //
// ---------------------------- 数据库相关设置---------------------------- //
/**
* 数据库主服务器设置, 支持多组服务器设置, 当设置多组服务器时, 则会根据分布式策略使用某个服务器
* @example
* $_config['db']['1']['dbhost'] = 'localhost'; // 服务器地址
* $_config['db']['1']['dbuser'] = 'root'; // 用户
* $_config['db']['1']['dbpw'] = 'root';// 密码
* $_config['db']['1']['dbcharset'] = 'gbk';// 字符集
* $_config['db']['1']['pconnect'] = '0';// 是否持续连接
* $_config['db']['1']['dbname'] = 'x1';// 数据库
* $_config['db']['1']['tablepre'] = 'pre_';// 表名前缀
*
* $_config['db']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db'][1]['dbhost'] = 'localhost';
$_config['db'][1]['dbuser'] = 'root';
$_config['db'][1]['dbpw'] = 'root';
$_config['db'][1]['dbcharset'] = 'utf8';
$_config['db'][1]['pconnect'] = 0;
$_config['db'][1]['dbname'] = 'ultrax';
$_config['db'][1]['tablepre'] = 'pre_';
/**
* 数据库从服务器设置( slave, 只读 ), 支持多组服务器设置, 当设置多组服务器时, 系统根据每次随机使用
* @example
* $_config['db']['1']['slave']['1']['dbhost'] = 'localhost';
* $_config['db']['1']['slave']['1']['dbuser'] = 'root';
* $_config['db']['1']['slave']['1']['dbpw'] = 'root';
* $_config['db']['1']['slave']['1']['dbcharset'] = 'gbk';
* $_config['db']['1']['slave']['1']['pconnect'] = '0';
* $_config['db']['1']['slave']['1']['dbname'] = 'x1';
* $_config['db']['1']['slave']['1']['tablepre'] = 'pre_';
* $_config['db']['1']['slave']['1']['weight'] = '0'; //权重:数据越大权重越高
*
* $_config['db']['1']['slave']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db']['1']['slave'] = array();
//启用从服务器的开关
$_config['db']['slave'] = false;
/**
* 数据库 分布部署策略设置
*
* @example 将 common_member 部署到第二服务器, common_session 部署在第三服务器, 则设置为
* $_config['db']['map']['common_member'] = 2;
* $_config['db']['map']['common_session'] = 3;
*
* 对于没有明确声明服务器的表, 则一律默认部署在第一服务器上
*
*/
$_config['db']['map'] = array();
/**
* 数据库 公共设置, 此类设置通常对针对每个部署的服务器
*/
$_config['db']['common'] = array();
/**
* 禁用从数据库的数据表, 表名字之间使用逗号分割
*
* @example common_session, common_member 这两个表仅从主服务器读写, 不使用从服务器
* $_config['db']['common']['slave_except_table'] = 'common_session, common_member';
*
*/
$_config['db']['common']['slave_except_table'] = '';
/**
* 内存服务器优化设置
* 以下设置需要PHP扩展组件支持,其中 memcache 优先于其他设置,
* 当 memcache 无法启用时,会自动开启另外的两种优化模式
*/
//内存变量前缀, 可更改,避免同服务器中的程序引用错乱
$_config['memory']['prefix'] = 'discuz_';
/* reids设置, 需要PHP扩展组件支持, timeout参数的作用没有查证 */
$_config['memory']['redis']['server'] = '';
$_config['memory']['redis']['port'] = 6379;
$_config['memory']['redis']['pconnect'] = 1;
$_config['memory']['redis']['timeout'] = 0;
$_config['memory']['redis']['requirepass'] = '';
/**
* 是否使用 Redis::SERIALIZER_IGBINARY选项,需要igbinary支持,windows下测试时请关闭,否则会出>现错误Reading from client: Connection reset by peer
* 支持以下选项,默认使用PHP的serializer
* [重要] 该选项已经取代原来的 $_config['memory']['redis']['igbinary'] 选项
* Redis::SERIALIZER_IGBINARY =2
* Redis::SERIALIZER_PHP =1
* Redis::SERIALIZER_NONE =0 //则不使用serialize,即无法保存array
*/
$_config['memory']['redis']['serializer'] = 1;
$_config['memory']['memcache']['server'] = ''; // memcache 服务器地址
$_config['memory']['memcache']['port'] = 11211; // memcache 服务器端口
$_config['memory']['memcache']['pconnect'] = 1; // memcache 是否长久连接
$_config['memory']['memcache']['timeout'] = 1; // memcache 服务器连接超时
$_config['memory']['apc'] = 0; // 启动对 APC 的支持
$_config['memory']['apcu'] = 0; // 启动对 APCu 的支持
$_config['memory']['xcache'] = 0; // 启动对 xcache 的支持
$_config['memory']['eaccelerator'] = 0; // 启动对 eaccelerator 的支持
$_config['memory']['wincache'] = 0; // 启动对 wincache 的支持
$_config['memory']['yac'] = 0; //启动对 YAC 的支持
$_config['memory']['file']['server'] = ''; // File 缓存存放目录,如设置为 data/cache/filecache ,设置后启动 File 缓存
// 服务器相关设置
$_config['server']['id'] = 1; // 服务器编号,多webserver的时候,用于标识当前服务器的ID
// 附件下载相关
//
// 本地文件读取模式; 模式2为最节省内存方式,但不支持多线程下载
// 1=fread 2=readfile 3=fpassthru 4=fpassthru+multiple
$_config['download']['readmod'] = 2;
// 是否启用 X-Sendfile 功能(需要服务器支持)0=close 1=nginx 2=lighttpd 3=apache
$_config['download']['xsendfile']['type'] = 0;
// 启用 nginx X-sendfile 时,论坛附件目录的虚拟映射路径,请使用 / 结尾
$_config['download']['xsendfile']['dir'] = '/down/';
// 页面输出设置
$_config['output']['charset'] = 'utf-8'; // 页面字符集
$_config['output']['forceheader'] = 1; // 强制输出页面字符集,用于避免某些环境乱码
$_config['output']['gzip'] = 0; // 是否采用 Gzip 压缩输出
$_config['output']['tplrefresh'] = 1; // 模板自动刷新开关 0=关闭, 1=打开
$_config['output']['language'] = 'zh_cn'; // 页面语言 zh_cn/zh_tw
$_config['output']['staticurl'] = 'static/'; // 站点静态文件路径,“/”结尾
$_config['output']['ajaxvalidate'] = 0; // 是否严格验证 Ajax 页面的真实性 0=关闭,1=打开
$_config['output']['iecompatible'] = 0; // 页面 IE 兼容模式
// COOKIE 设置
$_config['cookie']['cookiepre'] = 'discuz_'; // COOKIE前缀
$_config['cookie']['cookiedomain'] = ''; // COOKIE作用域
$_config['cookie']['cookiepath'] = '/'; // COOKIE作用路径
// 站点安全设置
$_config['security']['authkey'] = 'asdfasfas'; // 站点加密密钥
$_config['security']['urlxssdefend'] = true; // 自身 URL XSS 防御
$_config['security']['attackevasive'] = 0; // CC 攻击防御 1|2|4|8
$_config['security']['querysafe']['status'] = 1; // 是否开启SQL安全检测,可自动预防SQL注入攻击
$_config['security']['querysafe']['dfunction'] = array('load_file','hex','substring','if','ord','char');
$_config['security']['querysafe']['daction'] = array('@','intooutfile','intodumpfile','unionselect','(select', 'unionall', 'uniondistinct');
$_config['security']['querysafe']['dnote'] = array('/*','*/','#','--','"');
$_config['security']['querysafe']['dlikehex'] = 1;
$_config['security']['querysafe']['afullnote'] = 0;
$_config['security']['creditsafe']['second'] = 0; // 开启用户积分信息安全,可防止并发刷分,满足 times(次数)/second(秒) 的操作无法提交
$_config['security']['creditsafe']['times'] = 10;
$_config['admincp']['founder'] = '1'; // 站点创始人:拥有站点管理后台的最高权限,每个站点可以设置 1名或多名创始人
// 可以使用uid,也可以使用用户名;多个创始人之间请使用逗号“,”分开;
$_config['admincp']['forcesecques'] = 0; // 管理人员必须设置安全提问才能进入系统设置 0=否, 1=是[安全]
$_config['admincp']['checkip'] = 1; // 后台管理操作是否验证管理员的 IP, 1=是[安全], 0=否。仅在管理员无法登陆后台时设置 0。
$_config['admincp']['runquery'] = 0; // 是否允许后台运行 SQL 语句 1=是 0=否[安全]
$_config['admincp']['dbimport'] = 1; // 是否允许后台恢复论坛数据 1=是 0=否[安全]
/**
* 系统远程调用功能模块
*/
// 远程调用: 总开关 0=关 1=开
$_config['remote']['on'] = 0;
// 远程调用: 程序目录名. 出于安全考虑,您可以更改这个目录名, 修改完毕, 请手工修改程序的实际目录
$_config['remote']['dir'] = 'remote';
// 远程调用: 通信密钥. 用于客户端和本服务端的通信加密. 长度不少于 32 位
// 默认值是 $_config['security']['authkey'] 的 md5, 您也可以手工指定
$_config['remote']['appkey'] = md5($_config['security']['authkey']);
// 远程调用: 开启外部 cron 任务. 系统内部不再执行cron, cron任务由外部程序激活
$_config['remote']['cron'] = 0;
// $_GET|$_POST的兼容处理,0为关闭,1为开启;开启后即可使用$_G['gp_xx'](xx为变量名,$_GET和$_POST集合的所有变量名),值为已经addslashes()处理过
$_config['input']['compatible'] = 1;
// Addon Setting
//$_config['addonsource'] = 'xx1';
//$_config['addon'] = array(
// 'xx1' => array(
// 'website_url' => 'http://127.0.0.1/AppCenter',
// 'download_url' => 'http://127.0.0.1/AppCenter/index.php',
// 'download_ip' => '',
// 'check_url' => 'http://127.0.0.1/AppCenter/?ac=check&file=',
// 'check_ip' => ''
// )
//);
?>