diff --git a/src/Box/Main.php b/src/Box/Main.php index bda22619..991e3f90 100644 --- a/src/Box/Main.php +++ b/src/Box/Main.php @@ -72,29 +72,49 @@ class Main function ($entry) { global $config; + global $memory; + + $this->tray->label->set_text( + sprintf( + 'Open %s...', + $entry->get_text() + ) + ); + + $start = microtime(true); $host = null; if ($config->resolver->enabled) { - $resolve = new \Yggverse\Net\Resolve( - $config->resolver->request->record, - $config->resolver->request->host, - $config->resolver->request->timeout, - $config->resolver->result->shuffle - ); - $address = new \Yggverse\Net\Address( $entry->get_text() ); - $resolved = $resolve->address( - $address - ); + $name = $address->getHost(); - if ($resolved) + if (!$host = $memory->get($name)) { - $host = $resolved->getHost(); // @TODO memory cache + $resolve = new \Yggverse\Net\Resolve( + $config->resolver->request->record, + $config->resolver->request->host, + $config->resolver->request->timeout, + $config->resolver->result->shuffle + ); + + $resolved = $resolve->address( + $address + ); + + if ($resolved) + { + $host = $resolved->getHost(); + + $memory->set( + $name, + $host + ); + } } } @@ -103,15 +123,6 @@ class Main $host ); - $this->tray->label->set_text( - sprintf( - 'Open %s...', - $entry->get_text() - ) - ); - - $start = microtime(true); - $raw = $request->getResponse(); $end = microtime(true);