@@ -23,6 +23,9 @@ const pages = [
2323 '/search' ,
2424 '/settings' ,
2525]
26+
27+ const cacheControl = 's-maxage=3600, stale-while-revalidate=36000'
28+
2629export default defineEventHandler ( async event => {
2730 const routeRules = getRouteRules ( event )
2831 if ( Object . keys ( routeRules ) . length > 1 ) {
@@ -44,8 +47,8 @@ export default defineEventHandler(async event => {
4447 let pkgMatch = path . match ( / ^ \/ (?: (?< org > @ [ ^ / ] + ) \/ ) ? (?< name > [ ^ / @ ] + ) $ / )
4548 if ( pkgMatch ?. groups ) {
4649 const args = [ pkgMatch . groups . org , pkgMatch . groups . name ] . filter ( Boolean ) . join ( '/' )
47- setHeader ( event , 'cache-control' , 'stale-while-revalidate=31536000, public' )
48- return sendRedirect ( event , `/package/${ args } ` )
50+ setHeader ( event , 'cache-control' , cacheControl )
51+ return sendRedirect ( event , `/package/${ args } ` , 301 )
4952 }
5053
5154 // /@org /pkg/v/version or /@org /pkg@version → /package/org/pkg/v/version
@@ -56,14 +59,14 @@ export default defineEventHandler(async event => {
5659
5760 if ( pkgVersionMatch ?. groups ) {
5861 const args = [ pkgVersionMatch . groups . org , pkgVersionMatch . groups . name ] . filter ( Boolean ) . join ( '/' )
59- setHeader ( event , 'cache-control' , 'stale-while-revalidate=31536000, public' )
62+ setHeader ( event , 'cache-control' , cacheControl )
6063 return sendRedirect ( event , `/package/${ args } /v/${ pkgVersionMatch . groups . version } ` )
6164 }
6265
6366 // /@org → /org/org
6467 const orgMatch = path . match ( / ^ \/ @ (?< org > [ ^ / ] + ) $ / )
6568 if ( orgMatch ?. groups ) {
66- setHeader ( event , 'cache-control' , 'stale-while-revalidate=31536000, public' )
69+ setHeader ( event , 'cache-control' , cacheControl )
6770 return sendRedirect ( event , `/org/${ orgMatch . groups . org } ` )
6871 }
6972} )
0 commit comments