我已经在Heroku上部署了一个Laravel 5.3应用程序。然而,当加载/登录时,我注意到页面加载时间非常慢。问题似乎是一个非常大的app.js
文件:/js/app.js
。下面是DevTools中网络资源面板的屏幕截图:screenshot- Network panel。从顶部数第3个资源是违规文件。
我不知道为什么这个文件变得这么大。这里是一个链接到存储库:https://github.com/AshMenhennett/Salon-Pricing .
我无法发布更多的链接,所以请让我知道,如果你想直接链接到特定的文件。
我应该做些什么来缓解这个问题?
4条答案
按热度按时间qkf9rpyu1#
你可以做的最明显的事情就是运行
npm run prod
。这将编译资源以供生产使用。但在大多数情况下,你必须考虑运行npm run prod
之外的其他解决方案。如果你的生产文件太大,你必须检查你的依赖项。删除不必要的依赖项并确保你没有使用很多外部库。例如,如果你使用的是bootstrap,你应该依靠Bootstrap的alerts来显示警报,而不是使用Vue包来显示警报。我承认有时你需要使用外部库来使你的网站具有交互性,但为了实现这一点,你将不得不牺牲性能。所以为了减少app.js文件,你最好的办法是在package.json中使用最小的外部依赖。你可以做的第二件事是在你的组件模板中使用最少的HTML。大量带有大量HTML/CSS的组件会导致一个更大的app.js文件。这是另一种导致更小的app.js文件的方法。
最后,你应该考虑使用Vue的component slots将HTML内容传递给你的组件。这将把HTML留在你的静态文件中,只有javascript数据(API调用,props等)将被编译在app.js文件中。这是构建一个较小的app.js文件的有效方法。
编辑:您可以从bootstrap.js文件中删除jQuery和Bootstrap脚本,并可以单独包含这些依赖项。拥有更多脚本而不是拥有非常大的脚本总是一个好主意。即浏览器进行并行下载,因此单独使用JQuery和Bootstrap依赖项是一个好主意。
h22fl7wq2#
从你的链接来看,你还没有创建你的资源的生产版本,目前所有的源Map都在你的
app.js
文件中,这将增加很多文件的大小,css和js输出也没有压缩/缩小。假设你正在使用laravel elixir,你只需要运行
gulp --production
,这将删除源代码Map,压缩js和css输出等。yrefmtwq3#
需要异步加载组件
Webpack有一个很棒的功能来创建代码块。关键是使用异步组件。只要组件出现在您刚刚加载的页面上,这些组件就会完全异步加载。
在
resources/js/app.js
中。我改了:
致:
并且在
webpack.mix.js
中:现在,通过运行
npm run watch or prod
,每个组件文件都被保存为public/js/vuejs_code_split/[name].js
,并且主app.js
在需要时自动调用这些组件。qzlgjiam4#
对于使用Laravel Mix的人,你只需要运行
npm run prod
来压缩和删除app.js
本身的源Map。