Chore: CDN cache & prefer compare and write

This commit is contained in:
SukkaW
2024-09-23 21:19:57 +08:00
parent a2fe13e50a
commit a71136db8a
3 changed files with 22 additions and 8 deletions

View File

@@ -9,7 +9,6 @@ import { SHARED_DESCRIPTION } from './lib/constants';
import { createMemoizedPromise } from './lib/memo-promise'; import { createMemoizedPromise } from './lib/memo-promise';
import * as yaml from 'yaml'; import * as yaml from 'yaml';
import { appendArrayInPlace } from './lib/append-array-in-place'; import { appendArrayInPlace } from './lib/append-array-in-place';
import { writeFile } from './lib/misc';
import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR, SOURCE_DIR } from './constants/dir'; import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR, SOURCE_DIR } from './constants/dir';
import { RulesetOutput } from './lib/create-file'; import { RulesetOutput } from './lib/create-file';
@@ -83,8 +82,8 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as
], ],
path.resolve(OUTPUT_MODULES_DIR, 'sukka_local_dns_mapping.sgmodule') path.resolve(OUTPUT_MODULES_DIR, 'sukka_local_dns_mapping.sgmodule')
), ),
writeFile( compareAndWriteFile(
path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml'), span,
yaml.stringify( yaml.stringify(
{ {
dns: { dns: {
@@ -116,7 +115,8 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as
) )
}, },
{ version: '1.1' } { version: '1.1' }
) ).split('\n'),
path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml')
) )
]); ]);
}); });

View File

@@ -9,6 +9,7 @@ import type { TreeType, TreeTypeArray } from './lib/tree-dir';
import { OUTPUT_MOCK_DIR, OUTPUT_MODULES_DIR, PUBLIC_DIR, ROOT_DIR } from './constants/dir'; import { OUTPUT_MOCK_DIR, OUTPUT_MODULES_DIR, PUBLIC_DIR, ROOT_DIR } from './constants/dir';
import { mkdirp, writeFile } from './lib/misc'; import { mkdirp, writeFile } from './lib/misc';
import picocolors from 'picocolors'; import picocolors from 'picocolors';
import { compareAndWriteFile } from './lib/create-file';
const mockDir = path.join(ROOT_DIR, 'Mock'); const mockDir = path.join(ROOT_DIR, 'Mock');
const modulesDir = path.join(ROOT_DIR, 'Modules'); const modulesDir = path.join(ROOT_DIR, 'Modules');
@@ -46,6 +47,19 @@ export const buildPublic = task(require.main === module, __filename)(async (span
.traceChild('generate index.html') .traceChild('generate index.html')
.traceAsyncFn(() => treeDir(PUBLIC_DIR).then(generateHtml)); .traceAsyncFn(() => treeDir(PUBLIC_DIR).then(generateHtml));
await compareAndWriteFile(
span,
[
'/*',
' cloudflare-cdn-cache-control: public, max-age=150, stale-while-revalidate=60, stale-if-error=30',
'https://:project.pages.dev/*',
' X-Robots-Tag: noindex',
'/Modules/*',
' content-type: text/plain; charset=utf-8'
],
path.join(PUBLIC_DIR, '_headers')
);
return writeFile(path.join(PUBLIC_DIR, 'index.html'), html); return writeFile(path.join(PUBLIC_DIR, 'index.html'), html);
}); });

View File

@@ -3,7 +3,6 @@ import { task } from './trace';
import { compareAndWriteFile } from './lib/create-file'; import { compareAndWriteFile } from './lib/create-file';
import { DIRECTS, LANS } from '../Source/non_ip/direct'; import { DIRECTS, LANS } from '../Source/non_ip/direct';
import * as yaml from 'yaml'; import * as yaml from 'yaml';
import { writeFile } from './lib/misc';
import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR } from './constants/dir'; import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR } from './constants/dir';
import { appendArrayInPlace } from './lib/append-array-in-place'; import { appendArrayInPlace } from './lib/append-array-in-place';
@@ -62,8 +61,8 @@ export const buildAlwaysRealIPModule = task(require.main === module, __filename)
], ],
path.resolve(OUTPUT_MODULES_DIR, 'sukka_common_always_realip.sgmodule') path.resolve(OUTPUT_MODULES_DIR, 'sukka_common_always_realip.sgmodule')
), ),
writeFile( compareAndWriteFile(
path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml'), span,
yaml.stringify( yaml.stringify(
{ {
dns: { dns: {
@@ -75,7 +74,8 @@ export const buildAlwaysRealIPModule = task(require.main === module, __filename)
} }
}, },
{ version: '1.1' } { version: '1.1' }
) ).split('\n'),
path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml')
) )
]); ]);
}); });