mirror of
https://github.com/hpware/news-analyze.git
synced 2025-06-23 15:51:01 +08:00
Add caching into the tabs system & change routes
This commit is contained in:
parent
5e676ad80f
commit
58de2c670d
@ -1,7 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import CheckKidUnfriendlyContent from "~/components/checks/checkKidUnfriendlyContent";
|
import CheckKidUnfriendlyContent from "~/components/checks/checkKidUnfriendlyContent";
|
||||||
const pullTabsData = async () => {
|
const pullTabsData = async () => {
|
||||||
const req = await fetch("/api/cached/tabs");
|
const req = await fetch("/api/tabs");
|
||||||
const data = await req.json();
|
const data = await req.json();
|
||||||
return data.data;
|
return data.data;
|
||||||
};
|
};
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
export default defineEventHandler(async (event) => {
|
|
||||||
try {
|
|
||||||
const buildUrl = `https://today.line.me/_next/data/v1/tw/v3/tab/${type}.json?tabs=${type}`;
|
|
||||||
const req = await fetch(buildUrl, {
|
|
||||||
headers: {
|
|
||||||
"Accept-Encoding": "gzip, deflate, br",
|
|
||||||
Accept: "application/json",
|
|
||||||
"User-Agent":
|
|
||||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const res = await req.json();
|
|
||||||
const req2 = res.pageProps.fallback.getTabsData.modules;
|
|
||||||
return req2;
|
|
||||||
} catch (e) {
|
|
||||||
return {
|
|
||||||
error: e,
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
text: "國內",
|
|
||||||
url: "domestic",
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: "國外",
|
|
||||||
url: "global",
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
34
server/api/tabs.ts
Normal file
34
server/api/tabs.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
let cachedData: { data: string[]; timestamp: number } | null = null;
|
||||||
|
const CACHE_DURATION = 1000 * 60 * 60; // 1 Hour
|
||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
if (cachedData && Date.now() - cachedData.timestamp < CACHE_DURATION) {
|
||||||
|
return {
|
||||||
|
data: cachedData.data,
|
||||||
|
cached: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const req = await fetch("https://today.line.me/_next/data/v1/tw/v3/tab/domestic.json?tabs=domestic", {
|
||||||
|
headers: {
|
||||||
|
"Accept-Encoding": "gzip, deflate, br",
|
||||||
|
Accept: "application/json",
|
||||||
|
"User-Agent":
|
||||||
|
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const res = await req.json();
|
||||||
|
const req2 = res.pageProps.fallback.getTabsData.modules;
|
||||||
|
cachedData = {
|
||||||
|
data: req2,
|
||||||
|
timestamp: Date.now(),
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
data: req2,
|
||||||
|
cached: false
|
||||||
|
};
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
"error": "INTERNAL_SERVER_ERROR"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user