fix brotli cached
This commit is contained in:
parent
e72f491193
commit
4367723a46
|
|
@ -12,15 +12,6 @@ import { prodIndex } from "utils/prod-index";
|
||||||
export const createServer = async () => {
|
export const createServer = async () => {
|
||||||
g.router = createRouter({ strictTrailingSlash: true });
|
g.router = createRouter({ strictTrailingSlash: true });
|
||||||
g.api = {};
|
g.api = {};
|
||||||
g.cache = {
|
|
||||||
br: {},
|
|
||||||
gz: {},
|
|
||||||
br_progress: {
|
|
||||||
pending: {},
|
|
||||||
running: false,
|
|
||||||
timeout: null,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const scan = async (path: string, root?: string) => {
|
const scan = async (path: string, root?: string) => {
|
||||||
const apis = await listAsync(path);
|
const apis = await listAsync(path);
|
||||||
if (apis) {
|
if (apis) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import brotliPromise from "brotli-wasm"; // Import the default export
|
import brotliPromise from "brotli-wasm"; // Import the default export
|
||||||
import { g } from "./global";
|
import { g } from "./global";
|
||||||
import { dir } from "./dir";
|
import { dir } from "./dir";
|
||||||
|
import { simpleHash } from "./cache";
|
||||||
|
|
||||||
const encoder = new TextEncoder();
|
const encoder = new TextEncoder();
|
||||||
const brotli = await brotliPromise;
|
const brotli = await brotliPromise;
|
||||||
export const loadCachedBr = (hash: string, content: string) => {
|
export const loadCachedBr = (hash: string, content: string) => {
|
||||||
|
console.log(!g.cache.br[hash]);
|
||||||
if (!g.cache.br[hash]) {
|
if (!g.cache.br[hash]) {
|
||||||
if (!g.cache.br_progress.pending[hash]) {
|
if (!g.cache.br_progress.pending[hash]) {
|
||||||
g.cache.br_progress.pending[hash] = content;
|
g.cache.br_progress.pending[hash] = content;
|
||||||
|
|
@ -13,6 +15,23 @@ export const loadCachedBr = (hash: string, content: string) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const startBrCompress = () => {
|
||||||
|
if (g.deploy.content) {
|
||||||
|
const core = g.deploy.content.code.core;
|
||||||
|
const site = g.deploy.content.code.site;
|
||||||
|
|
||||||
|
const all = [...Object.values(core), ...Object.values(site)];
|
||||||
|
console.log(`brotli cache: compressing ${all.length} files`);
|
||||||
|
|
||||||
|
for (const content of all) {
|
||||||
|
const hash = simpleHash(content);
|
||||||
|
g.cache.br_progress.pending[hash] = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
recurseCompressBr();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const recurseCompressBr = () => {
|
const recurseCompressBr = () => {
|
||||||
clearTimeout(g.cache.br_progress.timeout);
|
clearTimeout(g.cache.br_progress.timeout);
|
||||||
g.cache.br_progress.timeout = setTimeout(async () => {
|
g.cache.br_progress.timeout = setTimeout(async () => {
|
||||||
|
|
@ -35,11 +54,12 @@ const recurseCompressBr = () => {
|
||||||
);
|
);
|
||||||
await Bun.write(file, g.cache.br[hash]);
|
await Bun.write(file, g.cache.br[hash]);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete g.cache.br_progress.pending[hash];
|
delete g.cache.br_progress.pending[hash];
|
||||||
g.cache.br_progress.running = false;
|
g.cache.br_progress.running = false;
|
||||||
recurseCompressBr();
|
recurseCompressBr();
|
||||||
} else {
|
} else {
|
||||||
console.log("brotli cache finished");
|
console.log("brotli cache: finished");
|
||||||
}
|
}
|
||||||
}, 50);
|
}, 50);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import { g } from "./global";
|
||||||
import { gunzipAsync } from "./gzip";
|
import { gunzipAsync } from "./gzip";
|
||||||
import { createRouter } from "radix3";
|
import { createRouter } from "radix3";
|
||||||
import { prodIndex } from "./prod-index";
|
import { prodIndex } from "./prod-index";
|
||||||
|
import { startBrCompress } from "./br-load";
|
||||||
|
|
||||||
const decoder = new TextDecoder();
|
const decoder = new TextDecoder();
|
||||||
export const deploy = {
|
export const deploy = {
|
||||||
|
|
@ -38,6 +39,17 @@ export const deploy = {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (g.deploy.content) {
|
if (g.deploy.content) {
|
||||||
|
g.cache = {
|
||||||
|
br: {},
|
||||||
|
gz: {},
|
||||||
|
br_progress: {
|
||||||
|
pending: {},
|
||||||
|
running: false,
|
||||||
|
timeout: null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
startBrCompress();
|
||||||
|
|
||||||
if (exists(dir("public"))) {
|
if (exists(dir("public"))) {
|
||||||
await removeAsync(dir("public"));
|
await removeAsync(dir("public"));
|
||||||
if (g.deploy.content.public) {
|
if (g.deploy.content.public) {
|
||||||
|
|
@ -75,7 +87,9 @@ export const deploy = {
|
||||||
delete require.cache[dir(`app/web/server/index.js`)];
|
delete require.cache[dir(`app/web/server/index.js`)];
|
||||||
await removeAsync(dir(`app/web/server`));
|
await removeAsync(dir(`app/web/server`));
|
||||||
await dirAsync(dir(`app/web/server`));
|
await dirAsync(dir(`app/web/server`));
|
||||||
for (const [k, v] of Object.entries(g.deploy.content.code.server)) {
|
for (const [k, v] of Object.entries(
|
||||||
|
g.deploy.content.code.server
|
||||||
|
)) {
|
||||||
await writeAsync(dir(`app/web/server/${k}`), v);
|
await writeAsync(dir(`app/web/server/${k}`), v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue