Optimise performance
Profile and optimise GDI application performance.
Frontend performance
React optimisation
Use React DevTools Profiler to identify slow components:
import { memo } from "react";
// Memoize expensive components
export const DatasetList = memo(({ datasets }) => {
return datasets.map((dataset) => (
<DatasetCard key={dataset.id} {...dataset} />
));
});
Bundle analysis
Analyse bundle size:
npm run build
npm run analyze
Reduce bundle size with dynamic imports:
const HeavyComponent = dynamic(() => import("./HeavyComponent"));
Backend performance
Database optimisation
Add indexes for frequent queries:
CREATE INDEX idx_dataset_owner ON datasets(owner_id);
Use connection pooling in application.properties:
quarkus.datasource.jdbc.max-size=20
quarkus.datasource.jdbc.min-size=5
Caching
Cache frequent queries with @CacheResult:
@CacheResult(cacheName = "datasets")
public Dataset findById(Long id) {
return repository.findById(id);
}
CKAN performance
Optimise Solr queries and enable result caching. See CKAN performance documentation.