Merge branch 'patch-25' into 'dev'
'Last-Modified' and 'Content-Length' HTTP headers added for better image caching See merge request hubzilla/core!1369
This commit is contained in:
commit
6c6dca05e7
@ -33,25 +33,24 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
|
||||
$observer_xchan = get_observer_hash();
|
||||
|
||||
$default = z_root() . '/' . get_default_profile_photo();
|
||||
|
||||
if(isset($type)) {
|
||||
|
||||
/**
|
||||
* Profile photos - Access controls on default profile photos are not honoured since they need to be exchanged with remote sites.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
$default = get_default_profile_photo();
|
||||
|
||||
if($type === 'profile') {
|
||||
switch($res) {
|
||||
|
||||
case 'm':
|
||||
$resolution = 5;
|
||||
$default = z_root() . '/' . get_default_profile_photo(80);
|
||||
$default = get_default_profile_photo(80);
|
||||
break;
|
||||
case 's':
|
||||
$resolution = 6;
|
||||
$default = z_root() . '/' . get_default_profile_photo(48);
|
||||
$default = get_default_profile_photo(48);
|
||||
break;
|
||||
case 'l':
|
||||
default:
|
||||
@ -60,6 +59,8 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
}
|
||||
}
|
||||
|
||||
$modified = filemtime($default);
|
||||
$default = z_root() . '/' . $default;
|
||||
$uid = $person;
|
||||
|
||||
$d = [ 'imgscale' => $resolution, 'channel_id' => $uid, 'default' => $default, 'data' => '', 'mimetype' => '' ];
|
||||
@ -78,6 +79,7 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
intval(PHOTO_PROFILE)
|
||||
);
|
||||
if($r) {
|
||||
$modified = strtotime($r[0]['edited']);
|
||||
$data = dbunescbin($r[0]['content']);
|
||||
$mimetype = $r[0]['mimetype'];
|
||||
}
|
||||
@ -164,9 +166,9 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
if($exists && $allowed) {
|
||||
$data = dbunescbin($e[0]['content']);
|
||||
$mimetype = $e[0]['mimetype'];
|
||||
if(intval($e[0]['os_storage'])) {
|
||||
$modified = strtotime($e[0]['edited']);
|
||||
if(intval($e[0]['os_storage']))
|
||||
$streaming = $data;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(! $allowed) {
|
||||
@ -183,7 +185,6 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
if(! isset($data)) {
|
||||
if(isset($resolution)) {
|
||||
switch($resolution) {
|
||||
|
||||
case 4:
|
||||
$data = fetch_image_from_url(z_root() . '/' . get_default_profile_photo(),$mimetype);
|
||||
break;
|
||||
@ -210,10 +211,14 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
}
|
||||
}
|
||||
|
||||
// @FIXME Seems never invoked
|
||||
// Writing in cachefile
|
||||
if (isset($cachefile) && $cachefile != '')
|
||||
if (isset($cachefile) && $cachefile != '') {
|
||||
file_put_contents($cachefile, $data);
|
||||
|
||||
$modified = filemtime($cachefile);
|
||||
}
|
||||
|
||||
|
||||
if(function_exists('header_remove')) {
|
||||
header_remove('Pragma');
|
||||
header_remove('pragma');
|
||||
@ -241,12 +246,14 @@ class Photo extends \Zotlabs\Web\Controller {
|
||||
// leave it alone.
|
||||
|
||||
$cache = get_config('system','photo_cache_time', 86400); // 1 day by default
|
||||
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $cache) . " GMT");
|
||||
|
||||
header("Cache-Control: max-age=" . $cache);
|
||||
|
||||
}
|
||||
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s", $modified) . " GMT");
|
||||
header("Content-Length: " . strlen($data));
|
||||
|
||||
// If it's a file resource, stream it.
|
||||
|
||||
if($streaming && $channel) {
|
||||
|
Reference in New Issue
Block a user