伪静态&刷新缓存时间

This commit is contained in:
tangly1024
2022-12-07 12:52:58 +08:00
parent ac65dbc95c
commit 928585cbf2
14 changed files with 52 additions and 39 deletions

View File

@@ -59,7 +59,6 @@ const BLOG = {
CONTACT_TELEGRAM: 'https://t.me/tangly_1024', // 你的telegram 地址 例如 https://t.me/tangly_1024
CONTACT_LINKEDIN: '', // 你的linkedIn 首页
// 鼠标点击烟花特效
FIREWORKS: process.env.NEXT_PUBLIC_FIREWORKS || false, // 鼠标点击烟花特效
@@ -161,6 +160,9 @@ const BLOG = {
DESCRIPTION:
process.env.NEXT_PUBLIC_DESCRIPTION || '这是一个由NotionNext生成的站点', // 站点描述被notion中的页面描述覆盖
PSEUDO_STATIC: true, // 伪静态路径开启后所有文章URL都以 .html 结尾。
NEXT_REVALIDATE_SECOND: 5, // 刷新页面的时间间隔 单位 秒
isProd: process.env.VERCEL_ENV === 'production', // distinguish between development and production environment (ref: https://vercel.com/docs/environment-variables#system-environment-variables) isProd: process.env.VERCEL_ENV === 'production' // distinguish between development and production environment (ref: https://vercel.com/docs/environment-variables#system-environment-variables)
VERSION: process.env.NEXT_PUBLIC_VERSION // 版本号
}

View File

@@ -224,8 +224,7 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) {
post.type &&
(post.type === 'Post' || post.type === 'Page') &&
(post.status === 'Published' || post.status === 'Invisible')
}
)
})
// Sort by date
if (BLOG.POSTS_SORT_BY === 'date') {

View File

@@ -76,6 +76,13 @@ export default async function getPageProperties(id, block, schema, authToken, ta
properties.slug = (properties.slug ?? properties.id)
}
// 开启伪静态路径
if (BLOG.PSEUDO_STATIC) {
if (!properties.slug.endsWith('.html')) {
properties.slug += '.html'
}
}
properties.createdTime = formatDate(new Date(value.created_time).toString(), BLOG.LANG)
properties.lastEditedTime = formatDate(new Date(value?.last_edited_time).toString(), BLOG.LANG)
properties.fullWidth = value.format?.page_full_width ?? false
@@ -87,25 +94,25 @@ export default async function getPageProperties(id, block, schema, authToken, ta
}) || []
delete properties.content
return properties
// 从Block获取封面图;优先取PageCover否则取内容图片
function getImageUrl(imgObj, blockVal) {
if (!imgObj) {
return null
}
if (imgObj.startsWith('/')) {
return 'https://www.notion.so' + imgObj // notion内部图片转相对路径为绝对路径
}
if (imgObj.startsWith('http')) {
// 判断如果是notion上传的图片要拼接访问token
const u = new URL(imgObj)
if (u.pathname.startsWith('/secure.notion-static.com') && u.hostname.endsWith('.amazonaws.com')) {
return defaultMapImageUrl(imgObj, blockVal) // notion上传的图片需要转换请求地址
}
}
// 其他图片链接 或 emoji
return imgObj
}
}
// 从Block获取封面图;优先取PageCover否则取内容图片
function getImageUrl(imgObj, blockVal) {
if (!imgObj) {
return null
}
if (imgObj.startsWith('/')) {
return 'https://www.notion.so' + imgObj // notion内部图片转相对路径为绝对路径
}
if (imgObj.startsWith('http')) {
// 判断如果是notion上传的图片要拼接访问token
const u = new URL(imgObj)
if (u.pathname.startsWith('/secure.notion-static.com') && u.hostname.endsWith('.amazonaws.com')) {
return defaultMapImageUrl(imgObj, blockVal) // notion上传的图片需要转换请求地址
}
}
// 其他图片链接 或 emoji
return imgObj
}

View File

@@ -95,8 +95,10 @@ export async function getStaticPaths() {
}
export async function getStaticProps({ params: { slug } }) {
// slug 是个数组
const fullSlug = slug.join('/')
let fullSlug = slug.join('/')
if (BLOG.PSEUDO_STATIC) {
fullSlug += '.html'
}
const from = `slug-props-${fullSlug}`
const props = await getGlobalNotionData({ from })
props.post = props.allPages.find((p) => {
@@ -106,13 +108,13 @@ export async function getStaticProps({ params: { slug } }) {
if (!props.post) {
const pageId = slug.slice(-1)[0]
if (pageId.length < 32) {
return { props, revalidate: 1 }
return { props, revalidate: BLOG.NEXT_REVALIDATE_SECOND }
}
const post = await getNotion(pageId)
if (post) {
props.post = post
} else {
return { props, revalidate: 1 }
return { props, revalidate: BLOG.NEXT_REVALIDATE_SECOND }
}
} else {
props.post.blockMap = await getPostBlocks(props.post.id, 'slug')
@@ -130,7 +132,7 @@ export async function getStaticProps({ params: { slug } }) {
delete props.allPages
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -2,6 +2,7 @@ import { getGlobalNotionData } from '@/lib/notion/getNotionData'
import React from 'react'
import { useGlobal } from '@/lib/global'
import * as ThemeMap from '@/themes'
import BLOG from '@/blog.config'
const ArchiveIndex = props => {
const { theme, locale } = useGlobal()
@@ -26,7 +27,7 @@ export async function getStaticProps() {
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -52,7 +52,7 @@ export async function getStaticProps({ params: { category } }) {
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -47,7 +47,7 @@ export async function getStaticProps({ params: { category, page } }) {
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -3,6 +3,7 @@ import React from 'react'
import { useGlobal } from '@/lib/global'
import * as ThemeMap from '@/themes'
import { getAllCategories } from '@/lib/notion/getAllCategories'
import BLOG from '@/blog.config'
/**
* 分类首页
@@ -30,6 +31,6 @@ export async function getStaticProps() {
delete props.categoryOptions
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -44,7 +44,7 @@ export async function getStaticProps() {
meta,
...props
},
revalidate: 5
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -56,7 +56,7 @@ export async function getStaticProps({ params: { page } }) {
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -48,7 +48,7 @@ export async function getStaticProps({ params: { keyword } }) {
props.keyword = keyword
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -45,7 +45,7 @@ export async function getStaticProps({ params: { keyword, page } }) {
props.page = page
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -2,6 +2,7 @@ import { getGlobalNotionData } from '@/lib/notion/getNotionData'
import { useGlobal } from '@/lib/global'
import { useRouter } from 'next/router'
import * as ThemeMap from '@/themes'
import BLOG from '@/blog.config'
const Search = props => {
const { posts, siteInfo } = props
@@ -58,7 +59,7 @@ export async function getStaticProps() {
props.posts = allPosts
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}

View File

@@ -38,7 +38,7 @@ export async function getStaticProps({ params: { tag, page } }) {
delete props.allPages
return {
props,
revalidate: 1
revalidate: BLOG.NEXT_REVALIDATE_SECOND
}
}