目录:
- 1、求WordPress网站加速方法
- 2、php 一个网站需要用memcached!主要缓存什么内容? 那些该缓存? 应该注意什么?
- 3、如何将PHP session信息缓存到memcached里面
- 4、wordpress网站缓存怎么优化
- 5、windows下网站怎么开启memcache
求WordPress网站加速方法
WordPress是当今最流行的建站博客程序,功能强大,上手容易,各种主题和插件等应有尽有,有关Wordpress的相关文档也是多如牛毛,可以说Wordpress是我们建站的首选程序。当然Wordpress性能也是一个不断被提及的话题,不少人甚至认为WP已经“快”不起来了。
当Wordpress的流量一上来,网站页面多达上万级,这时Wordpress性能会遇到“瓶颈”,这时如果单纯从花大价钱购买更高配置的主机空间会导致服务器成本骤增,很不划算。倒不如从“软件”着手,通过优化服务器性能和页面加载速度能够达到更好的效果。
优化Wordpress性能,一般我们是从这几个方面来发力:服务器PHP脚本执行效率、MysqL数据库查询性能、Wordpress评论、图片、JS、CSS等静态文件加载速度。如果要把Wordpress性能比作是一个“木桶”,那么WP综合性能就取决那块“短板”的高度了。
仔细分析自己的Wordpress博客存在哪些可能影响性能因素,然后“对症下药”,补齐性能的“短板”,Wordpress就会有飞的感觉。这里应该澄清一个可能会被“误导”的概念:Wordpress并不是不能胜任大流量和高数据库查询压力,关键是要做好服务器性能优化,用Wordpress搭建的大型网站比比皆是。
本篇文章就来分类整理一下Wordpress加速的五个方法,如果你正在遭遇着大流量带来的Wordpress运行缓慢的状况,不妨参考本文对自己的Wordpress进行一次彻底的性能优化。
WordPress性能优化加速五大方法:
WordPress性能优化方法一:选择稳定可靠的主机空间
WordPress性能优化方法一:选择稳定可靠的主机空间
1、物理方面:优化Wordpress的性能前提条件就是有一个稳定安全、网络环境可靠的主机空间,一个经常宕机、机房断网、部分地区无法访问的主机空间还是趁早换一家吧,这样的主机空间即便再怎么优化也是“白搭”。
2、软件方面:选择Linux服务器作为Wordpress的运行环境。用Windows服务器来跑Wordpress这种情况多见于国内的空间商,之前部落博客就是放在Windows服务器导致的问题非常多,而且效率没有Linux高。
3、Web服务器:Nginx、Apache视情况而定。现在不少人认为Nginx相对于Apache有资源消耗少、处理静态页面吞吐量强的优势,但Apache也有着稳定、使用方便的优势,这两个Web引擎可以视个人情况而定。
WordPress性能优化方法二:优化服务器性能提升工作效率
WordPress性能优化方法二:优化服务器性能提升工作效率
1、高效率的HHvm:如果你愿意折腾,可以尽量选择HHvm。HHVM是一个强大的可以用于替代PHP的建站环境,实际测试它比PHP执行效率快过9倍,效果对比:配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼 。HHvm相关的使用教程:
1、HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 2、Lighttpd与HHVM快速搭建方法-让小内存VPS主机体验极致PHP性能 3、HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上
2、Memcached缓存加速:Memcached是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached对于减少MysqL数据查询压力非常有帮助。
1、用Varnish和Memcached缓存给WordPress网站提速-内存级加速 2、WDCP,LNMP安装PHP缓存加速扩展eAccelerator,xcache和memcached 3、WP Super cache启用Memcached内存缓存加速及其效果分析
3、 服务器加速模块:安装使用服务器加速模块可以在一定的程度上加快服务器运行的效率,就好像给发动机加上了“润滑油”,硬件还是原来的硬件,但是速度快了不少。
WordPress性能优化方法三:使用缓存加快响应速度
WordPress性能优化方法三:使用缓存加快响应速度
1、此处说的缓存是Web缓存,将需要频繁访问的Web页面和对象保存在硬盘或者内存上,当再次访问这些对象的时候加快了速度,它可以大大节省服务器资源。
2、Wordpress有很多的缓存插件,不同的插件会有不同的使用效果。
3、除了使用Wordpress缓存插件来达到缓存加速的效果外,我们还可以让Web服务器实现缓存,从理论上讲服务器缓存加速效果要好于Wordpress本身的缓存。
WordPress性能优化方法四:使用全站CDN和静态文件加速
WordPress性能优化方法四:使用全站CDN和静态文件加速
1、实现全站CDN加速,网站的静态程度高的效果会更好。
延伸阅读:
网站加速哪家强?四大免费CDN服务评测大PK
2、除了给全站做好CDN加速外,我们还可以让网站的JS、CSS、图片、附件等实现CDN加速,尤其适用于空间在国外没有取得BA号的网站。
WordPress性能优化方法五:去除掉导致网页加载速度变慢的障碍
WordPress性能优化方法五:去除掉导致网页加载速度变慢的障碍
1、如果你的博客使用了Google自定义搜索,因为“各种原因”会导致网页加载不完整,但是你又不想使用百度站内搜索,那么解决办法就是:网站添加优化Google自定义搜索影响网站打开速度和证书错误。
2、Gravatar头像服务器不稳定也是影响Wordpress打开速度的重要因素。
3、图片太多的Wordpress博客除了建议使用上面的静态文件加速方法外,还可以使用图片延迟加载,让用户在有限的带宽中最少时间内看到自己想要看到的。
4、最后Wordpress的垃圾评论也是影响Wordpress性能一个障碍。
WordPress性能优化加速小结:
上面总结的Wordpress性能优化加速方法基本上是部落这几年来使用Wordpress过程的经验,目前来看的话只要服务器配置稍微好一些,带宽足一些,再加上自己有针对性地对服务器和Wordpress进行优化一些,基本上可以满足大流量的要求了。
php 一个网站需要用memcached!主要缓存什么内容? 那些该缓存? 应该注意什么?
这个东西最大的好处是可以存储对象,减少很多数据库和服务器压力。直接基于内存的存储,调用速度非常给力。
主要缓存的内容,大概可以归纳为 1.不需要即时显示的内容,或者mysql查询耗时的内容。举例说明:网站的列表【最火的 排行榜】等非及时的,最新的如果强调及时性,可不用,当然也可以使用,可能更新缓存频率较高。
2.非常需要速度和性能的地方
有些页面通过mysql可能联合查询,全表检索查询速度相当慢,这时候可用缓存暂时保留 例如搜索引擎的结果集。
3.临时数据保存
我们知道mysql Oracle等关系型数据库,需要建立表结构才能存储,这就决定了,有些临时数据的存储,也需要建立特定的表结构。这样就比较啰嗦,不便于维护。
4.存储对象
这个也是一个比较有特色的地方,php创建对象的效率是不高的,甚至堪称低效,再加上构造函数大量的数据库操作的话,会让性能低到谷底,那么它能帮你吧已经创建好的对象 保存起来 下次相同的请求 无需new只需要将它还原。
综上,缓存是php的利器,速度 效率 等词汇都可以通过它去体现
如何将PHP session信息缓存到memcached里面
在PHP的ini配置文件里面提供了[Session]相关配置,可以支持将信息存到文件或memcached服务器里面。由配置项session.save_handler = memcached决定。大多数场景,该session数据并不需要持久化,且为了提升网站性能,会选择将session信息缓存到memcached里面。
需要修改php.ini配置文件:
1、session段
找到[Session]段落,修改存储引擎为:
session.save_handler = memcached(注意是带d扩展)
修改存储地址,即OCS访问地址为:
session.save_path = “be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com:11211″(注意带d扩展,则前面不用加tcp://,不带d的扩展需要加)
修改缓存到memcached的key的时间
session.gc_maxlifetime = 1440(单位是秒,强烈建议必须设置一个合理时间,以保证OCS始终只缓存热点数据)
2、memcached段
在php.ini的全局段,建一个单独段落[memcached],然后在空白地方加入下面配置
[memcached]
memcached.use_sasl = On
memcached.sess_binary = On
memcached.sess_sasl_username = “your_ocs_name”
memcached.sess_sasl_password = “your_ocs_password”
memcached.sess_locking = Off
举例:
?php
$memc = new Memcached();
$memc-setOption(Memcached::OPT_COMPRESSION, false);
$memc-setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$memc-addServer(“be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com”, 11211);
$memc-setSaslAuthData(“your_ocs_name”, “your_ocs_password”);
echo $memc-get(“memc.sess.key. ttrct9coa2q62r2sodlq4qf376″);
/*注意这里的key是有前缀的,由php.ini中memcached.sess_prefix字段决定,默认值为“memc.sess.key.”。然后再拼接上面打出来的sessionid“ttrct9coa2q62r2sodlq4qf376”即可。*/
?
该代码输出如下:
ocs_key|s:13:”session_value”;
即PHP SESSION已经成功写入OCS。
wordpress网站缓存怎么优化
1、使用高效的缓存插件
WordPress的插件们是非常有用的, 我推荐一款缓存插件可以改善页面载入时间,它就是W3 Total Cache,有了这个插件之后咱就不再推荐你其他缓存插件了,因为所有缓存插件有的功能它都有了,而且安装和使用非常方便。
拥有这款插件之后,你的页面载入速度会加快,因为网站的主要元素已经被缓存了。
2. 使用内容分发网络 (CDN)
基本上所有你喜欢的大网站都会使用CDN。简单来说,CDN是把你站点上的文件们(CSS\JS\图片等)发布到最接近用户所在的网络区域,让用户就近下载,这样就能提高站点运行速度。在国内ChinaCache是比较有名的CDN供应商,不过价格贵了一些,像各大门户网站,比如腾讯、新浪、网易等等都是用ChinaCache。所以不管你在哪里,访问这些门户网站都会觉得速度很快。当然啦,对于小站来说,这个成本可能会高一些,
所以,你无论是在南方,或者北方,还是在北美,访问这些门户网站,感觉速度都很快,最主要的原因之一就是CDN发挥了效果。一般小网站是用不起这服务的,所以慢点就慢点了吧,可以租用互联互通的6线机房(6线机房是指包括网通、电信、铁通、移动、联通、教育网等多线接入的骨干网IDC机房,彻底消除各地网络瓶颈,保证互联网访问畅通无阻的高速机房。)
顺便提一下,还有一个Wordpress插件叫Free-CDN,号称也能达到类似的效果,虽然我还没有做过测试…
3、图片优化很重要
Yahoo! 有一个图片优化软件叫Smush.it可以最大程度无损压缩图片,不过,除非你超级有耐心,否则一张张压缩图片的话太浪费时间了,好在,还有一个很给力的WP插件叫WP-SmushIt,这货可以为你网站上所有的图片做一次性压缩,所以没有理由不去用它。
4、优化你的WP数据库
你可以用WP-Optimize这个插件来优化你的WP数据库(清理spam,反复改版的文章,草稿,表格等等为你的服务器腾出更多空间从而提升效率);还有一些插件如WP-Cleaner,DB-Manger等。
5、开启防盗链机制
盗链是带宽的窃贼,当其他网站直接引用你站点的图片的时候,这会影响占用你本身的服务器资源从而影响网站运行效率,你的站点越出名,就会有越多的人盗用你的图片,解决方法是Wordpress有现成的插件Hotlink Protection。当然也可以通过重写htaccess文件来达到同样的效果,欲深入了解的童鞋可以询问自己的空间商如何设置。
6、为文件添加过期时间
关于这个文件过期时间,听起来很玄乎,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和一些装饰性图片)其实在很长一段时间内这些图片都不会有很大的变化,所以对这类文件我们不妨设置长一些的缓存时间,这样浏览器就不需要每次从服务器下载这些文件而直接从缓存中读取,这样绝对可以提升加载速度。
当然,所以做法很简单,只需要在网站的.htaccess文件中加入以下代码,
IfModule mod_expires.c
ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600
/IfModule
稍微解释一下,text/css表示样式表文件,text/plain代表的纯文本类文件,依次类推。其中A2592000就表示这种类型文件在浏览器中的缓存时间,以秒为单位。一天86400秒,2592000就表示这类文件可以缓存30天。
如果你不是经常修改模板,那样式表文件和javasctipt文件基本上也可以设置缓存一周到一个月左右。text/html文件不要设置太长的缓存时间,因为这些东西修改的频率很高,一天更新一次是有必要的。
7、为你的图片添加延时加载
延时加载就是当用户停留在第一屏的时候,不加载任何第一屏以下的图片信息,只有当用户把鼠标往下滚动的时候,这些图片才开始加载。这玩意儿不仅可以提升站点载入速度,更是可以节省带宽。要轻松的拥有这项功能,请安装WP的jQuery Image Lazy Load 插件吧。
8、控制文章草稿存数数
通常一篇博文我会保存10次以上的草稿,而Wordpress会无限制的存储每个草稿;如果我的博文已经发布了,为啥我还需要这些储存的草稿文章呢?所以这就是为啥我会用 Revision Control 插件来确保这些草稿内容的最小化。通常我会设置只存储2-3篇草稿来防止万一,但存储的数量绝对不会太高,否则你的WordPress backend只会被这些无意义的内容塞满从而降低运行效率。
windows下网站怎么开启memcache
windows下网站开启memcache的方法是设置调用方法:
Memcached 是memcache的运行服务端,核心文件,Memcached基于一个存储键/值对的hashmap,其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
作用:Memcached基本只占用内存资源。能够很好弥补对于高频繁调用,却不经常变更的资源。
web中的memcache的实现方法:
/**
* 缓存类
*/
public class MemCachedCtl {
protected static MemCachedClient mcc = new MemCachedClient();// 创建全局的唯一实例
protected static MemCachedCtl memCached = new MemCachedCtl();
//配置信息
private static String[] servers = { "127.0.0.1:11211" };
private static Integer[] weights = { 3 };
private static int initialConnections = 10;
private static int minSpareConnections = 5;
private static int maxSpareConnections = 50;
private static long maxIdleTime = 1000 * 60 * 30;
private static long maxBusyTime = 1000 * 60 * 5;
private static long maintThreadSleep = 1000 * 5;
private static int socketTimeOut = 1000 * 3;
private static boolean nagleAlg = false;
/**
* 不允许通过构造方法创建实例
*/
protected MemCachedCtl() {
}
/**
* 获取唯一实例.
*/
public static MemCachedCtl getInstance() {
return memCached;
}
/**
* 初始化基本信息
*/
public void init(){
if(initConfig())
initPool();
}
/**
* 初始化配置信息
*/
private boolean initConfig(){
//TODO 初始化配置文件
return true;
}
/**
* memcache服务器初始化连接池
*/
private void initPool(){
SockIOPool pool = SockIOPool.getInstance();// 获取socke连接池的实例对象
pool.setServers(servers);// 设置服务器信息
pool.setWeights(weights);//设置权重
pool.setInitConn( initialConnections );// 设置初始连接数
pool.setMinConn( minSpareConnections );//设置最小连接数
pool.setMaxConn( maxSpareConnections );//设置最大连接数
pool.setMaxIdle( maxIdleTime );//设置最大处理时间
pool.setMaxBusyTime( maxBusyTime );
pool.setMaintSleep( maintThreadSleep );// 设置主线程的等待时间
pool.setSocketTO( socketTimeOut ); //设置连接超时时间
pool.setNagle( nagleAlg );
pool.setHashingAlg( SockIOPool.NEW_COMPAT_HASH );
pool.setAliveCheck( true );
pool.initialize();
}
/**
* 判断key是否存在
*/
public boolean keyExists(String key){
return mcc.keyExists(key);
}
/**
* 缓存一个对象
*/
public synchronized boolean add(String key, Object value) {
return mcc.add(key, value);
}
/**
* 缓存一个对象(日期)
*/
public synchronized boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
/**
* 缓存一个对象(hashCode码)
*/
public synchronized boolean add(String key,Object value,Integer hashCode){
return mcc.add(key, value, hashCode);
}
/**
* 缓存一个对象
*/
public synchronized boolean set(String key, Object value) {
return mcc.set(key, value);
}
/**
* 缓存一个对象(日期)
*/
public synchronized boolean set(String key, Object value, Date expiry) {
return mcc.set(key, value, expiry);
}
/**
* 缓存一个对象(hashCode码)
*/
public synchronized boolean set(String key,Object value,Integer hashCode){
return mcc.set(key, value, hashCode);
}
/**
* 删除一个缓存对象
*/
public synchronized boolean delete(String key) {
return mcc.delete(key);
}
/**
* 删除一个缓存对象(日期)
*/
public synchronized boolean delete(String key, Object value, Date expiry) {
return mcc.delete(key, expiry);
}
/**
* 删除一个缓存对象(hashCode码)
*/
public synchronized boolean delete(String key,Integer hashCode,Date expiry){
return mcc.delete(key, hashCode, expiry);
}
/**
* 删除全部服务器上的缓存对象
*/
public synchronized boolean flushAll() {
return mcc.flushAll();
}
/**
* 删除指定服务器上的缓存对象
*/
public synchronized boolean flushAll(String[] servers) {
return mcc.flushAll(servers);
}
/**
* 替换原有的缓存(更新缓存)
*/
public synchronized boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
/**
* 替换原有的缓存(更新缓存)
*/
public synchronized boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 替换原有的缓存(更新缓存)
*/
public synchronized boolean replace(String key, Object value, Integer hashCode) {
return mcc.replace(key, value, hashCode);
}
/**
* 替换原有的缓存(更新缓存)
*/
public synchronized boolean replace(String key, Object value,Date expiry, Integer hashCode){
return mcc.replace(key, value, expiry, hashCode);
}
/**
* 返回全部服务器状态
*/
public Map stats(){
return mcc.stats();
}
/**
* 返回指定服务器状态
*/
public Map stats(String[] servers){
return mcc.stats(servers);
}
/**
* 根据指定KEY获得缓存
*/
public Object get(String key) {
return mcc.get(key);
}
/**
* 根据指定KEY,HASHCODE获得缓存
*/
public Object get(String key,Integer hashCode) {
return mcc.get(key,hashCode);
}
/**
* 根据指定KEY,HASHCODE,状态值 获得缓存
*/
public Object get(String key,Integer hashCode,boolean asString) {
return mcc.get(key,hashCode,asString);
}
/**
* 测试方法
* 这里真实调用的时候换成自己的场景使用。
*/
public static void main(String[] args) {
MemCachedCtl cache = MemCachedCtl.getInstance();
cache.init();
// cache.add("helloworld_key", "helloworld_value");
cache.set("helloworld_key", "helloworld_value");
System.out.print("返回结果: " + cache.get("helloworld_key"));
}
}
评论前必须登录!
注册