Browser cache problems with webpack chunks and vue.js components





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















The Problem



I have a problem with cached Vue.js components and I can't reproduce this problem on my devices but every client-side update we get users complains about broken interfaces and only clearing browser cache helps.



I use Laravel + Vue.js and it's multipage app.



Strategy



All components described in one file which included in app.js and it looks like this:



Vue.component('task-feed', () => import('./components/task/task-feed'/* webpackChunkName: "/js/components/task-feed" */));
Vue.component('task-item', () => import('./components/task/task-item'/* webpackChunkName: "/js/components/task-item" */));


There are vue.js async components.



And then i have configured webpack.mix like this:



let mix = require('laravel-mix');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
const WebpackChunkHash = require('webpack-chunk-hash');
mix.disableNotifications();
let config = {
watchOptions: {
ignored: /node_modules/
},
resolve: {
alias: {
'vue$': mix.inProduction() ? 'vue/dist/vue.runtime.min.js' : 'vue/dist/vue.runtime.js',
}
},
output: {
chunkFilename: mix.inProduction() ? '[name].[chunkhash].js' : '[name].js',
},
plugins: [
new webpack.HashedModuleIdsPlugin(),
new WebpackChunkHash(),
new ChunkManifestPlugin({
filename: '/js/chunk-manifest.json',
manifestVariable: 'webpackManifest',
inlineManifest: true,
}),
],
};

mix.webpackConfig(config);


I'm using ChunkManifestPlugin here, that plugin creates chunk-manifest.json and i load it in the main layout like this:



window.webpackManifest = JSON.parse(@json(file_get_contents(public_path('/js/chunk-manifest.json'))));


Questions



What could be wrong here? Can anyone suggest the way to solve this?










share|improve this question

























  • Pls describe the complaints ;) What goes wrong?

    – Thomas Kleßen
    Nov 16 '18 at 13:46











  • We get users complains about broken interfaces and only clearing browser cache helps.

    – Vaulverin
    Nov 16 '18 at 13:56











  • Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

    – Noogen
    Nov 16 '18 at 14:17











  • Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

    – Noogen
    Nov 16 '18 at 15:48











  • Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

    – Vaulverin
    Nov 17 '18 at 9:11


















0















The Problem



I have a problem with cached Vue.js components and I can't reproduce this problem on my devices but every client-side update we get users complains about broken interfaces and only clearing browser cache helps.



I use Laravel + Vue.js and it's multipage app.



Strategy



All components described in one file which included in app.js and it looks like this:



Vue.component('task-feed', () => import('./components/task/task-feed'/* webpackChunkName: "/js/components/task-feed" */));
Vue.component('task-item', () => import('./components/task/task-item'/* webpackChunkName: "/js/components/task-item" */));


There are vue.js async components.



And then i have configured webpack.mix like this:



let mix = require('laravel-mix');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
const WebpackChunkHash = require('webpack-chunk-hash');
mix.disableNotifications();
let config = {
watchOptions: {
ignored: /node_modules/
},
resolve: {
alias: {
'vue$': mix.inProduction() ? 'vue/dist/vue.runtime.min.js' : 'vue/dist/vue.runtime.js',
}
},
output: {
chunkFilename: mix.inProduction() ? '[name].[chunkhash].js' : '[name].js',
},
plugins: [
new webpack.HashedModuleIdsPlugin(),
new WebpackChunkHash(),
new ChunkManifestPlugin({
filename: '/js/chunk-manifest.json',
manifestVariable: 'webpackManifest',
inlineManifest: true,
}),
],
};

mix.webpackConfig(config);


I'm using ChunkManifestPlugin here, that plugin creates chunk-manifest.json and i load it in the main layout like this:



window.webpackManifest = JSON.parse(@json(file_get_contents(public_path('/js/chunk-manifest.json'))));


Questions



What could be wrong here? Can anyone suggest the way to solve this?










share|improve this question

























  • Pls describe the complaints ;) What goes wrong?

    – Thomas Kleßen
    Nov 16 '18 at 13:46











  • We get users complains about broken interfaces and only clearing browser cache helps.

    – Vaulverin
    Nov 16 '18 at 13:56











  • Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

    – Noogen
    Nov 16 '18 at 14:17











  • Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

    – Noogen
    Nov 16 '18 at 15:48











  • Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

    – Vaulverin
    Nov 17 '18 at 9:11














0












0








0








The Problem



I have a problem with cached Vue.js components and I can't reproduce this problem on my devices but every client-side update we get users complains about broken interfaces and only clearing browser cache helps.



I use Laravel + Vue.js and it's multipage app.



Strategy



All components described in one file which included in app.js and it looks like this:



Vue.component('task-feed', () => import('./components/task/task-feed'/* webpackChunkName: "/js/components/task-feed" */));
Vue.component('task-item', () => import('./components/task/task-item'/* webpackChunkName: "/js/components/task-item" */));


There are vue.js async components.



And then i have configured webpack.mix like this:



let mix = require('laravel-mix');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
const WebpackChunkHash = require('webpack-chunk-hash');
mix.disableNotifications();
let config = {
watchOptions: {
ignored: /node_modules/
},
resolve: {
alias: {
'vue$': mix.inProduction() ? 'vue/dist/vue.runtime.min.js' : 'vue/dist/vue.runtime.js',
}
},
output: {
chunkFilename: mix.inProduction() ? '[name].[chunkhash].js' : '[name].js',
},
plugins: [
new webpack.HashedModuleIdsPlugin(),
new WebpackChunkHash(),
new ChunkManifestPlugin({
filename: '/js/chunk-manifest.json',
manifestVariable: 'webpackManifest',
inlineManifest: true,
}),
],
};

mix.webpackConfig(config);


I'm using ChunkManifestPlugin here, that plugin creates chunk-manifest.json and i load it in the main layout like this:



window.webpackManifest = JSON.parse(@json(file_get_contents(public_path('/js/chunk-manifest.json'))));


Questions



What could be wrong here? Can anyone suggest the way to solve this?










share|improve this question
















The Problem



I have a problem with cached Vue.js components and I can't reproduce this problem on my devices but every client-side update we get users complains about broken interfaces and only clearing browser cache helps.



I use Laravel + Vue.js and it's multipage app.



Strategy



All components described in one file which included in app.js and it looks like this:



Vue.component('task-feed', () => import('./components/task/task-feed'/* webpackChunkName: "/js/components/task-feed" */));
Vue.component('task-item', () => import('./components/task/task-item'/* webpackChunkName: "/js/components/task-item" */));


There are vue.js async components.



And then i have configured webpack.mix like this:



let mix = require('laravel-mix');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
const WebpackChunkHash = require('webpack-chunk-hash');
mix.disableNotifications();
let config = {
watchOptions: {
ignored: /node_modules/
},
resolve: {
alias: {
'vue$': mix.inProduction() ? 'vue/dist/vue.runtime.min.js' : 'vue/dist/vue.runtime.js',
}
},
output: {
chunkFilename: mix.inProduction() ? '[name].[chunkhash].js' : '[name].js',
},
plugins: [
new webpack.HashedModuleIdsPlugin(),
new WebpackChunkHash(),
new ChunkManifestPlugin({
filename: '/js/chunk-manifest.json',
manifestVariable: 'webpackManifest',
inlineManifest: true,
}),
],
};

mix.webpackConfig(config);


I'm using ChunkManifestPlugin here, that plugin creates chunk-manifest.json and i load it in the main layout like this:



window.webpackManifest = JSON.parse(@json(file_get_contents(public_path('/js/chunk-manifest.json'))));


Questions



What could be wrong here? Can anyone suggest the way to solve this?







javascript vue.js webpack browser-cache mix






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 13:55







Vaulverin

















asked Nov 16 '18 at 13:42









VaulverinVaulverin

32




32













  • Pls describe the complaints ;) What goes wrong?

    – Thomas Kleßen
    Nov 16 '18 at 13:46











  • We get users complains about broken interfaces and only clearing browser cache helps.

    – Vaulverin
    Nov 16 '18 at 13:56











  • Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

    – Noogen
    Nov 16 '18 at 14:17











  • Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

    – Noogen
    Nov 16 '18 at 15:48











  • Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

    – Vaulverin
    Nov 17 '18 at 9:11



















  • Pls describe the complaints ;) What goes wrong?

    – Thomas Kleßen
    Nov 16 '18 at 13:46











  • We get users complains about broken interfaces and only clearing browser cache helps.

    – Vaulverin
    Nov 16 '18 at 13:56











  • Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

    – Noogen
    Nov 16 '18 at 14:17











  • Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

    – Noogen
    Nov 16 '18 at 15:48











  • Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

    – Vaulverin
    Nov 17 '18 at 9:11

















Pls describe the complaints ;) What goes wrong?

– Thomas Kleßen
Nov 16 '18 at 13:46





Pls describe the complaints ;) What goes wrong?

– Thomas Kleßen
Nov 16 '18 at 13:46













We get users complains about broken interfaces and only clearing browser cache helps.

– Vaulverin
Nov 16 '18 at 13:56





We get users complains about broken interfaces and only clearing browser cache helps.

– Vaulverin
Nov 16 '18 at 13:56













Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

– Noogen
Nov 16 '18 at 14:17





Assuming you did use mix in your blade file? i.e. {{ mix('js/manifest.js') }} {{ mix('js/vendor.js') }} {{ mix('js/app.js') }} to prevent cache of main files.

– Noogen
Nov 16 '18 at 14:17













Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

– Noogen
Nov 16 '18 at 15:48





Since you're using laravel and mix, if you haven't, I would suggest doing mix.extract and use mix helper in blade to version cache main files (manifest,vendor,app) for browser. Then just use WebpackChunkHash to handle chunk file version and caching for browser.

– Noogen
Nov 16 '18 at 15:48













Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

– Vaulverin
Nov 17 '18 at 9:11





Yes we use mix function for any resource file and extraction vendor file too. The problem not in main files but in chunk files.

– Vaulverin
Nov 17 '18 at 9:11












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53339039%2fbrowser-cache-problems-with-webpack-chunks-and-vue-js-components%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53339039%2fbrowser-cache-problems-with-webpack-chunks-and-vue-js-components%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python