Elastic Path Commerce Development

Implementing HTTP Caching in Default Resources

Implementing HTTP Caching in Default Resources

If a default resource does not have HTTP caching, you must extend the resource by following the instruction to extend a Helix resource to enable caching. You must also create an Info prototype.
Note: Do not add the @PrototypeExtension annotation to the Info prototype.
To enable HTTP caching for a new resource, create a prototype that implements the Info interface of the resource.

For the NavigationResource, create a InfoNavigationPrototype that implements the NavigationResource.Info interface as in the following example:

/**
 * Navigation prototype for Info operation.
 */
public class InfoNavigationPrototype implements NavigationResource.Info {

	private static final Single<ResourceInfo> INFO_SINGLE = Single.just(ResourceInfo.builder()
			.withMaxAge(NavigationsResourceConstants.MAX_AGE)
			.build());

	@Override
	public Single<ResourceInfo> onInfo() {
		return INFO_SINGLE;
	}
}

Overriding HTTP Caching in a Default Resource

To override the max-age for a default resource, extend the Info prototype for the resource and provide the new value.
For the NavigationResource, to override the max-age, do as in the following example:
/**
 * Navigation prototype for Info operation.
 */
@PrototypeExtension
public class InfoExtNavigationPrototype implements NavigationResource.Info {

	private static final Single<ResourceInfo> INFO_SINGLE = Single.just(ResourceInfo.builder()
			.withMaxAge(300)
			.build());

	@Override
	public Single<ResourceInfo> onInfo() {
		return INFO_SINGLE;
	}
}