1
1
mirror of https://github.com/MarginaliaSearch/MarginaliaSearch.git synced 2025-10-06 07:32:38 +02:00

Compare commits

...

1 Commits

Author SHA1 Message Date
Viktor Lofgren
aa9b1244ea (search) Reduce the number of db queries a bit by caching data that doesn't change too often 2025-01-10 13:56:04 +01:00

View File

@@ -71,7 +71,7 @@ public class SearchSiteInfoService {
Thread.ofPlatform().name("Recently Added Domains Model Updater").start(this::modelUpdater); Thread.ofPlatform().name("Recently Added Domains Model Updater").start(this::modelUpdater);
} }
private volatile SiteOverviewModel model = new SiteOverviewModel(List.of()); private volatile SiteOverviewModel cachedOverviewModel = new SiteOverviewModel(List.of());
@GET @GET
@Path("/site") @Path("/site")
@@ -83,7 +83,7 @@ public class SearchSiteInfoService {
return new MapModelAndView("siteinfo/start.jte", return new MapModelAndView("siteinfo/start.jte",
Map.of("navbar", NavbarModel.SITEINFO, Map.of("navbar", NavbarModel.SITEINFO,
"model", model)); "model", cachedOverviewModel));
} }
private void modelUpdater() { private void modelUpdater() {
@@ -95,17 +95,26 @@ public class SearchSiteInfoService {
// the result. // the result.
try (var conn = dataSource.getConnection(); try (var conn = dataSource.getConnection();
var stmt = conn.prepareStatement("SELECT DOMAIN_NAME, DISCOVER_DATE FROM EC_DOMAIN WHERE NODE_AFFINITY = 0 ORDER BY ID DESC LIMIT 10")) { var stmt = conn.prepareStatement("""
SELECT DOMAIN_NAME, DISCOVER_DATE
FROM EC_DOMAIN
WHERE NODE_AFFINITY = 0
ORDER BY ID DESC
LIMIT 10
"""))
{
var rs = stmt.executeQuery(); var rs = stmt.executeQuery();
while (rs.next()) { while (rs.next()) {
domains.add(new SiteOverviewModel.DiscoveredDomain(rs.getString("DOMAIN_NAME"), rs.getString("DISCOVER_DATE"))); domains.add(new SiteOverviewModel.DiscoveredDomain(
rs.getString("DOMAIN_NAME"),
rs.getString("DISCOVER_DATE"))
);
} }
} catch (SQLException ex) { } catch (SQLException ex) {
throw new RuntimeException(); logger.warn("Failed to get recently added domains: {}", ex.getMessage());
} }
model = new SiteOverviewModel(domains); cachedOverviewModel = new SiteOverviewModel(domains);
try { try {
TimeUnit.MINUTES.sleep(15); TimeUnit.MINUTES.sleep(15);