aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCash Costello <cash.costello@gmail.com>2012-01-07 12:35:58 -0500
committerCash Costello <cash.costello@gmail.com>2012-01-07 12:35:58 -0500
commit00fc90b9c67b0e3438ca2307acd5d3e42332a462 (patch)
treeafe9ea37de5a86a52c5a446cee579c674de1a54b
parent1973a28f46d8678c79721aeca63b007f2b20bdcb (diff)
parent6b8301f6433ec22b065d734e9fc26d09f723b07d (diff)
downloadelgg-00fc90b9c67b0e3438ca2307acd5d3e42332a462.tar.gz
elgg-00fc90b9c67b0e3438ca2307acd5d3e42332a462.tar.bz2
Merge pull request #134 from sembrestels/etag2
-rw-r--r--mod/groups/icon.php10
-rw-r--r--mod/profile/icondirect.php9
2 files changed, 18 insertions, 1 deletions
diff --git a/mod/groups/icon.php b/mod/groups/icon.php
index f4c0f8010..104da4b41 100644
--- a/mod/groups/icon.php
+++ b/mod/groups/icon.php
@@ -10,8 +10,15 @@ require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
$group_guid = get_input('group_guid');
$group = get_entity($group_guid);
+// If is the same ETag, content didn't changed.
+$etag = $group->icontime . $group_guid;
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
+ header("HTTP/1.1 304 Not Modified");
+ exit;
+}
+
$size = strtolower(get_input('size'));
-if (!in_array($size,array('large','medium','small','tiny','master','topbar')))
+if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar')))
$size = "medium";
$success = false;
@@ -37,4 +44,5 @@ header('Expires: ' . date('r',time() + 864000));
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
+header("ETag: $etag");
echo $contents;
diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php
index f7188455e..6c3148f2b 100644
--- a/mod/profile/icondirect.php
+++ b/mod/profile/icondirect.php
@@ -12,8 +12,16 @@ require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php');
global $CONFIG;
$join_date = (int)$_GET['joindate'];
+$last_cache = (int)$_GET['lastcache']; // icontime
$guid = (int)$_GET['guid'];
+// If is the same ETag, content didn't changed.
+$etag = $last_cache . $guid;
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
+ header("HTTP/1.1 304 Not Modified");
+ exit;
+}
+
$size = strtolower($_GET['size']);
if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) {
$size = "medium";
@@ -48,6 +56,7 @@ if ($mysql_dblink) {
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
+ header("ETag: $etag");
// this chunking is done for supposedly better performance
$split_string = str_split($contents, 1024);
foreach ($split_string as $chunk) {