1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-17 01:17:29 +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,
"scheduledConfigurationChanges": false,
"strictSchemaValidation": false,
"stripClientHeadersOn304": false,
},
"externalResolver": {
"getVariant": [Function],

View File

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

View File

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

View File

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

View File

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