WordPess 如何实现动静分离

网友投稿2年前 (2024-04-28)免费PHP程序源码1428
摘要:动静分离,即将js脚本、css样式表、图片图标、字体等静态资源文件托管在不同的域名上,从而浏览器可以同时下载页面内容和静态文件,以达到网页加速的目的。以本站的 V2ray教程 文章为例,页面内容和下面的评论是动态生成的,文章里的图是静态的。通过动静分离,文章内容、评论和图片可以同…

动静分离,即将js脚本、css样式表、图片图标、字体等静态资源文件托管在不同的域名上,从而浏览器可以同时下载页面内容和静态文件,以达到网页加速的目的。以本站的 V2ray教程 文章为例,页面内容和下面的评论是动态生成的,文章里的图是静态的。通过动静分离,文章内容、评论和图片可以同时下载,从而加快了网页打开速度。

下面介绍本人所知的WordPress动静分离方法,并指出其优缺点。作为例子,下文中总是以 itlanyan.com 为WordPress博客主域名,static.itlanyan.com 为静态资源用的域名。

WordPress域名替换

我们可以在WordPress页面输出前,将静态资源url替换成静态域名,从而达到动静分离的目的。

具体操作为:

1. 创建动态域名的nginx配置文件,输入如下内容:

server {
    listen 80;
    server_name static.itlanyan.com; # 请替换成自己的域名

    return 301 https://static.itlanyan.com$request_uri; # 请替换成自己的域名}server {
    listen 443 ssl http2;
    ssl_certificate ssl证书路径;
    ssl_certificate_key ssl密钥路径;
    access_log /var/log/nginx/static.tlanyan.access.log main buffer=64k flush=30s;
    error_log /var/log/nginx/static.tlanyan.error.log;

    root /var/www/tlanyan; # 请修改成网站实际目录

    # 非静态资源转发到主站。此配置涉及到安全问题,非常重要,请务必配置!!
    location / {
        if ( $request_uri !~* .*\.(js|css|png|jpeg|jpg|gif|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf))
        {
            return 301 https://itlanyan.com$request_uri; #itlanyan.com请改成自己的域名
        }
    }

    # 静态资源配置
    location ~* .*\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        expires max;
        add_header Access-Control-Allow-Origin *; # 解决字体跨站问题
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,OPTIONS;
    }
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn)
    {
        return 404;
    }}

2. 在网页内容输出前,修改静态资源域名为静态域名。具体操作是:编辑主题的functions.php文件,加入如下内容:

function replace_domain($content) {
  # itlanyan.com请改成自己的域名
  $pattern = '/https:\/\/tlanyan\.me\/wp-([^"\']*?)\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)/i';
  $replace = 'https://static.itlanyan.com/wp-$1.$2';
  return preg_replace($pattern, $replace, $content);}add_action('init', 'replace_domain');

接下来重启Nginx,刷新网站文章,看看图片、js等文件路径的域名有没有换成静态域名吧。

修改WordPress上传域名

对于WordPress,除了主题所用的css、字体等静态资源,主要静态资源是用户上传的图片和文件。好消息便是,用户可以自定义上传目录和上传的域名,从而轻松做到静态分离。

操作方法为:

1. 登录网页后台,打开 https://你的域名/wp-admin/options.php(只能手动在浏览器打开),找到 upload_path 和 upload_url_path 两个选项,第一选项用来设置上传图片存放的文件夹(默认是 wordpress安装目录/wp-content/uploads),第二个是设置文件的域名:

WordPress自定义上传文件域名

2. 我们修改 upload_url_path 为静态域名,然后页面拖到下面点击“保存修改”;

3. 新建静态域名的Nginx配置文件,输入如下内容:

server {
    listen 80;
    server_name static.itlanyan.com; # 请替换成自己的域名

    return 301 https://static.itlanyan.com$request_uri; # 请替换成自己的域名}server {
    listen 443 ssl http2;
    ssl_certificate ssl证书路径;
    ssl_certificate_key ssl密钥路径;
    access_log /var/log/nginx/static.tlanyan.access.log main buffer=64k flush=30s;
    error_log /var/log/nginx/static.tlanyan.error.log;

    root /var/www/tlanyan/wp-content/uploads; # 请修改成网站实际目录,注意根目录为 wp-content/uploads}

由于 wp-content/uploads 目录只有上传的文件,不存在敏感信息,因此无需做额外安全设置。

4. 经过上述配置,新文章中的图片会使用静态域名,但旧文章还是原来的链接。我们可以通过数据库批量更新链接,操作为:登录数据库,执行这个SQL语句:update wp_posts set post_content=replace(post_content, 'itlanyan.com/wp-content/uploads', 'static.itlanyan.com');。请注意语句中的itlanyan.com域名换成你的域名。

这样,文章中的图片和文件链接便与文章做到动静分离了。

Nginx重定向

如果我们使用Nginx作为前端服务器,可以通过Nginx重定向功能将所有的静态资源请求转到静态域名。

操作如下:

1. 按照 WordPress域名替换 的方法新建静态域名的Nginx配置文件;

2. 在主域名的Nginx配置文件对静态资源做如下转发处理:

server {
  # 其他配置
  # 静态资源文件重定向
  location ~* .*\.(js|css|png|jpeg|jpg|bmp|ico|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
    return 301 https://static.itlanyan.com$request_uri; # static.itlanyan.com请改成你的静态域名
  }
  # 其他配置}

配置好后记得重启Nginx。

Nginx内容替换

WordPress可以做内容替换,Nginx有sub模块同样能替换网页内容,这样无需改动WordPress便能做到静态资源使用静态域名。

操作如下:

1. Nginx的PHP处理中增加如下替换命令:

location ~ \.php$ {
  # 一些fastcgi 配置

  # 替换配置
  sub_filter_once off;
   # 请修改成自己的域名
  sub_filter 'https://itlanyan.com/wp-content/uploads' 'https://static.itlanyan.com';}

2. 按照 修改WordPress上传域名 中的方法新建静态域名Nginx配置文件,然后重启Nginx。

总结

上文介绍了WordPress动静分离的四种办法,这里简单总结一下四种方法的优缺点:

方法优点缺点
WordPress域名替换所有的静态资源都能走静态域名静态网站需谨慎配置,否则有安全危险
修改WordPress上传域名官方正统办法,无需对WordPress做修改只能让上传的文件和图片走静态域名
Nginx重定向只修改Nginx配置,比较简单静态资源请求多了一次重定向
Nginx内容替换只修改Nginx配置,操作简单不支持正则匹配,只能让上传文件走静态域名


扫描二维码推送至手机访问。

版权声明:本文由天涯家园HomeH发布,如需转载请注明出处。

本文链接:https://www.homeh.cc/post/155.html

分享给朋友:

“WordPess 如何实现动静分离” 的相关文章

HasChat: 源码下载,一款极简聊天应用,比较完整,略好看

HasChat: 源码下载,一款极简聊天应用,比较完整,略好看

介绍自我做的客服聊天以来,让我做一套聊天应用的呼声越来越多,加上那套客服聊天由于没有组件化、UI设计等问题,也让我一直心有遗憾做的不够完美,于是利用空余时间做了一套相对完整的聊天应用。HasChat 是一套使用全新技术完成的一套通讯聊天网页。前端:Vue3 + Vite + TypeScript +…

114啦网址导航系统 v2.0 GBK

114啦网址导航系统 v2.0 GBK

详细介绍 - [ 114啦网址导航系统 v2.0 GBK ]114啦网址导航建站系统是目前国内使用率最高的网址导航之一,该网址导航生成系统为雨林木风自主研发,现正式开源宣传,将帮助更多站长轻松搭建网址导航网站。 【程序新特征】:基于114啦官方最新模板风格——简洁、美观,网址、内容高度整合…

114啦网址导航建站系统 v2.0 UTF-8

114啦网址导航建站系统 v2.0 UTF-8

详细介绍 - [ 114啦网址导航建站系统 v2.0 UTF-8 ]【114啦网址导航建站程序新特征】:基于114啦官方最新模板风格——简洁、美观,网址、内容高度整合采用高效Yii框架编写—大型Web应用的高性能PHP框架内容、位置区域块—可修改模板灵活调用数据可一键同步114啦官方数据—无需自行维…

162100 网址导航3号程序源码

162100 网址导航3号程序源码

开源最新版本:V9演示:http://www.162100.com/文档:帮助文档 强烈建议大家看简介: 9.4版说明增加了一项极其实用的功能:批量检测网址链接。路径:管理员后台 -> 分类、网址管理 -> 批量抓简介+批量验网址。9.3.9版说明修补了一处安全漏洞,…

wordpress v5.9.1博客官方中文版

wordpress v5.9.1博客官方中文版

Wordpress是目前最流行的博客程序,一般大家的博客建站程序首选都是Wordpress,Wordpress具有强大的扩展性,由于用户数量非常多,用户自身开发的Wordpress插件及主题等也不断地增强Wordpress的功能,甚至已有使用部分cms网站也开始使用wordpress。基本简介 W…

仿hao123导航帝国CMS 7.0 整站源码 v1.0

仿hao123导航帝国CMS 7.0 整站源码 v1.0

仿hao123导航帝国CMS整站收集自网络。亲测完整无错。请保留本站链接www.59info.com(59分类信息)!主要功能介绍:1. 网友添加网址;网友在未登陆系统可以本地设置添加自定义网址,Cookie 记录。方便使用。网页登陆系统后设置的自定义网址会保存到服务器,方便其它电脑登陆后获取自定义…