当前位置:首页 > Linux > 正文内容

Yii2 负载均衡找不到JS、CSS

爱与心4个月前 (04-09)Linux2749
  1. 在部署项目的时候,用了2台服务器.请求的时候用了负载均衡,导致 YII2 的静态文件(js,css...)报 404 ,原因是: 请求一个页面时 A服务器 去处理,但是静态资源缺请求到了 B服务器 ,B服务器的 YII2资源管理器 还没有在 web\assets 生成目录和静态文件.

  2. 仔细看了下 YII2 的静态资源管理代码:yii\web\AssetManager(定义资源文件包),``yii\web\AssetBundle`(资源包之间的文件依赖,加载和创建).有以下几个解决思路:

  • 更改 生成缓存目录的命名方式,保持一致的文件夹,缺点就是访问其中一台服务器时,还没有生成 静态文件目录.需自己访问,直到 2台服务器 有相同的目录即可.

//配置 main.php components数组下assetManager
'assetManager'=>[
    //缓存相同的文件到相同的一个文件夹
    'hashCallback'=>function($path){
        return hash('md4', $path);
    },
    //添加文件时间戳
    'appendTimestamp' => true,
],
  • 同步缓存目录,这个相对来说是很简单.就是保持2个服务器的有相同的一份静态资源,手动同步就是 FTP 上传,自动同步就是2个服务器之间相互请求保持一致即可.有工具可以使用:Linux rsync目录同步

  • 使用 CDN ,在配置CDN时要把 'sourcePath'赋值为 NULL,而不是空字符串.每一个资源包的CDN地址可以去CDN平台找,也可以自己上传到云空间去访问.个人推荐这种方式.

'assetManager'=>[
    'bundles'=>[
        //jquery.js
        'yii\web\JqueryAsset' => [
            'sourcePath' => null,
            'baseUrl' => 'https://cdn.bootcss.com/jquery/2.2.4/',
        ],
        //Yii.js
        'yii\web\YiiAsset' => [
            'sourcePath' => null,
            'baseUrl' => 'http://p8mo8fh1z.bkt.clouddn.com/',
        ],
        //bootstrap.css
        'yii\bootstrap\BootstrapAsset' => [
            'sourcePath' => null,
            'baseUrl' => 'https://cdn.bootcss.com/bootstrap/3.3.7/',
        ],
        //bootstrap.js
        'yii\bootstrap\BootstrapPluginAsset' => [
            'sourcePath' => null,
            'baseUrl' => 'https://cdn.bootcss.com/bootstrap/3.3.7/',
        ],
    ]
],


    扫描二维码使用手机访问。

    版权声明:本文由爱与心(www.91phper.cn)发布,如需转载请注明出处。

    本文链接:https://www.91phper.cn/post/61.html

    分享给朋友:
    返回列表

    上一篇:centos7 同步时间

    没有最新的文章了...

    “Yii2 负载均衡找不到JS、CSS” 的相关文章

    Rocky Linux8+Nginx+Php+Mysql+Redis

    初始化系统查看Linux发行版本lsb_release -a确保所有内容都已更新yum update -y安装基本实用程序包,其中一些可能已经安装dnf install wget curl nano unzip ...

    Linux网络视频播放神器,畅享高清视界

    Linux网络视频播放神器,畅享高清视界

    在当今互联网时代,网络视频已经成为人们获取信息、娱乐消遣的主要方式之一。而对于Linux用户来说,想要享受高清流畅的网络视频,却往往会遇到各种问题。本文将为大家介绍一款功能强大的Linux网络视频播放器,让你轻松解决观影难题。一、什么是linux网络视频播放器?Linux网络视频播放器是一款基于Li...

    CentOS 7 迁移至 Rocky Linux 8.7

    前言CentOS 8已经在2021年12月31日结束支持,CentOS 7由于用户基数与用户贡献较多,因此会按照计划维护至生命周期结束即 2024 年 6 月 30 日,接下来一年会把重心放到CentOS Stream上。由于CentOS Stream相对不稳定,因此很多朋友会有从CentOS 7迁...

    UOS Server 20 1060a 安装Nginx1.24.0、php8.2.17、composer2.7.2、redis5.0.3

    UOS Server 20 1060a 安装Nginx1.24.0、php8.2.17、composer2.7.2、redis5.0.3

    一、登录服务器后,查看dns是否正常vi /etc/resolv.conf修改里面的nameserver的值为:114.114.114.114结果如下:二、添加使用到的源cd /etc/yum.repos.d vi epel-modular.repo 写入下面内容...

    Linux免密登录,专业配置教程来了!

    在Linux系统管理的日常工作中,我们经常需要在多台服务器之间进行切换操作。频繁地输入密码不仅繁琐,而且降低了工作效率。为了解决这个问题,我们可以配置Linux实现免密登录。本文将为您详细介绍如何配置Linux实现免密登录。我们需要了解SSH(SecureShell)协议。SSH是一种网络协议,用于...

    centos7 同步时间

    在 CentOS 7 中,你可以使用 chrony 作为时间同步服务。chrony 是一个开源的 NTP(Network Time Protocol)客户端和服务器,用于同步计算机的系统时钟到某个 NTP 服务器。以下是如何在 CentOS 7 中安装和配置 ...

    发表评论

    访客

    看不清,换一张

    ◎欢迎参与讨论,请在这里发表您的看法和观点。