WordPress 非插件实现静态资源CDN加速 及 又拍云、七牛CDN配置

先我们看看实现CDN加速功能的步骤。

将本地图片地址替换为CDN地址

添加至主题目录functions.php中:

define('CDN_HOST','http://cdn.mywpku.com');
add_filter('the_content','z_cdn_content');
function z_cdn_content($content){
  return str_replace(home_url().'/wp-content/uploads', CDN_HOST.'/wp-content/uploads', $content);
  }
  add_filter('wp_get_attachment_url','z_get_attachment_url',10,2);
function z_get_attachment_url($url, $post_id){
  return str_replace(home_url(), CDN_HOST, $url);
  }

注意 define('CDN_HOST','http://cdn.mywpku.com'); 需要替换为你自己的CDN地址。

将主题静态资源地址替换为CDN地址

添加至主题目录functions.php中:

add_filter('stylesheet_directory_uri','z_cdn_stylesheet_directory_uri',10,3);
function z_cdn_stylesheet_directory_uri($stylesheet_dir_uri, $stylesheet, $theme_root_uri) {
   return str_replace(home_url(), CDN_HOST, $stylesheet_dir_uri);
}
add_filter('template_directory_uri','z_cdn_template_directory_uri',10,3);
function z_cdn_template_directory_uri($template_dir_uri, $template, $theme_root_uri)
{
   return str_replace(home_url(), CDN_HOST, $template_dir_uri);
}

将 wp-content / wp-includes 静态资源替换为CDN地址

@Via:http://www.linuxeye.com/jianzhan/2282.html

define('FocusCDNHost','http://ehsren.com');//wordpress网站网址
define('FocusCDNRemote','http://cdn.ehsren.com');//cdn域名
define('FocusCDNIncludes','wp-content,wp-includes');//设置加速目录
define('FocusCDNExcludes','.php|.xml|.html|.po|.mo');//设置文件白名单
define('FocusCDNRelative','');//Check this if you want to have links like <wp-content/abc.png> rewritten - i.e. without your blog's domain as prefix.
 
function do_cdnrewrite_ob_start() {
$rewriter = new FocusCDNRewriteWordpress();
$rewriter->register_as_output_buffer();
}
add_action('template_redirect', 'do_cdnrewrite_ob_start');
 
class FocusCDNRewriteWordpress extends FocusCDNRewrite
{
function __construct() {
$excl_tmp = FocusCDNExcludes;
$excludes = array_map('trim', explode('|', $excl_tmp));
 
parent::__construct(
FocusCDNHost,
FocusCDNRemote,
FocusCDNIncludes,
$excludes,
!!FocusCDNRelative
);
}
public function register_as_output_buffer() {
if ($this->blog_url != FocusCDNRemote) {
ob_start(array(&$this, 'rewrite'));
}
}
 
}
 
class FocusCDNRewrite {
var $blog_url    = null;
var $cdn_url     = null;
var $include_dirs   = null;
var $excludes    = array();
var $rootrelative   = false;
 
function __construct($blog_url, $cdn_url, $include_dirs, array $excludes, $root_relative) {
$this->blog_url   = $blog_url;
$this->cdn_url    = $cdn_url;
$this->include_dirs  = $include_dirs;
$this->excludes   = $excludes;
$this->rootrelative  = $root_relative;
}
 
protected function exclude_single(&$match) {
foreach ($this->excludes as $badword) {
if (stristr($match, $badword) != false) {
return true;
}
}
return false;
}
 
protected function rewrite_single(&$match) {
if ($this->exclude_single($match[0])) {
return $match[0];
} else {
if (!$this->rootrelative || strstr($match[0], $this->blog_url)) {
return str_replace($this->blog_url, $this->cdn_url, $match[0]);
} else {
return $this->cdn_url . $match[0];
}
}
}
 
protected function include_dirs_to_pattern() {
$input = explode(',', $this->include_dirs);
if ($this->include_dirs == '' || count($input) < 1) {
return 'wp\-content|wp\-includes';
} else {
return implode('|', array_map('quotemeta', array_map('trim', $input)));
}
}
 
public function rewrite(&$content) {
$dirs = $this->include_dirs_to_pattern();
$regex = '#(?<=[(\"\'])';
$regex .= $this->rootrelative
? ('(?:'.quotemeta($this->blog_url).')?')
: quotemeta($this->blog_url);
$regex .= '/(?:((?:'.$dirs.')[^\"\')]+)|([^/\"\']+\.[^/\"\')]+))(?=[\"\')])#';
return preg_replace_callback($regex, array(&$this, 'rewrite_single'), $content);
}
 
}

wordpress免插件纯代码实现又拍云、七牛CDN加速

wordpress七牛镜像存储插件,WP SUPER CACHE等里面的CDN功能,都可以用代码方式实现。

在七牛或者又拍云设置好CDN后,将下面代码仍入主题的functions.php函数文件中即可。

七牛设置CDN

又拍云设置CDN

时间: 2024-10-27 13:58:58

WordPress 非插件实现静态资源CDN加速 及 又拍云、七牛CDN配置的相关文章

推荐国内外优秀+免费CDN加速网站及公共cdn加速库

-----------------------------------------------------------------免费CDN加速网站 1.CloudFlare CloudFlare可能是国内网友接触最比较早的免费CDN服务了,如果你的网站访问用户是全世界的,那么 CloudFlare一定适合你,如果你的网站程序是Wordpress的,官方还专门为WP用户提供了一个官方插件(插件搜索CloudFlare),可以一次性设置完成,并且可以在后台直接查看CDN流量, 使用CloudFla

CDN加速:让内容离用户更近

在互联网+时代,人民越来越依赖互联网获取信息,生活服务,娱乐等.流畅的用户访问体验是所有互联网产品获得用户认可和长期发展的基本前提.但如今网页中包含的元素也越来越丰富,有大量的图片.Flash.动画等内容,文件下载的数据量也在飞速上升,加上网络游戏,网络视频,直播等需要高带宽的业务蓬勃发展,对服务器和网络带宽的压力越来越大.21世纪是讲究效率的时代,唯快不破,互联网领域还存在着一个八秒定律,指用户访问一个网站时, 如果等待网页打开的时间超过8秒,会有超过70%的用户放弃等待.网站访问速度的快慢给

七牛镜像存储 WordPress 插件的使用

  在七牛设置镜像存储 1. 登陆七牛,选择你的空间(注意:空间一定要设置为公开),然后点击 空间设置 > 域名绑定,输入自定义的域名,或者直接使用七牛提供的域名: 2. 然后点击 镜像存储 菜单,点击一键加速按钮: 云存储"> 3. 输入源站的地址,点击确定加速: 安装和使用七牛镜像存储 WordPress 插件 下载七牛镜像存储 WordPress 插件,上传激活,然后在 WordPress 后台 > 七牛镜像存储 > 基本设置,输入你前面绑定的域名(注意输入的域名一

【 CDN 最佳实践】CDN 加速 OSS 常见问题及处理思路

CDN 加速 OSS 是常见的站点动静分离的方式,可以实现将静态资源存储在 OSS 上,并通过 CDN 加速 OSS 实现静态资源的访问加速效果.但是在实际使用的过程中可能会出现使用方法以及配置上的问题导致使用上出现难题.本文档主要就 CDN 加速 OSS 的配置以及各注意事项进行描述已解决本使用场景中遇到的问题. 1. 使用场景描述 图 1 所示即是常见的站点动静分离的解决方案.从该图中可以查看到整个站点数据包括动态资源和静态资源两个部分,其中动态资源主要是指站点的 web 程序以及数据库等内

烨烁:CDN 加速 OSS 常见问题及处理思路

CDN 加速 OSS 是常见的站点动静分离的方式,可以实现将静态资源存储在 OSS 上,并通过 CDN 加速 OSS 实现静态资源的访问加速效果.但是在实际使用的过程中可能会出现使用方法以及配置上的问题导致使用上出现难题.本文档主要就 CDN 加速 OSS 的配置以及各注意事项进行描述已解决本使用场景中遇到的问题. 1. 使用场景描述 图 1 所示即是常见的站点动静分离的解决方案.从该图中可以查看到整个站点数据包括动态资源和静态资源两个部分,其中动态资源主要是指站点的 web 程序以及数据库等内

wordpress无插件生成文章TXT网站地图的方法

该方法不需要安装任何插件,纯代码生成. <?php require('./wp-blog-header.php'); header('Content-type: application/txt'); header('HTTP/1.1 200 OK'); $posts_to_show = 50000; // 限制最大文章数量 ?> <?php header("Content-type: text/txt"); $myposts = get_posts( "nu

spring3mvc框架开发中resin和tomcat默认servelt配置处理静态资源

spring3mvc框架开发中resin和tomcat默认servelt配置 解决的问题: 让静态资源不通过DispatcherServlet处理,由容器默认servlet来处理.   在spring3mvc框架开发,web.xml如下配置时     <servlet>         <servlet-name>task</servlet-name>         <servlet-class>org.springframework.web.servle

js引用-spring mvc 静态资源不能引用 已经配置了不拦截静态资源!!!

问题描述 spring mvc 静态资源不能引用 已经配置了不拦截静态资源!!! 页面中引用 web.xml中配置 springorg.springframework.web.servlet.DispatcherServlet <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring-servlet.xml</para

js文件-springmvc 静态资源 404问题

问题描述 springmvc 静态资源 404问题 项目根目录结构: Web.xml中配置 Spring-sevlet.Xml中配置 首页JSP中调用外部文件 该链接按中Ctrl后再点击,可访问. 之后依旧无法调用JS文件,跪求大神!!!!!!! 解决方案 我也遇到过这个问题.这里有三种方法可以解决:Spring3中js/css/jpg/gif等静态资源无法找到.我习惯第二种 解决方案二: 你的配置文件放到哪里了,有没有正确应用? 解决方案三: 看你的配置,应该是JSP里面引用js文件的路径问题