用Varnish和Memcached缓存给WordPress网站提速-内存级加速

news/2024/5/21 10:55:10/文章来源:https://blog.csdn.net/ynwso/article/details/46332801

Varnish是一款高性能的缓存加速器,Varnish把数据存放在服务器的内存中,利用内存可以极大的提高PHP页面执行速度,可以设置0~60秒的精确缓存时间,32位的机器支持的缓存文件最大为2 GB。

Varnish采用VCL的配置,而且具有强大的管理功能,如top、stat、admin、lis,管理方式比较灵活。Varnish的状态机设计不仅巧妙,结构也很清晰,利用二叉堆管理缓存文件,即可达到随时删除的目的。

Memcached是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached对于减少MysqL数据查询压力非常有帮助。

由于Varnish采用了Visual Page Cache技术,所有缓存的数据都直接从内存读取,而Squid从硬盘读取缓存的数据,所以Varnish在访问速度方面会更快一些。但是Varnish在高并发状态下,CPU、I/O和内存等资源的开销高于Squid。

目前Varnish3.0版本解决了服务器重启后Varnish缓存消失的问题,性能优化上有了更大的提升。本篇文章就来分享一下利用Varnish和Memcached缓存来给Wordpress加速,因为要用到内存,所以比较适合那些大内存的服务器。

如果你正遭遇着大流量给Wordpress服务器带来的压力的苦恼,可以来尝试这些Wordpress提速方法:

  • 1、Redis加速:用Redis缓存来给WordPress站点加速-适用于Apache和Nginx
  • 2、负载均衡:免费空间+便宜VPS和OpenResty,Ngx_lua,Redis搭建系统负载均衡环境
  • 3、CDN加速:DNSPOD分布式解析+安全宝和Incapsula对搜索引擎分别CDN加速

用Varnish和Memcached缓存给Wordpress网站提速-内存级加速

一、Varnish安装方法

1、Varnish官网:

  • 1、官方网站:https://www.varnish-cache.org/

2、对于Centos 5的,可以执行以下命令来安装:


rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release/varnish-release-3.0-1.el5.centos.noarch.rpm
yum install varnish

3、对于是Centos 6的,可以执行以下命令来安装:


rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el6/noarch/varnish-release/varnish-release-3.0-1.el6.noarch.rpm
yum install varnish

Varnish安装完成

4、如果版本搞错,就会出现如下提示错误:


error: Failed dependencies:rpmlib(FileDigests) <= 4.6.0-1 is needed by varnish-release-3.0-1.el6.noarchrpmlib(PayloadIsXz) <= 5.2-1 is needed by varnish-release-3.0-1.el6.noarchError: Missing Dependency: libedit.so.0 is needed by package varnish-3.0.5-1.el5.centos.i386 (varnish-3.0)

Varnish安装出错提示

5、Centos 5安装时还会提示有依赖关系不能解决,解决的办法就是添加扩展的YUM 源,执行以下命令:


rpm -ivh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm (32位)
rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm (64位)
yum clean all
yum update

6、对于是Debian系统,可以执行以下命令来安装:


curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
echo "deb http://repo.varnish-cache.org/debian/ wheezy varnish-3.0" >> /etc/apt/sources.list
apt-get update
apt-get install varnish

6、对于是Ubuntu系统,可以执行以下命令来安装:


curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -
echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install varnish

7、设置Varnish开机启动,执行:chkconfig varnish on和chkconfig varnishncsa on

8、启动Varnish的命令是:service varnish start和service varnishncsa start

Varnish开机启动

9、这里还有一个Linux+Nginx+MySQL+PHP+Varnish一键安装包,自动安装完成:Varnish高性能开源HTTP加速器:Varnish Nginx和Varnish Apache搭建配置。

二、Varnish相关配置

1、设置好Varnish缓存规则。默认是/etc/varnish/default.vcl,大家可以下载这个Varnish WordPress配置文件覆盖原来的,地址:http://centos.googlecode.com/files/default.vcl。源码内容:


# This is a basic VCL configuration file for varnish.  See the vcl(7)
# man page for details on VCL syntax and semantics. 
# Default backend definition.  Set this to point to your content
# server.
backend default {.host = "127.0.0.1";.port = "8080";
}
acl purge {"localhost";"127.0.0.1";
} 
# Below is a commented-out copy of the default VCL logic.  If you
# redefine any of these subroutines, the built-in logic will be
# appended to your code.
sub vcl_recv {# Only cache the following siteif (req.http.host ~ "(amhg.freehao123.info)") { set req.backend = default; } else { return (pass); }
if (req.request == "PURGE") {if (!client.ip ~ purge) {error 405 "Not allowed.";}return (lookup);}if (req.restarts == 0) {if (req.http.x-forwarded-for) {set req.http.X-Forwarded-For =req.http.X-Forwarded-For + ", " + client.ip;} else {set req.http.X-Forwarded-For = client.ip;}}if (req.request != "GET" &&req.request != "HEAD" &&req.request != "PUT" &&req.request != "POST" &&req.request != "TRACE" &&req.request != "OPTIONS" &&req.request != "DELETE") {/* Non-RFC2616 or CONNECT which is weird. */return (pipe);}if (req.request != "GET" && req.request != "HEAD") {/* We only deal with GET and HEAD by default */return (pass);}if (req.http.Authorization || req.http.Cookie ~ "wordpress_logged" || req.http.Cookie ~ "comment_") {/* Not cacheable by default */return (pass);}return (lookup);
}
sub vcl_pipe {# Note that only the first request to the backend will have# X-Forwarded-For set.  If you use X-Forwarded-For and want to# have it set for all requests, make sure to have:# set bereq.http.connection = "close";# here.  It is not set by default as it might break some broken web# applications, like IIS with NTLM authentication.return (pipe);
}
sub vcl_pass {return (pass);
}
sub vcl_hash {hash_data(req.url);if (req.http.host) {hash_data(req.http.host);} else {hash_data(server.ip);}return (hash);
}
sub vcl_hit {
if (req.request == "PURGE") {purge;error 200 "Purged.";}return (deliver);
}
sub vcl_miss {
if (req.request == "PURGE") {purge;error 200 "Purged.";}return (fetch);
}
sub vcl_fetch {if (beresp.ttl <= 0s ||beresp.http.Set-Cookie ||beresp.http.Vary == "*") {/** Mark as "Hit-For-Pass" for the next 2 minutes*/set beresp.ttl = 120 s;return (hit_for_pass);}
set beresp.ttl = 1d;return (deliver);
}
sub vcl_deliver {return (deliver);
}
sub vcl_error {set obj.http.Content-Type = "text/html; charset=utf-8";set obj.http.Retry-After = "5";synthetic {"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head><title>"} + obj.status + " " + obj.response + {"</title></head><body><h1>Error "} + obj.status + " " + obj.response + {"</h1><p>"} + obj.response + {"</p><h3>Guru Meditation:</h3><p>XID: "} + req.xid + {"</p><hr><p>Varnish cache server</p></body>
</html>
"};return (deliver);
}
sub vcl_init {return (ok);
}
sub vcl_fini {return (ok);
}

2、下载下来的default.vcl你需要调整的地方有一处,就是将域名更改为自己要使用Varnish缓存的域名。

Varnish修改配置规则

3、另外default.vcl还设置缓存时间,单位是s(秒),h(小时),d(天)。

Varnish调整缓存时长

4、配置Varnish的访问端口。Varnish配置默认的访问端口不是80端口,因此需要修改/etc/sysconfig/varnish配置文件,把端口设置为80。

Varnish配置端口

5、在/etc/sysconfig/varnish这个文件中还可以设置Varnish缓存大小,默认是1GB。

Varnish设置缓存大小

三、修改Apache和Nginx为非80端口

1、Varnish的端口改为了80后,我们需要将Apache和Nginx改为非80端口,一般地进入到Apache和Nginx的配置文件修改即可。

Varnish修改服务器端口

2、特别注意:安装了虚拟主机控制面板,除了要修改nginx.conf、nginx-host.conf或者httpd.conf外,还要修改虚拟主机的配置文件,你需要根据自己的VPS主机面板来调整。

Varnish修改虚拟主机端口

3、端口号一般是在配置文件的上方或者最下方。

Varnish端口在配置文件上方或者下方

四、Varnish缓存效果和清除缓存方法

1、上面操作完成后,执行重启命令:service varnish restart,必要时可以重启PHP、Apache和Nginx等。

2、Varnish清除缓存的格式是:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url XXXX,其中6082是管理端口后,你可以自己在 /etc/sysconfig/varnish中定义。

3、如果你想清除所有的Varnish缓存,就执行:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url ^.*$

4、如果你是想清除某一个页面的缓存,就执行:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url /a/2014.html

5、如果你是想清除/a/b/s*.html这样的页面,执行:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url ^/a/b/s.*$

6、如果你是想清除/a/b/*.html 这样的页面,执行:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url ^/a/b.*$

7、总之,Varnish清除缓存遵循正则表达式,ban.url 是相对URL,查看最近的操作记录:varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.list

Varnish清除缓存方法

8、Varnish HTTP Purge插件自动清除缓存。当你的Wordpress发表文章、编辑文章、修改主题、评论时,Varnish HTTP Purge会自动发出清除该页面缓存请求,无需自己手动清除。官网:https://wordpress.org/plugins/varnish-http-purge/

Varnish WordPress插件

9、Varnish HTTP Purge也支持手动强制清除Varnish全部缓存。

Varnish强制删除缓存

五、Varnish缓存效果和命中率统计

1、Varnish缓存生效后,打开浏览器查看Http的Header头部信息,可以看到有网页是从Varnish缓存中读取。

Varnish查看浏览器头部信息

2、执行:varnishstat 可以看到Varnish缓存状态。(点击放大)

Varnish查看缓存状态

3、Client connections accepted是成功发送HTTP请求的总数量,Client requests received到现在为止发送HTTP请求的累计次数,Cache hits在缓存区中查找并且命中缓存的次数,Cache misses非命中数,N struct object表示当前被缓存的数量。

4、查看Varnish内存使用量:varnishstat -1|grep SMA。

Varnish查看内存使用量

5、SMA.s0.g_space 表示当前可以应用的内存量, SMA.s0.g_bytes 表示的是当前cache实际的内存大小( SMA.s0.c_bytes= SMA.s0.g_bytes +SMA.s0.c_freed ),SMA.s0.c_bytes自动调节的范围,

6、从上图中可以看出我的一个256MB内存已经被分配光了,但是Varnish的命中率还是挺低的。(最主要的原因是这是一台测试VPS,几乎没有访问量,自然谈不上有多少访问缓存数据)

7、实际使用过程中,大家可以随时观察和分析自己的Varnish缓存命中率,如果Varnish命中率比较低的,可以在default.vcl中加入以下规则。


sub vcl_recv
{
if (!(req.url ~ "wp-(login|admin)"))
{
unset req.http.cookie;
}
}
sub vcl_fetch
{
if (!(req.url ~ "wp-(login|admin)"))
{
unset obj.http.set-cookie;
}
}

8、该规则主要是:如果不是wordpress自身的登录和管理页面,就去掉页面http头部的set-cookie标记,从而让Wordpress绝大部分页面都直接使用Varnish缓存。

六、Memcached缓存加速使用

1、Memcached使用得比较广泛,常用的VPS控制面板,如WDCP、LNMP、AMH等都提供了Memcached扩展安装,参考:WDCP,LNMP安装PHP缓存加速扩展eAccelerator,xcache和memcached

2、对于Wordpress,我们可以使用基于Memcached 的WordPress 缓存插件:Batcache,这个插件主要是将Wordpress的页面缓存到内存中,第二次访问该页面时直接从内存中读取,官网:http://wordpress.org/plugins/batcache/

3、要想成功使用Batcache,你需要先让Wordpress用上Memcached ,下载一个插件:http://wordpress.org/plugins/memcached/,解压,将其中的object-cache.php文件上传到/wp-content/目录中。

4、然后将Batcache下载到本地,解压,将压缩包中的advanced-cache.php上传到/wp-content/目录中。

Memcached安装插件

5、再将Batcache压缩包中的batcache.php上传到/wp-content/plugins/ 目录中。最后在wp-config.php 文件首行中加入:define('WP_CACHE', true);

Memcached添加配置文件

6、Batcache启用后,如果一切正常,刷新几下页面,在</head>标签前面会看到Batcache缓存标识数据。

7、查看Memcached内存使用情况,可以执行:telnet 127.0.0.1 11211,然后输入stats就可以看到Memcached缓存使用情况了。相关的说明如下:

Memcached缓存状态

8、注意:有些VPS可能没有安装telnet,执行以下命令安装:yum install xinetd和yum install telnet –server

9、另外,有用WP Super cache的朋友,可以直接启用WP Super cache的Memcached缓存加速:WP Super cache启用Memcached内存缓存加速及其效果分析。

七、Varnish和Memcached缓存加速小结

1、Varnish缓存安装比较简单,主要是注意修改Varnish的端口号为80,然后把Apache和Nginx的端口号修改为非80,Memcached缓存各大VPS控制面板都会提供直接安装方法,安装后在探针中可以检测到。

2、总得来说Varnish和Memcached都属于内存级别的缓存加速,Varnish即使服务器重启也会原有的缓存也不丢失,因此适合页面缓存,而Memcached更适合MysqL数据库缓存,可以大大减少数据库压力。

文章出自:免费资源部落 http://www.freehao123.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_866357.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式的符号概念、捕获组与非捕获组、解读方式、练习网站

正则表达式 正则表达式的解读方法符号概念练习的网站看两个现象进行后续思考Group的用途 捕获组和非捕获组捕获组非捕获组组的命名 正则表达式的解读方法 读者最好能养成按照字符来理解正则表达式的习惯。&#xff08;参考自动物书《精通正则表达式》&#xff0c;这种读法对我…

基于VUE使用Hbuilder工具开发的甜品网站

上文已经提到了VUE实现的思维导图&#xff0c;感兴趣的同学可以自己去了解一下VUE&#xff0c;学过JS都会很快上手。本文是开发的甜品网站&#xff0c;适配所有手机的H5网页&#xff0c;你说它是APP、小程序好像都没错。 实现代码界面如下&#xff1a; 实现的主要代码如下&…

IE浏览器高通网站打不开dump分析选择目录总结

首先需要安装jdk与jre最新版本 安装之后配置好路径&#xff0c;重启电脑 如果浏览器提示&#xff1a;Unable to load Java Applet. Please make sure JRE is updated. 就如下图进行操作&#xff1a; 在浏览器设置->安全->去掉ActiveX筛选的前面的√ 当死机之后&#x…

Designing Websites for Performance 如何设计高性能网站 Lynda课程中文字幕

Designing Websites for Performance 中文字幕 如何设计高性能网站 中文字幕Designing Websites for Performance 设计性能网站探索快速模式&#xff0c;提示和技巧的网页设计师 在本文中&#xff0c;Brian Wood向您展示了如何优化和最小化Web图形的大小&#xff0c;实现流畅…

有一个属于自己的网站是不是很酷呢,超详细的建站流程,我都给你总结好了

上篇文章Relax讲到希望在AR这个方向上做一些事情&#xff0c;落实到具体上肯定是要做一些东西出来&#xff0c;从软件层面来说&#xff0c;传统互联网兴起是以成千上万的网站呈现的&#xff0c;移动互联网是以成千上万的APP呈现的&#xff0c;当然其实还有别的方式&#xff0c;…

接口调试网站和工具

调试网站&#xff1a;https://getman.cn/gsgaO 超级好用的一款在线接口调试网站&#xff0c;可以先分析带什么样的请求头部&#xff0c;什么样的数据体可以请求成功&#xff0c;然后调整请求代码格式。 调试工具&#xff1a;fidder 很多app不是我们开发的&#xff0c;但我们…

网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

日前&#xff0c;阿里云虚拟主机推出了新功能&#xff0c;支持PHP的最新版本 7.0和7.1&#xff0c;并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言&#xff0c;最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主机的领头羊&#xff0c;为了给用户提供更先…

一键清理网站木马文件,从此网站拥有专属保镖 ——阿里云虚拟主机推出木马查杀功能

近日&#xff0c;阿里云推出了云虚拟主机网站木马查杀的新功能&#xff0c;十分适合对网站安全不了解、不熟悉的用户&#xff0c;或网站出现挂马情况不清楚如何处理的用户。 阿里云表示&#xff0c;此次网站木马查杀功能是阿里云安骑士专为虚拟主机推出的安全增值服务。通过周期…

每天自动备份网站数据,发现问题一键恢复 ——阿里云虚拟主机推出网站数据自动备份功能

近日&#xff0c;阿里云宣布推出虚拟主机网站自动备份功能&#xff0c;可自动备份用户的网站和数据库数据至单独的备份区域&#xff0c;用户可随时恢复前三天的网站和数据库的数据。一旦出现意外或者数据丢失情况&#xff0c;可将损失降低到最低。 数据是用户的最重要的财产&am…

10分钟轻松定制网站日志分析大盘

前言 作为站长的你是否也曾想针对站点访问日志信息&#xff0c;分析其中PV、UV、访问地域分布以及访问前十页面等情况。作为开发者的你是否也想记录应用的日志信息&#xff0c;针对top方法进行优化从而提升应用质量。作为运维老大的你是否也曾想过实时监控最近1个小时的服务器…

从网站上加载数据和从文本文件导入数据和超级燃的分列功能

从网站上加载数据 右键单击文件&#xff0c;选择打开方式为ie游览器&#xff0c;复制文件地址 数据——自网站——粘贴地址——选定表格&#xff08;旁有小箭头&#xff09;——导入——任意选定单元格 从文本文件导入数据 数据——自文本——选择文本 选择分隔符号&#x…

友情链接:对网站排名作用都深入了解吗?

说起友情链接的作用也是作为一个站长老生长谈的事情&#xff0c;但是对于新手做seo的站长们&#xff0c;可能就不是那么清楚了它的作用到底对网站有哪些了。往下看&#xff01; 一、友情链接&#xff0c;分为两种 1、双向友情链接&#xff1a;意思就是相互之间互相做链接&…

Gihub网站打不开怎么办

github打不开时&#xff1a; 1、通过IPAddress工具找出它的IP地址&#xff1a; 2、修改host文件&#xff08;windows路径&#xff1a;C:\Windows\System32\drivers\etc&#xff09;,添加以下内容 # github 140.82.112.4 github.com 140.82.112.4 gist.github.com 140.82.1…

javascript之jQuery 打造个性网站

文件结构 网页结构 头部:放LOGO,通往各个页面的链接 内容:放置页面的主体内容 底部:放置页面其他链接和版权信息 [html] view plain copy <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra…

在自己的电脑上搭建服务器,发布自己的网站(学习之用)

我们平常学习时经常会写一下javaweb程序&#xff0c;我们为了更能逼近现实&#xff0c;就想着自己的javaweb程序发布后&#xff0c;外网的同学能够访问我们的网站&#xff0c;难道我们去买空间&#xff0c;去买域名嘛&#xff0c;其实也没必要&#xff0c;我们只是学习&#xf…

大型网站的灵魂——性能

大型网站的灵魂——性能 转自&#xff1a;http://www.csdn.net/article/2015-02-26/2824026 总结&#xff1a; 1、现在主流的浏览器默认设置了DNS的预取功能&#xff08;DNS Prefetch&#xff09;&#xff0c;当然你也可以主动告知浏览器我的网站需要做DNS预取&#xff1a; …

大型网站系统架构的演化

一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#xff0c;在这个过程中&#xff0c;开发模式、技术架构、设计思想…

iOS开发者最需要的15个网站

iOS开发者若想使技艺达到炉火纯青的地步&#xff0c;就要不断借鉴他人的有益经验&#xff0c;紧跟新兴科技和工具的步伐。除了Apple的开发者中心&#xff0c;其他网站上的文章和资源也具备参考价值&#xff0c;若能学得一二&#xff0c;必能锦上添花。不过&#xff0c;时间宝贵…

堪称最流行强大的免费开源PHP网站程序——WordPress中文正式版

WordPress可以说是个人、企业建站或用于学习的首选程序&#xff0c;以功能强大、扩展性与灵活性著称&#xff0c;虽然它最初是一个PHP博客程序&#xff0c;但你能用 WP 打造成任何类型的网站。如果要建站或想尝试学习建站&#xff0c;真的可以使用WordPress。 WordPress功能强大…

做一个网站多少钱?

「一辆车子多少钱&#xff1f;一个房子多少钱&#xff1f;」 这 问题在工程师或设计师的眼里就如「一辆车子多少钱&#xff1f;一个房子多少钱&#xff1f;」,这个问题实在空泛到一个让人无法言语的境界&#xff0c;这也是我最常被问到的问题「做一个网 站多少钱&#xff1f;」…