1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-13 18:06:02 +00:00

rework image caching to work without permanent article content rewriting (refs #582)

This commit is contained in:
Andrew Dolgov
2013-03-19 09:25:36 +04:00
parent e88c194357
commit f0bd8e6531
3 changed files with 40 additions and 12 deletions

View File

@@ -4,6 +4,8 @@
require_once "config.php"; require_once "config.php";
// backwards compatible wrapper for old-style image caching
/* if (isset($_GET['url'])) {
$url = base64_decode($_GET['url']); $url = base64_decode($_GET['url']);
$filename = CACHE_DIR . '/images/' . sha1($url) . '.png'; $filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
@@ -14,4 +16,23 @@
} else { } else {
header("Location: $url"); header("Location: $url");
} }
return;
} */
@$hash = basename($_GET['hash']);
if ($hash) {
$filename = CACHE_DIR . '/images/' . $hash . '.png';
if (file_exists($filename)) {
header("Content-type: image/png");
echo file_get_contents($filename);
} else {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "File not found.";
}
}
?> ?>

View File

@@ -2590,10 +2590,17 @@
$entry->setAttribute('href', $entry->setAttribute('href',
rewrite_relative_url($site_url, $entry->getAttribute('href'))); rewrite_relative_url($site_url, $entry->getAttribute('href')));
if ($entry->hasAttribute('src')) if ($entry->hasAttribute('src')) {
if (preg_match('/^image.php\?i=[a-z0-9]+$/', $entry->getAttribute('src')) == 0) $src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
$entry->setAttribute('src',
rewrite_relative_url($site_url, $entry->getAttribute('src'))); $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png';
if (file_exists($cached_filename)) {
$src = SELF_URL_PATH . '/image.php?hash=' . sha1($src);
}
$entry->setAttribute('src', $src);
}
} }
if (strtolower($entry->nodeName) == "a") { if (strtolower($entry->nodeName) == "a") {

View File

@@ -581,7 +581,7 @@
} }
if ($cache_images && is_writable(CACHE_DIR . '/images')) if ($cache_images && is_writable(CACHE_DIR . '/images'))
$entry_content = cache_images($entry_content, $site_url, $debug_enabled); cache_images($entry_content, $site_url, $debug_enabled);
$entry_content = db_escape_string($entry_content, false); $entry_content = db_escape_string($entry_content, false);