          #
          # Parse the URL
          #
-@@ -414,11 +435,56 @@
+@@ -414,11 +431,48 @@
          def notFound(f):
              f.trap(http.HTTPError)
              if f.response.code != responsecode.NOT_FOUND:

 
-    _resourcesByURL = weakref.WeakKeyDictionary()
-
     def _rememberURLForResource(self, url, resource):
         """
         Remember the URL of visited resources.
@@ -367,10 +386,7 @@
 
         @return: the URL of C{resource} if known, otherwise C{None}.
         """

+                return f
+            return None
+
+        d = defer.maybeDeferred(self._getChild, None, res, [segment], updatepaths=False)
+        d.addCallback(self._rememberResource, url)
+        d.addErrback(notFound)
+        return d
+
     def _processingFailed(self, reason):
