Squeak.ru - шаблоны программирования

Apollo GraphQl renderToStringWithData всегда одни и те же данные после запуска сервера

Я только что создал сервер expressJs для SSR с apollo Graphql. У меня есть эта проблема: после запуска страницы источник страницы - это то, что ожидалось, но до тех пор, пока сервер не запущен, эти данные, полученные Graphql, никогда не меняются.

это то, что у меня есть в источнике страницы:  исходный код html

В настоящее время я использую http://fake.graphql.guru/graphql, чтобы получить фиктивные данные, и там данные меняются при каждом запросе случайным образом.

Следуя коду expressjs и конфигурации apolloClient

// express js
app.get('*', (req, res, next) => {
  renderToStringWithData(<StaticRouter location={req.url} context={{}}><App /></StaticRouter>).then((content) => {
  const initialState = client.extract();
  res.status(200);
  res.setHeader('Cache-Control', 'no-cache');
  res.send(Template({
    content,
    state: initialState,
  }));
  next();
  });
});

// apollo client
const client = new ApolloClient({
  ssrMode: true,
  link: new HttpLink({
    fetch,
    uri: 'http://fake.graphql.guru/graphql',
  }),
  cache: new InMemoryCache().restore(process.env.NODE_ENV !== 'PROD' ? 
    window.__APOLLO_STATE__ : null),
  defaultFetchPolicy: 'network-only',
  ssrForceFetchDelay: 100,
});

Итак, что я ожидаю при каждом запросе, так это сервер, возвращающий новую страницу html с новыми данными. Что случилось?



Ответы:


1

Я нашел решение для этого: для сброса кеша клиента для каждого запроса достаточно вызвать client.resetStore ()

app.get('*', (req, res, next) => {
// reset the client cache
client.resetStore();
renderToStringWithData(<StaticRouter location={req.url} context={{}}>
<ReactApp /></StaticRouter>).then((content) => { // eslint-disable-line
  const initialState = client.extract();
  res.status(200);
  res.setHeader('Cache-Control', 'no-cache');
  res.send(Template({
    content,
    state: initialState,
  }));
  next();
  });
});
20.12.2017
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...