express stati c маршруты, реакции и кеширование путаницы - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь понять маршруты и поведение кэша express.

Я управляю SPA SPA, который создаю, а затем обслуживаю за express.
React имеет собственную внутреннюю маршрутизацию, и это прекрасно работает. Но кроме того, я мог бы сначала захотеть поймать некоторые маршруты в express и делать с ними другие вещи.

Однако есть некоторые особенности кэширования, которые я не могу контролировать.

В основном, когда я go на URL-адрес «/ ping» в браузере, при первой загрузке я вижу «pong», вторая загрузка показывает «вы сделали это, чтобы реагировать на приложение», жесткий refre sh возвращается к pong, мягкая ссылка sh снова реагирует на приложение. Даже когда приложение реагирует, console.log('everything else') никогда не вызывается. (т.е. express не обрабатывает запрос динамически)

Я попытался использовать пакет nocache, а также другие примеры здесь:
Как отключить кэширование веб-страниц в ExpressJS + NodeJS?

app.set('etag', false)
app.disable('view cache');

et c

  1. Поведение не меняется.
  2. На самом деле я не хочу полностью калечить кеш браузера, просто сначала соблюдаем правила маршрута stati c, а все, что не совпадает, отправляется для реакции SPA.
    Ясно У меня есть фундаментальное недопонимание маршрутизации express, но я не уверен, куда отсюда go. Любые отзывы приветствуются.

Ниже моя express конфигурация.

#!/usr/bin/env node
// @requires
const dotenv = require('dotenv')
const express = require('express')
const path = require('path')
const nocache = require('nocache');


// @config
dotenv.config()
const app = express()
const env = process.env.ENV

app.use(nocache());
app.use(express.static(path.join(__dirname, '../build'), {
  etag: false
}))

// @configure express static routes
app.get('/ping', function (req, res) {
  console.log('ping')
  return res.send('pong v1')
})


// @condigure main app handler
app.get('*', function (req, res) {
  console.log('everything else')
  res.sendFile(path.join(__dirname, '../build', 'index.html'))
})

// @create listening port
app.listen(process.env.PORT || 8080)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...