1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-12 13:48:35 +02:00

Poc/strip client headers on 304 (#5574)

To reduce traffic returned on 304.
This commit is contained in:
Ivar Conradi Østhus 2023-12-08 12:14:37 +01:00 committed by GitHub
parent 1173b664da
commit b6f1929efb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 3 deletions

View File

@ -102,6 +102,7 @@ exports[`should create default config 1`] = `
"responseTimeWithAppNameKillSwitch": false, "responseTimeWithAppNameKillSwitch": false,
"scheduledConfigurationChanges": false, "scheduledConfigurationChanges": false,
"strictSchemaValidation": false, "strictSchemaValidation": false,
"stripClientHeadersOn304": false,
}, },
"externalResolver": { "externalResolver": {
"getVariant": [Function], "getVariant": [Function],

View File

@ -248,6 +248,11 @@ export default class FeatureController extends Controller {
if (etag === userVersion) { if (etag === userVersion) {
res.status(304); res.status(304);
if (this.flagResolver.isEnabled('stripClientHeadersOn304')) {
res.getHeaderNames().forEach((header) =>
res.removeHeader(header),
);
}
res.end(); res.end();
return; return;
} else { } else {

View File

@ -1,6 +1,6 @@
import { Response } from 'express'; import { Response } from 'express';
import Controller from '../controller'; import Controller from '../controller';
import { IUnleashConfig, IUnleashServices } from '../../types'; import { IFlagResolver, IUnleashConfig, IUnleashServices } from '../../types';
import ClientInstanceService from '../../services/client-metrics/instance-service'; import ClientInstanceService from '../../services/client-metrics/instance-service';
import { Logger } from '../../logger'; import { Logger } from '../../logger';
import { IAuthRequest } from '../unleash-types'; import { IAuthRequest } from '../unleash-types';
@ -24,6 +24,8 @@ export default class ClientMetricsController extends Controller {
metricsV2: ClientMetricsServiceV2; metricsV2: ClientMetricsServiceV2;
flagResolver: IFlagResolver;
constructor( constructor(
{ {
clientInstanceService, clientInstanceService,
@ -44,6 +46,7 @@ export default class ClientMetricsController extends Controller {
this.clientInstanceService = clientInstanceService; this.clientInstanceService = clientInstanceService;
this.openApiService = openApiService; this.openApiService = openApiService;
this.metricsV2 = clientMetricsServiceV2; this.metricsV2 = clientMetricsServiceV2;
this.flagResolver = config.flagResolver;
this.route({ this.route({
method: 'post', method: 'post',
@ -90,6 +93,11 @@ export default class ClientMetricsController extends Controller {
); );
await this.metricsV2.registerClientMetrics(data, clientIp); await this.metricsV2.registerClientMetrics(data, clientIp);
if (this.flagResolver.isEnabled('stripClientHeadersOn304')) {
res.getHeaderNames().forEach((header) =>
res.removeHeader(header),
);
}
res.status(202).end(); res.status(202).end();
} catch (e) { } catch (e) {
res.status(400).end(); res.status(400).end();

View File

@ -29,7 +29,8 @@ export type IFlagKey =
| 'featureSearchAPI' | 'featureSearchAPI'
| 'featureSearchFrontend' | 'featureSearchFrontend'
| 'scheduledConfigurationChanges' | 'scheduledConfigurationChanges'
| 'detectSegmentUsageInChangeRequests'; | 'detectSegmentUsageInChangeRequests'
| 'stripClientHeadersOn304';
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>; export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
@ -130,6 +131,11 @@ const flags: IFlags = {
.UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS, .UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS,
false, false,
), ),
stripClientHeadersOn304: parseEnvVarBoolean(
process.env
.UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS,
false,
),
}; };
export const defaultExperimentalOptions: IExperimentalOptions = { export const defaultExperimentalOptions: IExperimentalOptions = {

View File

@ -26,7 +26,7 @@ process.nextTick(async () => {
enableHeapSnapshotEnpoint: true, enableHeapSnapshotEnpoint: true,
}, },
logLevel: LogLevel.debug, logLevel: LogLevel.debug,
// secureHeaders: true, secureHeaders: true,
versionCheck: { versionCheck: {
enable: false, enable: false,
}, },
@ -40,6 +40,7 @@ process.nextTick(async () => {
privateProjects: true, privateProjects: true,
featureSearchAPI: true, featureSearchAPI: true,
featureSearchFrontend: true, featureSearchFrontend: true,
stripClientHeadersOn304: true,
}, },
}, },
authentication: { authentication: {