如何在Gatsby的构建期间获取远程文件?

时间:2020-01-17 04:48:42

标签: gatsby netlify

我正在使用盖茨比建立一个由Netlify托管的网站。该网站显示了YouTube上的视频播放列表。为了使网站速度更快,我想将视频本地缓存在youtube播放列表中。

那么Netlify(或Gatsby)上是否有任何类似于memcache的项目?还是应该使用其他替代方法?

预先感谢

1 个答案:

答案 0 :(得分:0)

有两个步骤:

  1. 将内容存储在CMS中,而不是将其存储在项目中。 Here是使用DatoCMS来管理内容并使用Gatsby构建静态网页的示例。
  2. createRemoteFileNode会将YouTube缩略图提取到本地缓存中。我需要做的就是找到Youtube缩略图URL,然后调用createRemoteFileNode函数。所有操作都在exports.createResolvers中的gatsby-node.js中完成。这是代码段:
exports.createResolvers = ({
  actions,
  cache,
  createNodeId,
  createResolvers,
  store,
  reporter,
}) => {
  const { createNode } = actions;
  const resolvers = {
    DatoCmsVideoItem: {
      featuredImg: {
        type: `File`,
        resolve: async (source, args, context, info) => {
          return createRemoteFileNode({
            url: source.videoId,
            createNode,
            createNodeId,
            reporter,
            cache,
            store,
          });
        },
      },
    },
  };
  createResolvers(resolvers);
};

这将获取节点source.videoId中的文件,然后将文件存储在节点source.featuredImg中以备将来使用。