LoginSignup
8
3

More than 3 years have passed since last update.

Amplifyのbundleサイズを5MB減らした

Last updated at Posted at 2020-09-18

自分の運営しているサービス(VRCSnap!)のPageSpeed Insightsを久しぶりに測ったらモバイルのスコアが大変なことになってた

VRCSnapはこんな感じの、VRChat関連でアバターが写ってる画像ツイートを紹介するサービスです

Nuxt, Amplify(AppSync)環境で作ってます

image.png

それで肝心のスコアは・・・

PSI_2020_09_18_before.JPG

に、にじゅうなな・・・(PCは87でした)

で、twitterのwiget.jsの読み込みをbodyタグ内にしたり(body: tureを入れる)

nuxt.config.js
script: [
    { src: 'https://platform.twitter.com/widgets.js', body: true }
],

@nuxtjs/deviceを入れてモバイルの時だけツイートの読み込み数を減らしして48まで上げることができました

PSI_2020_09_18_after1.JPG

後はwebpackを小さくするくらいかなと思ってbundleサイズを見てみると

PSI_2020_09_18_webpack.JPG

aws-sdkと@aws-amplifyがめっちゃでかい

なんとかならんもんかと思って調べてみると、Amplify公式に丁度いい記事

これまでamplify.jsは以下のようにしていたのですが、これだと上の画像のようにaws-sdkを全部インポートするのでかなり重い

amplify.js
import Amplify from 'aws-amplify';
import aws_exports from './aws-exports';

Amplify.configure(aws_exports);

そこで、使用するカテゴリだけインポートするようにする(今回の場合は@amplify/coreの他は@amplify/apiのみ)

amplify.js
import Amplify from '@aws-amplify/core';
import API from '@aws-amplify/api';
import aws_exports from './aws-exports';

Amplify.configure(aws_exports);

個別のコンポーネントでも、aws-amplifyからではなく@aws-amplify/apiからインポートする

import API, { graphqlOperation } from '@aws-amplify/api'

そうするとbundleサイズが5MBほど削減できました

PSI_2020_09_18_webpack_after.JPG

PSIのスコアも63に

image.png

な、なんとか50を超えた・・・!

後はvue-awesome-swiper(カルーセル)が結構重かったりするので、色々整理します

こんな感じで、Amplifyが重い!って言う人の参考になれば幸いです

8
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3