经验分享,附件与网站程序如何分离?

2019-12-13 11:04:02 收藏 5170
经验分享,附件与网站程序如何分离?

现在的服务器越来越便宜,但是带宽却限得很死,以前阿里云搞活动都只有1M带宽,现在腾讯云加入竟争就好多了,可以有3M甚至5M。

一旦发现网站变慢,很大可能就是带宽不足影响的。因为带宽卡住了。


虽然云服务器可以随时加带宽,但是费用算下来,比新买一台服务器还贵。


要解决这个办法,就是把网站程序与附件分离,比如把 /public/ 目录移到新的服务器去。


注意是手工定时的移过去,比如每个月移一次。然后配置服务器,让他智能的选择访问,如果网站所在服务器没有附件的话,就去备用服务器读取。


第一步,先删除 /public/.htaccess 此文件, 再修改网站根目录的文件 .htaccess 代码类似如下


以下是隐藏的内容需要回复才可见,因为回复过了,所以下面的内容可见
 


<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On


RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

        RewriteCond %{REQUEST_URI} !\.html$ 
	RewriteRule ^(.*)public\/static\/(.*)$ https://x1.soyixia.net/bak/static/$2 [R,L]

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)public\/uploads\/(.*)$ https://x1.soyixia.net/bak/uploads/$2 [R,L]


  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>




其中下面这条代码的意思就是强制把static目录,访问备用服务器的文件,即使本机有,也不访问。但.html结尾的文件就不要访问备用服务器的,因为单页路由要用到,不能跳来跳去。如果还有其它特殊的文件不要使用远程服务器的话,就把!\.html$ 改成 !(\.html|\.js|\.css)$ 

RewriteCond %{REQUEST_URI} !\.html$ 
RewriteRule ^(.*)public\/static\/(.*)$ https://x1.soyixia.net/bak/static/$2 [R,L]




下面这个就是代表如果本地文件不存在,才访问备用服务器的文件。如果本机存在,比如新上传的,就访问本机的。不存在,才访问备用服务器的。

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)public\/uploads\/(.*)$ https://x1.soyixia.net/bak/uploads/$2 [R,L]



注意事项,把static目录,也访问备用服务器的话, 就会涉及到跨域的问题,有些字体图标会受影响因跨域不能访问,这个时候就要修改备用服务器的apache配置。加多下面的代码

Header set Access-Control-Allow-Origin *

如下图,修改后重启即可解决跨域的问题





Nginx服务器解决跨域问题的话,要加如下代码

location / {  
  add_header Access-Control-Allow-Origin *;  
}


weinxin
我的微信
科学的永恒性就在于坚持不懈地寻求之中,科学就其容量而言,是不枯竭的,就其目标而言,是永远不可企及的。

发表评论

目前评论:0