diff --git a/backend.php b/backend.php
index 41481a9635f59dbd21f78bc062f1db894ce3bfa2..9eb3989e4c2311b2837c838e761912d2ad32fe45 100644
--- a/backend.php
+++ b/backend.php
@@ -43,8 +43,6 @@
 	require_once "db.php";
 	require_once "db-prefs.php";
 
-	no_cache_incantation();
-
 	startup_gettext();
 
 	$script_started = microtime(true);
diff --git a/classes/handler/public.php b/classes/handler/public.php
index 37c704584798bc5bd5afb90857ff55db3e681b11..151447540a59f3de56edce0a853893741d870c70 100644
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -21,11 +21,32 @@ class Handler_Public extends Handler {
 		else if ($feed == -1)
 			$date_sort_field = "last_marked DESC";
 
+		$qfh_ret = queryFeedHeadlines($this->link, $feed,
+			1, $view_mode, $is_cat, $search, $search_mode,
+			$date_sort_field, $offset, $owner_uid,
+			false, 0, false, true);
+
+		$result = $qfh_ret[0];
+
+		if (db_num_rows($result) != 0) {
+			$ts = strtotime(db_fetch_result($result, 0, "date_entered"));
+
+			if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
+					strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified) {
+		      header('HTTP/1.0 304 Not Modified');
+		      return;
+			}
+
+			$last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT";
+			header("Last-Modified: $last_modified", true);
+		}
+
 		$qfh_ret = queryFeedHeadlines($this->link, $feed,
 			$limit, $view_mode, $is_cat, $search, $search_mode,
 			$date_sort_field, $offset, $owner_uid,
 			false, 0, false, true);
 
+
 		$result = $qfh_ret[0];
 		$feed_title = htmlspecialchars($qfh_ret[1]);
 		$feed_site_url = $qfh_ret[2];
@@ -53,7 +74,8 @@ class Handler_Public extends Handler {
 
 			$tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
 
-	 		while ($line = db_fetch_assoc($result)) {
+			while ($line = db_fetch_assoc($result)) {
+
 				$tpl->setVariable('ARTICLE_ID', htmlspecialchars($line['link']), true);
 				$tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
 				$tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
diff --git a/public.php b/public.php
index dccd77f43b3353c9243d706e375a6ab5d96e8c15..8477f95fc8399f1f4959ed635b3c27e750b67e92 100644
--- a/public.php
+++ b/public.php
@@ -24,8 +24,6 @@
 	require_once "db.php";
 	require_once "db-prefs.php";
 
-	no_cache_incantation();
-
 	startup_gettext();
 
 	$script_started = microtime(true);