扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、静态文件优化
创新互联公司从2013年成立,先为徽县等服务建站,徽县等地企业,进行企业商务咨询服务。为徽县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
网站的静态文件一般有两种:第一种是网站的 CSS,Javascript 和一些主题的常用背景图片和按钮文件,这些图片如果网站不进行改版或者其他改动,基本上是不会修改的,第二种是每天更新的网站内容中上传的图片或者附件,这些图片文件也是基本不会改动的。
解决好静态文件存储和加速,网站性能就首先能得到基本的保证了,WordPress 构建的网站和博客也是一样的。对于这些静态文件来说,最好的解决方案永远是使用 CDN 网络进行加速,这样服务器的压力将大大降低,因为访问页面只有当前页面是在自己服务器上,其他所有图片 JS CSS 都是从 CDN获取的。
2
服务器优化
优化好静态文件之后,就要开始对网站的动态内容进行优化,优化动态内容,首先要有一个稳定网络环境,稳定的主机供应商和服务器性能的优化。
选择一个靠谱的主机托管商,在国内这个很多时候让你抓狂,但是只要努力还是可以的。个人选择 BGP 或者多线机房,让全国用户访问都能有不错的速度,然后尽量选择独立的服务器,再不济,也得 VPS, :-) 因为你没有服务器的 Root 权限很多东西是无法进行的(个人博客可以考虑选择我爱水煮鱼目前使用的 Media Temple 这类的 VPS 主机),当然你也可以找我合租,速度肯定非常强悍。
WordPress 缓存机制和如何缓存
要彻底明白和搞懂 WordPress 性能优化,首先要理解 WordPress 缓存机制,WordPress 默认是一种叫做 WordPress Object Cache 的对象缓存机制,它是把需要缓存的内容按照 Key-Value 这样的模式进行缓存(和 No-SQL 的 key-value 的有点类似),当然它还支持按照 Group 来划分和避免缓存的内容冲突。
所以最基础的 WordPress 缓存插件就是,把 WordPress 产生的 Key-Value 存起来,如果是使用 Memcached,就是存到内存,如果使用 Flie 就是存到硬盘中,当然高级的 WordPress 插件还能做更多,比如 WP Super Cache把整个页面缓存到硬盘中,下次直接访问静态的 HTML 文件,让服务器直接绕过 PHP,节约 CPU 时间。 Batcache 会把整个页面当做一个对象存到内存里面。
App每日推送 由于注册用户操作比较频繁,不适合 WP Super Cache 这样的静态缓存,对硬盘读写太多,讨论区又无法缓存,我们使用 Memcached 和 Batcache 搭配的内存缓存模式:
对于已登陆的用户,Memcached 会把 WordPress 的对象存到内存里面,服务器的内存足够大,读取和存储速度也够快,并且内存缓存命中率也大于 94%。另外我们 WordPress 程序经过优化,每个页面的查询一般在 2 条左右,所以整个网站效率很高。
WordPress 程序优化
WordPress 程序优化是基于 WordPress Object Cache 的机制对 WordPress 插件和主题进行优化,主要经验有以下几点:
只使用必须的 WordPress 插件,安装太多的 WordPress 插件很容易引起性能问题。从正规站点下载 WordPress 主题,这样下载的主题才能保证质量和安全。WordPress 主题和插件尽量使用模板函数,因为 WordPress 模板函数如果可能都已经做好了 WordPress Object Cache。比如 get_the_terms 和 wp_get_object_terms 这两个函数,功能基本一样,但是 get_the_terms 直接从对象缓存中取数据,无查询,而 wp_get_object_terms 每次都从数据库中取数据。WordPress 插件和主题如果一定要直接查询数据库,请做好 Object Cache,将查询的结果使用 wp_cache_set 存到 Object Cache 中,下次直接使用 wp_cache_get 获取。
5
WordPress 性能优化总结
选择好的服务器和托管商,对 WordPress 程序进行优化,并且做好缓存,WordPress 效率其实很高的,加上 WordPress 本身的灵活性和功能强大,WordPress 作为各种建站绝对是非常不错的选择,所以我一直使用 WordPress 建站。
6
WPJam Debug 插件
最后补充一个 WordPress 性能检测的插件:WPJAM Debug,可以在页脚显示当前页面有多少条 SQL 查询,页面生成花了多少时间,并且把 SQL 按照执行顺序和按照耗时两种方式列出,通过这样的方式帮你分析 WordPress 哪条 SQL 查询有问题或者比较慢,然后着手改进它。
本文只限Apache配置主机的使用方法,增加WordPress文件上传大小限制:通过配置php.ini的upload_max_filesize 和 post_max_size,重启Apache;通过修改.htaccess文件。
最近在用WordPress做一个视频B2B网站,所需要的上传的文件已经远远超过了32MB的限制(32MB的视频能干什么啊)。
网上分享的方法
一如既往的百度,基本大同小异,最后参考了WordPress啦!的增加文件上传大小限制:
一般来说你使用的主机会限制你上传文件的大小,在WordPress的媒体文件上传可以看到,大多数都是2MB(我的是32MB)。如果是图片的话可能会还够用,但是如果是音频和视频文件就不一定够用了。
方法一:
在functions.php中添加如下代码,这样上传限制就是64M
复制代码
代码如下:
@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '64M');
@ini_set( 'max_execution_time', '300' );
方法二:
新建一个php.ini文件,在你的主机空间的根目录新建一个php.ini文件,里面使用如下代码。
复制代码
代码如下:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
方法三:
使用.htaccess文件,在这个文件中添加如下代码。
复制代码
代码如下:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
子任采用方法
我现在是使用的WordPress3.4+版本,上传文件大小已经是主机配置决定的了,主机本身配置upload_max_filesize 和 post_max_size 都是32M,想要得到效果:
WordPress文件上传大小300MB
上述方法一:无效!
上述方法二:有效,重启Apache
上述方法三:有效,无需重启Apache
总结:上传大小主要用服务器配置决定的,例如后两种方法;而第一种方法不过在服务器配置的基础上来进一步用程序来限制罢了。
子任出于综合考虑,减少服务器不必要的负担,最后采取了第二种方法:
复制代码
代码如下:
upload_max_filesize = 300M
post_max_size = 300M
max_execution_time = 300
在做优化的时候,碰到这么一个问题,需要在一篇文章中加入一个大小为19.4MB的PDF文件,而wordpress限定的文件大小只有8MB,那么如何在WP博客上上传文件,而且文件大小不受限制呢?
方法很简单,只需要3步就可以增加wordpress文件上传大小的设置:
首先,我们打开FTP进入wordpress博客站点的根目录,找到一个名为php.ini文件,下载到我们的电脑桌面上,用DreamWeaver打开文件后加入下面2行代码,
post_max_size = 20M
upload_max_filesize = 20M
然后我们把这个文件更名为php5.ini。
请注意,上面我控制上传文件大小和文章大小为20M,你可以根据你自己的需要设置上限。
下一步我们打开文件wp-config.php文件,看到这个是不是很熟悉?这个文件就在你的wordpress目录下,我们以前安装wordpress就是编辑的这个配置文件,现在我们需要再给它加上一段代码来完成文件上传大小的设置,
define('WP_MEMORY_LIMIT', '64M');
注意请在保存前把编码更改为博客默认的编码,例如我的编码是UTF-8,如果不修改的话就会出现乱码甚至打不开的问题。
最后一步,保存上面2个文件,一个是php5.ini,另一个是wp-config.php,然后在FTP上删除php.ini,上传这2个文件,大功告成!刷新一下你的wordpress后台,你会发现上传文件大小已经变更为你设置的大小。
真是纠结,刚在登陆我的wordpress后台的时候发现网站无法打开,只能打开登陆页面,其他页面一直是无法响应……
马上打开网站日志,查看错误文件发现错误时:out of memory (allocated 9699328) (tried to allocate 393216 bytes)
意思很简单:内存溢出。也就是内存不够的意思,二话不说先恢复网站再说,直接重启apache,重启后正常……
但是问题出现了不能就这样忽略掉呀,如果不处理肯定下次还会出现这种问题,既然提示内存不足那么就我直接调大wordpress运行的内存,
这是最简单的方式了。再想一想wordpress哪设置了内存大小呀,有点影响wp-config.PHP里面有,打开找一找,怪了,没有……
经过漫长的寻找终于在wp-includes/defaule-constants.php 中找到,在wp_initial_constants方法中,方法是这样写的,[无线通信模块]主要的几句是:
1 if ( !defined('WP_MEMORY_LIMIT') ) {
2 if( is_multisite() ) {
3 define('WP_MEMORY_LIMIT', '64M');
4 } else {
5 define('WP_MEMORY_LIMIT', '32M');
6 }
7 }
8
9 if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
10 define( 'WP_MAX_MEMORY_LIMIT', '256M' );
11 }
第一行:如果没有定义WP_MEMORY_LIMIT
第二行:如果网站只有一个(可以在一个wordpress建立多个站)
第三行 如果有多个网站就设置wordpress的内存为64M
第四行:如果没有多个网站就设置他的内存为32M(哈哈,找到了,wordpress默认的大小为32M)
第9行:如果设有设置WP_MAX_MEMORY_LIMIT最大内存的话
第10行:如果没有设置最大内存的话,就定义最大内存为256M……
综上所述:wordpress设置默认的内存为32M,如果内存不够用,最大不会超过256M……
256M实际上已经够大了,不过感觉最小32M太小了,改,这个一定得改,把他改成100M,默认100M
所以在wp-config.php中增加一行配置:define("WP_MEMORY_LIMIT", "100M");
把默认的32M改成了100M……这样总行了吧,改后继续观察……
建博客半年第一次发生这种事情……
更多 wordpress内容请看 wordpress 专题
在想想,这样改的确是改了wordpress的,但是php也有限制呀,php限制了的话,wordpress设置成1G都是没用的,打开php.ini文件,查看一下默认的php的内存多大,找到memory_limit默认的是128M,
memory_limit = 128M
哦,原来如此,php设置的最大内存是128M,所以上面的wordpress配置中的256M是没有作用的,php这里限制在128M以内。
经过这几个分析统一起来,最终的wordpress的内存设置是:最小100M,最大128M,内存大小在2者之间变动。
在观察一段时间,如果没有出现错误的话就这样,再发生内存不足的问题,果断把php中的128M改成256M……
友情提示:我敢保证我的模板,我在模板中写的代码没有任何性能问题,作为一个超级软件设计师这点自信还是有的……
如果你的wordpress老是经常内存不足,就要在模板,在自己写的代码上找原因,因为性能低下的代码用超级计算机都是没用的,给你一台银河计算机还是照样会内存溢出……
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流