瀏覽代碼

Chore: CDN cache & prefer compare and write

SukkaW 1 年之前
父節點
當前提交
a71136db8a

+ 4 - 4
Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts

@@ -9,7 +9,6 @@ import { SHARED_DESCRIPTION } from './lib/constants';
 import { createMemoizedPromise } from './lib/memo-promise';
 import * as yaml from 'yaml';
 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 { 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')
     ),
-    writeFile(
-      path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml'),
+    compareAndWriteFile(
+      span,
       yaml.stringify(
         {
           dns: {
@@ -116,7 +115,8 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as
           )
         },
         { version: '1.1' }
-      )
+      ).split('\n'),
+      path.join(OUTPUT_INTERNAL_DIR, 'clash_nameserver_policy.yaml')
     )
   ]);
 });

+ 14 - 0
Build/build-public.ts

@@ -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 { mkdirp, writeFile } from './lib/misc';
 import picocolors from 'picocolors';
+import { compareAndWriteFile } from './lib/create-file';
 
 const mockDir = path.join(ROOT_DIR, 'Mock');
 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')
     .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);
 });
 

+ 4 - 4
Build/build-sgmodule-always-realip.ts

@@ -3,7 +3,6 @@ import { task } from './trace';
 import { compareAndWriteFile } from './lib/create-file';
 import { DIRECTS, LANS } from '../Source/non_ip/direct';
 import * as yaml from 'yaml';
-import { writeFile } from './lib/misc';
 import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR } from './constants/dir';
 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')
     ),
-    writeFile(
-      path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml'),
+    compareAndWriteFile(
+      span,
       yaml.stringify(
         {
           dns: {
@@ -75,7 +74,8 @@ export const buildAlwaysRealIPModule = task(require.main === module, __filename)
           }
         },
         { version: '1.1' }
-      )
+      ).split('\n'),
+      path.join(OUTPUT_INTERNAL_DIR, 'clash_fake_ip_filter.yaml')
     )
   ]);
 });