diff --git a/internal/lsp/cache/load.go b/internal/lsp/cache/load.go
index 5684274..1993954 100644
--- a/internal/lsp/cache/load.go
+++ b/internal/lsp/cache/load.go
@@ -83,11 +83,14 @@
 	if originalFH == nil {
 		return true
 	}
-	// If the file is a mod file, we should always load.
-	if originalFH.Identity().Kind == currentFH.Identity().Kind && currentFH.Identity().Kind == source.Mod {
+	// If the file hasn't changed, there's no need to reload.
+	if originalFH.Identity().String() == currentFH.Identity().String() {
+		return false
+	}
+	// If a go.mod file's contents have changed, always invalidate metadata.
+	if kind := originalFH.Identity().Kind; kind == source.Mod {
 		return true
 	}
-
 	// Get the original and current parsed files in order to check package name and imports.
 	original, _, _, originalErr := c.ParseGoHandle(originalFH, source.ParseHeader).Parse(ctx)
 	current, _, _, currentErr := c.ParseGoHandle(currentFH, source.ParseHeader).Parse(ctx)
diff --git a/internal/lsp/cache/parse.go b/internal/lsp/cache/parse.go
index a556124..9031fc8 100644
--- a/internal/lsp/cache/parse.go
+++ b/internal/lsp/cache/parse.go
@@ -114,6 +114,9 @@
 	ctx, done := trace.StartSpan(ctx, "cache.parseGo", telemetry.File.Of(fh.Identity().URI.Filename()))
 	defer done()
 
+	if fh.Identity().Kind != source.Go {
+		return nil, nil, nil, errors.Errorf("cannot parse non-Go file %s", fh.Identity().URI)
+	}
 	buf, _, err := fh.Read(ctx)
 	if err != nil {
 		return nil, nil, nil, err
diff --git a/internal/lsp/cache/snapshot.go b/internal/lsp/cache/snapshot.go
index ea4bef8..c1f13d9 100644
--- a/internal/lsp/cache/snapshot.go
+++ b/internal/lsp/cache/snapshot.go
@@ -562,16 +562,22 @@
 		directIDs[id] = struct{}{}
 	}
 
-	// If we are invalidating a go.mod file then we should invalidate all of the packages in the module
-	if withoutFileKind == source.Mod {
+	// Get the current and original FileHandles for this URI.
+	currentFH := s.view.session.GetFile(withoutURI)
+	originalFH := s.files[withoutURI]
+
+	// Check if the file's package name or imports have changed,
+	// and if so, invalidate this file's packages' metadata.
+	invalidateMetadata := s.view.session.cache.shouldLoad(ctx, s, originalFH, currentFH)
+
+	// If a go.mod file's contents have changed, invalidate the metadata
+	// for all of the packages in the workspace.
+	if invalidateMetadata && currentFH.Identity().Kind == source.Mod {
 		for id := range s.workspacePackages {
 			directIDs[id] = struct{}{}
 		}
 	}
 
-	// Get the original FileHandle for the URI, if it exists.
-	originalFH := s.files[withoutURI]
-
 	// If this is a file we don't yet know about,
 	// then we do not yet know what packages it should belong to.
 	// Make a rough estimate of what metadata to invalidate by finding the package IDs
@@ -631,8 +637,8 @@
 	for k, v := range s.files {
 		result.files[k] = v
 	}
+
 	// Handle the invalidated file; it may have new contents or not exist.
-	currentFH := s.view.session.GetFile(withoutURI)
 	if _, _, err := currentFH.Read(ctx); os.IsNotExist(err) {
 		delete(result.files, withoutURI)
 	} else {
@@ -662,10 +668,6 @@
 		result.workspacePackages[k] = v
 	}
 
-	// Check if the file's package name or imports have changed,
-	// and if so, invalidate this file's packages' metadata.
-	invalidateMetadata := s.view.session.cache.shouldLoad(ctx, s, originalFH, currentFH)
-
 	// Copy the package metadata. We only need to invalidate packages directly
 	// containing the affected file, and only if it changed in a relevant way.
 	for k, v := range s.metadata {
