这是indexloc提供的服务,不要输入任何密码
Skip to content

Optimize blog post loading with asynchronous file I/O in getStaticProps. #1907

@SHASHI9705

Description

@SHASHI9705

Currently, the blog post data is being read synchronously inside getStaticProps like this:
In Community index.page.tsx file:

Image

This synchronous file reading blocks the event loop and slows down the static generation process, especially when there are multiple markdown files.

Proposed Solution:
Use asynchronous file operations and parallelize them with Promise.all to improve performance and scalability.

const files = await fs.promises.readdir(PATH);
const markdownFiles = files.filter((f) => f.endsWith('.md'));
const blogPosts = await Promise.all(
markdownFiles.map(async (fileName) => {
const slug = fileName.replace('.md', '');
const fullFileName = await fs.promises.readFile(${PATH}/${slug}.md, 'utf-8');
const { data: frontmatter, content } = matter(fullFileName);
return { slug, frontmatter, content };
})
);

This approach ensures faster build times and non-blocking I/O operations.

Please assign this issue to me, I’d like to refactor this logic to use asynchronous file reading for better performance and maintainability. @Utkarsh-123github @vtushar06

Metadata

Metadata

Assignees

No one assigned

    Labels

    Status: TriageThis is the initial status for an issue that requires triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions