Browse Source

generated feeds: support if-modified-since

Andrew Dolgov 7 years ago
parent
commit
2e35a7070b
3 changed files with 23 additions and 5 deletions
  1. 0 2
      backend.php
  2. 23 1
      classes/handler/public.php
  3. 0 2
      public.php

+ 0 - 2
backend.php

@@ -43,8 +43,6 @@
 	require_once "db.php";
 	require_once "db-prefs.php";
 
-	no_cache_incantation();
-
 	startup_gettext();
 
 	$script_started = microtime(true);

+ 23 - 1
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);

+ 0 - 2
public.php

@@ -24,8 +24,6 @@
 	require_once "db.php";
 	require_once "db-prefs.php";
 
-	no_cache_incantation();
-
 	startup_gettext();
 
 	$script_started = microtime(true);