Я работаю на довольно большом сайте электронной коммерции, который был создан с использованием gatsby. До сих пор мы динамически загружали все данные о наших продуктах во время выполнения, поэтому у нас была только 1 страница продукта для всего сайта и всего около 3 тыс. Страниц.
Однако по причине SEO мы пытаемся построить статически все наши страницы продукта, и это добавляет около 60 тыс. страниц на веб-сайт.
После того, как мы сделали это, файл нашего приложения. [hash]. js увеличился до 10 МБ, а общая производительность страницы по мере загрузки. Перемещение по ссылкам приводит к зависанию страницы на полсекунды.
Мы создаем страницы продукта, передавая данные продукта в виде контекста страницы при вызове create pages:
const productsRaw = await fetch(productsUrl)
const products = await productsRaw.json()
/* Build a page for each product */
if (products) {
products.forEach(product => {
const productPage = {
path: `/product${product.route}`,
component: path.resolve(`./src/templates/product.jsx`),
context: product,
}
createPage(productPage)
})
}
Мы считаем, что плохо производительность страницы связана с приложением. js файл прыгает примерно до 10 МБ. Есть ли какая-либо оптимизация, которую мы можем сделать, чтобы уменьшить размер этого файла, или это просто неизбежно при увеличении количества страниц?
Обновление
После анализа веб-пакета я нашел проблема в том, что каждая страница продукта добавляется в файл match-path. json. Это привело к тому, что файл превысил 10 МБ. Нужно ли, чтобы все эти пути были добавлены в файл, и если нет, то есть ли способ исправить это при создании страницы?
Обновление 2
В итоге я написал скрипт для удаления всех путей, не являющихся регулярными выражениями, из пути поиска. json до запуска веб-пакета, и сайт, кажется, работает отлично и работает очень хорошо. Как я могу предотвратить их добавление?