Browse Source

Merge pull request #113 from vernu/improve-session-caching

add session caching to improve performance
pull/117/head
Israel Abebe 7 months ago
committed by GitHub
parent
commit
7fc521023f
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 23
      web/lib/httpBrowserClient.ts

23
web/lib/httpBrowserClient.ts

@ -5,8 +5,29 @@ const httpBrowserClient = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_BASE_URL || '', baseURL: process.env.NEXT_PUBLIC_API_BASE_URL || '',
}) })
// Cache for session data to reduce API calls
let sessionCache: any = null
let cacheTimestamp = 0
const CACHE_DURATION = 2 * 60 * 1000 // 2 minutes
const getCachedSession = async () => {
const now = Date.now()
// Return cached session if it's still valid
if (sessionCache && (now - cacheTimestamp) < CACHE_DURATION) {
return sessionCache
}
// Fetch fresh session and update cache
const session = await getSession()
sessionCache = session
cacheTimestamp = now
return session
}
httpBrowserClient.interceptors.request.use(async (config) => { httpBrowserClient.interceptors.request.use(async (config) => {
const session: any = await getSession()
const session = await getCachedSession()
if (session?.user?.accessToken) { if (session?.user?.accessToken) {
config.headers.Authorization = `Bearer ${session.user.accessToken}` config.headers.Authorization = `Bearer ${session.user.accessToken}`

Loading…
Cancel
Save