mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-19 21:55:15 +00:00
better image caching
This commit is contained in:
parent
e0276892b9
commit
cdd02dc54b
5 changed files with 78 additions and 9 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -26,6 +26,7 @@ addon/
|
||||||
widget/
|
widget/
|
||||||
custom/
|
custom/
|
||||||
/store/
|
/store/
|
||||||
|
cache/
|
||||||
# site apps
|
# site apps
|
||||||
apps/
|
apps/
|
||||||
!doc/context/*/apps
|
!doc/context/*/apps
|
||||||
|
|
|
@ -50,7 +50,24 @@ class Cron_weekly {
|
||||||
|
|
||||||
// Check for dead sites
|
// Check for dead sites
|
||||||
Master::Summon(array('Checksites'));
|
Master::Summon(array('Checksites'));
|
||||||
|
|
||||||
|
|
||||||
|
// clean up image cache - use site expiration or 180 days if not set
|
||||||
|
|
||||||
|
$files = glob('cache/img/*/*');
|
||||||
|
$expire_days = intval(get_config('system','default_expire_days', 180);
|
||||||
|
$now = time();
|
||||||
|
|
||||||
|
if ($files) {
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if (is_file($file)) {
|
||||||
|
if ($now - filemtime($file) >= 60 * 60 * 24 * $expire_days) {
|
||||||
|
unlink($file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// update searchable doc indexes
|
// update searchable doc indexes
|
||||||
// disabled until help system regenerated
|
// disabled until help system regenerated
|
||||||
// Master::Summon(array('Importdoc'));
|
// Master::Summon(array('Importdoc'));
|
||||||
|
|
30
Zotlabs/Module/Ca.php
Normal file
30
Zotlabs/Module/Ca.php
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
namespace Zotlabs\Module;
|
||||||
|
|
||||||
|
use Zotlabs\Web\Controller;
|
||||||
|
|
||||||
|
class Ca extends Controller {
|
||||||
|
|
||||||
|
function get() {
|
||||||
|
if (argc() > 1) {
|
||||||
|
$path = 'cache/img/' . substr(argv(1),0,2) . '/' . argv(1);
|
||||||
|
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$x = @getimagesize($path);
|
||||||
|
if ($x) {
|
||||||
|
header('Content-Type: ' . $x['mime']);
|
||||||
|
}
|
||||||
|
$infile = fopen($path,'rb');
|
||||||
|
$outfile = fopen('php://output','wb');
|
||||||
|
pipe_streams($infile,$outfile);
|
||||||
|
fclose($infile);
|
||||||
|
fclose($outfile);
|
||||||
|
killme();
|
||||||
|
}
|
||||||
|
if ($_GET['url']) {
|
||||||
|
goaway($url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
http_status_exit(404,'Not found');
|
||||||
|
}
|
||||||
|
}
|
|
@ -993,18 +993,38 @@ function linkify($s, $me = false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Replace media element using http url with https to a local redirector
|
* @brief implement image caching
|
||||||
* if using https locally.
|
|
||||||
*
|
*
|
||||||
* Looks for HTML tags containing src elements that are http when we're viewing an https page
|
* Note: This is named sslify because the old behaviour was only to proxy image fetches to
|
||||||
* Typically this throws an insecure content violation in the browser. So we redirect them
|
* non-SSL resources. Now all images are cached.
|
||||||
* to a local redirector which uses https and which redirects to the selected content
|
|
||||||
*
|
*
|
||||||
* @param string $s
|
* @param string $s
|
||||||
* @returns string
|
* @returns string
|
||||||
*/
|
*/
|
||||||
function sslify($s) {
|
function sslify($s) {
|
||||||
|
|
||||||
|
if (! intval(get_config('system','cache_images', 1))) {
|
||||||
|
|
||||||
|
if (strpos(z_root(),'https:') === false) {
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// we'll only sslify img tags because media files will probably choke.
|
||||||
|
|
||||||
|
$pattern = "/\<img(.*?)src=\"(http\:.*?)\"(.*?)\>/";
|
||||||
|
|
||||||
|
$matches = null;
|
||||||
|
$cnt = preg_match_all($pattern,$s,$matches,PREG_SET_ORDER);
|
||||||
|
if ($cnt) {
|
||||||
|
foreach ($matches as $match) {
|
||||||
|
$filename = basename( parse_url($match[2], PHP_URL_PATH) );
|
||||||
|
$s = str_replace($match[2],z_root() . '/sslify/' . $filename . '?f=&url=' . urlencode($match[2]),$s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
$pattern = "/\<img(.*?)src=\"(https?\:.*?)\"(.*?)\>/ism";
|
$pattern = "/\<img(.*?)src=\"(https?\:.*?)\"(.*?)\>/ism";
|
||||||
|
|
||||||
$matches = null;
|
$matches = null;
|
||||||
|
@ -1016,7 +1036,7 @@ function sslify($s) {
|
||||||
}
|
}
|
||||||
$cached = Img_cache::check($match[2],'cache/img');
|
$cached = Img_cache::check($match[2],'cache/img');
|
||||||
if ($cached) {
|
if ($cached) {
|
||||||
$s = str_replace($match[2],z_root() . '/' . Img_cache::get_filename($match[2],'cache/img') . '?url=' . urlencode($match[2]),$s);
|
$s = str_replace($match[2],z_root() . '/ca/' . basename(Img_cache::get_filename($match[2],'cache/img')) . '?url=' . urlencode($match[2]),$s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,9 +105,10 @@ web server platforms.
|
||||||
- make sure folders *cache/smarty3* and *store* exist and are
|
- make sure folders *cache/smarty3* and *store* exist and are
|
||||||
writable by the webserver
|
writable by the webserver
|
||||||
|
|
||||||
|
mkdir -p "store"
|
||||||
mkdir -p "cache/smarty3"
|
mkdir -p "cache/smarty3"
|
||||||
|
|
||||||
chmod -R 777 store
|
chmod -R 777 store cache
|
||||||
|
|
||||||
[This permission (777) is very dangerous and if you have sufficient
|
[This permission (777) is very dangerous and if you have sufficient
|
||||||
privilege and knowledge you should make these directories writeable
|
privilege and knowledge you should make these directories writeable
|
||||||
|
|
Loading…
Reference in a new issue