dxa-web-application-java icon indicating copy to clipboard operation
dxa-web-application-java copied to clipboard

isNoMediaCache in processBinaryComponent of GraphQLStaticContentResolver

Open EBroersen opened this issue 5 years ago • 2 comments

We were wondering whether the code for checking isNoMediaCache might be incorrect.

        if (!requestDto.isNoMediaCache()) {
            log.debug("File cannot be cached: {}", file.getAbsolutePath());
            binaryComponent.setLastPublishDate(new DateTime().toString());
        }

We always get a 200 ok for an image request and never receive a 304 on an image. We found out the a new Date is always passed as lastModifiedDate in the browser which led us to this code. We were wondering if the ! should be presented here.

Regards Erwin Broersen

EBroersen avatar Apr 30 '20 08:04 EBroersen

Look like this double negation matters.

alebastrov avatar May 06 '21 09:05 alebastrov

Hi @alebastrov

StaticContentRequestDto requestDto = StaticContentRequestDto.builder(path, localizationId).localizationPath(localizationPath).baseUrl(this.webRequestContext.getBaseUrl()).noMediaCache(!essentialConfiguration && this.webRequestContext.isSessionPreview()).build();

or

private boolean isNoMediaCache(String path, String localizationPath) { return !FileUtils.isEssentialConfiguration(path, localizationPath) && this.webRequestContext.isSessionPreview(); }

The above code always return false because of && this.webRequestContext.isSessionPreview() on live environment. so !requestDto.isNoMediaCache() become true and it always set last publish date for binary component.

As per our analysis, double negation is not required. or are we missing something?

koteswar-k avatar May 06 '21 13:05 koteswar-k