diff --git a/djblets/webapi/resources.py b/djblets/webapi/resources.py
index 9d6e5711f5ca541395d91ce9b0797339535d29ca..5cd47882175a5ecfbc84159a13e02b1581147668 100644
--- a/djblets/webapi/resources.py
+++ b/djblets/webapi/resources.py
@@ -705,15 +705,15 @@ class WebAPIResource(object):
                 return NOT_LOGGED_IN
 
         last_modified_timestamp = self.get_last_modified(request, obj)
+        etag = self.get_etag(request, obj)
 
-        if (last_modified_timestamp and
-            get_modified_since(request, last_modified_timestamp)):
+        if ((last_modified_timestamp and
+             get_modified_since(request, last_modified_timestamp)) or
+            (('If-None-Match' in request.META or etag) and
+             etag_if_none_match(request, etag))):
             return HttpResponseNotModified()
 
-        etag = self.get_etag(request, obj)
 
-        if etag and etag_if_none_match(request, etag):
-            return HttpResponseNotModified()
 
         data = {
             self.item_result_key: self.serialize_object(obj, request=request,
