index.js
2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"use client";
import Head from "next/head";
import HomeBanner from "@/container/Home/HomeBanner";
import CollectionSlider from "@/container/Home/Collection";
import Video from "@/container/Home/Video";
import Overview from "@/container/Home/Overview";
import ProjectSlider from "@/container/Home/ProjectSlider";
import { Contact } from "@/container/Home/Contact";
import BlogHome from "@/container/Home/BlogHome";
import Catalogues from "@/container/Home/Catalogues";
import { getCataloguesBySlug } from "@/services/cataloguesApi";
import { getHomeSlug } from "@/services/homeApi";
import { getRedisClient } from "@/redis-client";
const Home = ({ homepage, cataloguesData={cataloguesData}, homeData }) => {
return (
<>
<Head>
<title>Akruti </title>
<meta name="description" content="Akruti" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
</Head>
<HomeBanner banner={homeData?.banner} />
<CollectionSlider CollectionData={homeData?.collection} />
<Video video={homeData?.video} />
<Overview aboutData={homeData?.about} />
<ProjectSlider projectData={homeData?.project} />
<BlogHome />
<Catalogues cataloguesData={cataloguesData} />
<Contact />
</>
);
};
export default Home;
/* ---------- SSR ---------- */
export async function getServerSideProps({ params }) {
const redis = getRedisClient();
// Redis key and expiry
const REDIS_KEY = `${process.env.REDIS_KEY_PREFIX}_homepage`;
const REDIS_KEY_CATALOGUES = `${process.env.REDIS_KEY_PREFIX}_catalogues`;
const REDIS_EXPIRE = parseInt(process.env.REDIS_KEY_EXPIRE) || 86400; // default: 24 hrs
try {
const cachedData = await redis.get(REDIS_KEY);
const cachedCataloguesData = await redis.get(REDIS_KEY_CATALOGUES);
if (cachedData && cachedCataloguesData) {
console.log('redis data fetched');
return {
props: {
cataloguesData: JSON.parse(cachedCataloguesData),
homeData: JSON.parse(cachedData),
},
}};
const cataloguesData = await getCataloguesBySlug();
const homeData = await getHomeSlug();
await redis.set(REDIS_KEY, JSON.stringify(homeData), "EX", REDIS_EXPIRE);
await redis.set(REDIS_KEY_CATALOGUES, JSON.stringify(cataloguesData), "EX", REDIS_EXPIRE);
console.log('normal data fetched');
return {
props: {
cataloguesData,
homeData
},
};
} catch (error) {
console.error("Product page SSR error:", error);
return { notFound: true };
}
}