wordpress前后端分离部署详细教程
我想做个论坛站!选择织梦还是Discuz呢?
谢谢信任。这个前段如果把HTML5,CSS,JS,jquery等都包括了。而且你也学的不错,能够自己动手模仿一些大型的网站,能够将其动态效果,静态效果的模仿个90%以上。可以能够二次开发一些前端框架,比如layui等。但是这个只是显示,只是表面。具体的逻辑还要在后段。还有一些后段主要的框架,其次还要学习常用的数据库。这样你就可以尝试着按你的需要改逻辑了。
基连尼
现在的web开发的大趋势是前后端分离,前后端分离是怎么个意思呢?简单点说,就是在一套系统中,前端和后端的开发是独立的,只需要约定好数据接口就行了。这不像以前,前端仅仅是吧静态页面做好,所有的逻辑业务等等都交给后端人员处理。
前后端分离的好处有很多,比如可以将一部分的业务逻辑转移到前端,这样可以减轻服务区端的压力;另外,最大的好处就是一套服务端可以给多个客户端提供数据服务,比如微信公众号开发,支付宝小程序,web,窗体程序,同时,一个客户端也可以调用多个服务端。这大大提高了开发的灵活性和开放性。在这里吐槽一下我所在的公司,前端纯粹的切图仔,只会做静态页面,一切业务逻辑完全不懂。
跑题了,题主的问题是能否二次开发,那么我告诉你,完全可以。像我这种刚毕业半年的菜鸟后端程序员,有时候还自己对一些前端插件进行二次封装,有时候还会改一些源代码,或者自己封装一些插件来适应业务需求。
WordPress简单开启动静态分离
前面已经给大家提供了三种缓存方案,随便挑选一种即可让你的网站加载速度快如闪电,还没使用缓存的可以查阅以下文章
加了缓存之后网站速度已经很快了,如果想要锦上添花那么就需要用到我们的动静态分离,什么叫动静态分离呢?就是把网站的动态内容和静态内容分开,网站的动态内容就是需要我们服务器实时运算的内容,而静态内容就是网站上图片,视频,CSS,JS等等一系列不需要服务器实时运算的内容。我们将网站进行动静分离之后动态和静态资源会由两个域名来提供,比如本站的网址是www.hongnote.cn ,静态资源地址为img.hongnote.cn,你随便选张本站的图片查看链接就会发现图片的url为img前缀的这个域名。这样做有什么好处呢,我可以直接在CDN上把img的这个静态资源的域名把它设为全部缓存,这样访问本站的静态资源基本上都是CDN节点提供,为服务器减轻压力。话不多说,马上开始部署教程
宝塔新建站点宝塔新建一个站点,比如img.abc.com,或者其它的域名都可以
配置vhost文件将以下代码添加到静态资源的vhost文件中,在#SSL-END下面添加即可
# 图片等静态资源请求代理到本地主站(关键配置) 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)$ { add_header Access-Control-Allow-Origin *; # 解决字体跨站问题 add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,OPTIONS; proxy_pass ; # 如果是启用了 https 的网站,这里最好改成 ,避免主站加了非 https 协议的跳转配置,导致不成功。 proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; proxy_set_header Host www.hongnote.cn; # 这里改为实际主站域名(必须) expires max; # 设置浏览器 304 缓存为最长期限 } # 为这个二级域名额外设置一个 robots 文件 location ~ (robots.txt) { rewrite /robots.txt /imgrobots.txt last; # 在网站根目录新增一个 imgrobots.txt,内容和七牛 CDN 类似,禁止搜索引擎抓取非静态资源 } # 如果通过静态域名访问的是非静态资源,比如访问了我们的文章页面,则跳到主站对应的页面。 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)) { rewrite ^(.*)$ $$1 permanent; # 域名 修改为实际主站域名 } }静态资源robots.txt文件布置
静态网站根目录添加一个imgrobots.txt文件,配置如下,用于防止搜索引擎抓取除了静态资源以外的其它资源
User-agent: *Allow: /robots.txtAllow: /wp-content/Allow: /*.png*Allow: /*.jpg*Allow: /*.jpeg*Allow: /*.gif*Allow: /*.bmp*Allow: /*.ico*Allow: /*.js*Allow: /*.css*Disallow: /functions.php添加代码
将以下代码添加到主题的functions.php文件中,自行替换域名
function QiNiuCDN(){ function Rewrite_URI($html){ $domain = 'www\.hongnote\.cn'; //填写主站域名,小数点前需要加上反斜杠转义 $static = 'img.hongnote.cn'; //填写二级静态域名 //更多静态资源需要替换,可以将后缀加到后面的括号,使用分隔符分割 $html = preg_replace('/http(s|):\/\/'.$domain.'\/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','//'.$static.'/wp-$2.$3',$html); return $html; } if(!is_admin()){ ob_start("Rewrite_URI"); }} add_action('init', 'QiNiuCDN');
大功告成,再次打开你的网站你的图片链接就是由静态资源域名提供了,因为资源都是在同一个服务器里面,如果不使用CDN话基本没什么作用,只是看着好看而已
要注意的是这种动静分离是不彻底的,因为本质上资源还是在一个服务里面的,需要配合CDN使用,主站托管在国外服务器的可以参照本站方法将静态资源用一个备案的域名接入CDN来加速,这样你的网站速度在国内访问也会快很多。
也不用顾虑缓存规则会不会影响网站内容,直接将静态资源域名的CDN设置为全部缓存即可
原文链接:HongNote - WordPress简单开启动静态分离
WordPress与lumen联手之后会发生什么?
WordPressWordPress的强大已经不需要小编在这里多说了,至今统计WordPress已经占有了百分之七八十的网站市场份额,可以毫不夸张的说每十个网站中必有几个是WordPress做的。
Lumenlumen,是原laravel开发团队基于laravel的基础开发的一款面向API的开发框架,该框架的定位是专业、快速的API接口开发工具。
为什么要结合?一、WordPress的API不完整
WordPress很强大,这就意味着官方团队也考虑到了WordPress的API开发,现在随意打开一个站点,在域名的后面输入/wp-json都可以看到WordPress的API列表,但是WordPress API的二开可以说是非常繁琐的,其中体现在一下几点:
不能鉴权,需要借助第三方插件需要各种hook以及各种辅助,代码难以维护需要写各种基础函数来辅助开发不能或者需要很强大的知识储备才能开发出现代性的易用、易维护的API接口。二、Lumen很专业、WordPress很强大
Lumen作为一款专业的API接口开发工具,其中包含了路由、控制器、数据库操作类等等一系列即开即用,而且背后有强大的laravel开发团队。
当然,以上也许还不够,小编试着在WordPress上结合Lumen已经三年了,这三年小编已经用这套架构做过很多项目,其中包括商城、资讯、小程序、APP等等,所以总结出来了一下优点:
从Lumen的层面来说:强大的WordPress当做后台管理,可以省去再次写一个网站管理后台从lumen的层面来说:可以借助WordPress上千个函数、hook、class进行开发,省事省力省心!从WordPress层面说:专业的事情专业的来做,比如开发API用Lumen对开发者来说:前后端分离更简单对开发者来说:不必再对后期难以维护的WordPress代码无从下手对开发者来说:所有php库随意使用,所有WordPress库随意使用对开发者来说:如果你会Lumen,你可以不必理会会不会WordPress,但是这样你无法享受到WordPress基础库的强大。还有更多,你可以想象……三、为什么要结合
你需要为你的WordPress开发一套现代性、易用、可拓展的API接口你需要为你的WordPress开发一套APPH5小程序等等前后端分离的项目你需要为你手上的lumen框架选择一个后台如何结合?这就是本系列教程需要完成的事情,本系列教程将试图从以下三种方式进行讲解:
ngnix下一个网站安装不同的程序在WordPress插件中集合Lumen在WordPress主题中集合lumen在学习本系列教程时你需要掌握如下知识:
会使用lumen框架或者至少掌握一个MVC架构的PHP框架会二次开发WordPress,或者至少能看懂WordPress的官方文档会php在学习本系列教程后你会掌握如下知识:
一个基础的包含lumen的WordPress主题一套基础的lumen架构一个基础的包含lumen的WordPress插件点击链接,立刻查看后续!