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:
parent
1173b664da
commit
b6f1929efb
@ -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],
|
||||||
|
@ -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 {
|
||||||
|
@ -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();
|
||||||
|
@ -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 = {
|
||||||
|
@ -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: {
|
||||||
|
Loading…
Reference in New Issue
Block a user