如何使用 vuejs 强制刷新我的 spa 网站 - laravel

How can I force a refresh in my spa website with vuejs - laravel

嗨,我知道有人说过,但我已经尝试了一切,但没有任何效果..所以我又来这里一次,问一个最终的或解决当我做一些改变时存在的大问题的方法,用户看不到这些更改我将向您展示我的尝试。

  1. 我在 webpack.mix 中添加了 version() ,如下所示:

    const mix = require('laravel-mix');
    const tailwindcss = require('tailwindcss');
    require('laravel-mix-purgecss');
    
    mix.js('resources/js/app.js', 'public/js')
    .version()
    .sass('resources/sass/app.scss', 'public/css')
    .options({
       processCssUrls: false,
       postCss: [ tailwindcss('./tailwind.config.js') ],
    }) .purgeCss();
    

我在布局中添加了这个:

我有两个布局,一个在前端,另一个在后端,所以它们是这样组织的:

 views>backend>layouts   to the backend

 views>layouts    to the frontend

这两个我都有:

<link href="{{ mix('css/app.css') }}" rel="stylesheet">
<script src="{{ mix('js/app.js') }}" defer></script>

你怎么看我通过混合改变资产

  1. 每次我进行更改时,我都会更新 package.json

    中的版本
     {
       "version": "0.1.2",
       "private": true,
    
  2. 我在两种布局中都添加了这个:

    <meta http-equiv="Cache-Control" content="no-cache" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="expires" content="Fri, 18 Jul 2014 1:00:00 GMT" />
    

而且我不知道为什么我上传了一个更改和用户,他们看起来是旧版本的页面,即使他们从浏览器中退出并再次进入他们看到的是旧版本,或者他们看起来网站的某些部分是空白的,但如果它们在浏览器中显示为未知,则可以看到该网站正在运行。我必须按 CTRL+SHIFT+R 进行硬刷新,它有时会起作用,F5 根本不起作用他们看起来仍然是旧网站...如果问题出在 phone 他们必须删除缓存查看新版本的网站...

所以我想知道,我真的很绝望,因为我读了又读,我已经尝试了所有方法,但没有任何效果..我该如何解决我遇到的这个大问题...用户如何看到新网站自动运行时我上传改了吗?谢谢

首先,如果您可以分享您的 HTML 输出,它会很有用。

Laravel mix 已生成如下链接。检查您的 html 输出是否正确生成了这样的链接。

<script src="/js/app.js?id=0441ad4f65d54589aea5"></script>

您的 /public/mix-manifest.json 文件必须如下所示;

{
    "/js/app.js": "/js/app.js?id=7399f803fb3a155486e9",
    "/css/app.css": "/css/app.css?id=6bea0cea688d689be1b1"
}

如果不是这样一个好像是这样;

{
    "/js/app.js": "/js/app.js",
    "/css/app.css": "/css/app.css"
}

您的 webpack.mix 文件有误。

尝试仅在生产环境中对资产进行版本控制;

if (mix.inProduction()) {
    mix.version();
}

和 运行 npm run prod 部署前。