mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-23 01:55:27 +03:00
[index] Update and improve parameter handling for bridge and cache
- Use 'array_diff_key' instead of 'unset' - Remove parameters for caches By removing certain parameters for caches, the loading times can be improved considerably: * action: It doesn't matter which action the user took to generate feed items. * format: This has the biggest impact on performance, because cached items are now shared between different formats (i.e. try switching between Atom, Html and Mrss and compare previous vs. now). If a server handles lots of requests, this may even reduce bandwidth if the same contents are requested for different formats. * _noproxy: The proxy behavior has no impact on the produced items, so it can be ignored. * _cache_timeout: This is another option which might impact performance for some servers, especially if 'custom_timeout' has been enabled in the configuration. Requests with different cache timeouts no longer result in separate cache files.
This commit is contained in:
parent
243e324efc
commit
e3a5a6a170
1 changed files with 27 additions and 8 deletions
35
index.php
35
index.php
|
@ -188,24 +188,43 @@ try {
|
||||||
$cache_timeout = filter_var($params['_cache_timeout'], FILTER_VALIDATE_INT);
|
$cache_timeout = filter_var($params['_cache_timeout'], FILTER_VALIDATE_INT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove parameters that don't concern bridges
|
||||||
|
$bridge_params = array_diff_key(
|
||||||
|
$params,
|
||||||
|
array_fill_keys(
|
||||||
|
array(
|
||||||
|
'action',
|
||||||
|
'bridge',
|
||||||
|
'format',
|
||||||
|
'_noproxy',
|
||||||
|
'_cache_timeout',
|
||||||
|
), '')
|
||||||
|
);
|
||||||
|
|
||||||
|
// Remove parameters that don't concern caches
|
||||||
|
$cache_params = array_diff_key(
|
||||||
|
$params,
|
||||||
|
array_fill_keys(
|
||||||
|
array(
|
||||||
|
'action',
|
||||||
|
'format',
|
||||||
|
'_noproxy',
|
||||||
|
'_cache_timeout',
|
||||||
|
), '')
|
||||||
|
);
|
||||||
|
|
||||||
// Initialize cache
|
// Initialize cache
|
||||||
$cache = Cache::create('FileCache');
|
$cache = Cache::create('FileCache');
|
||||||
$cache->setPath(CACHE_DIR);
|
$cache->setPath(CACHE_DIR);
|
||||||
$cache->purgeCache(86400); // 24 hours
|
$cache->purgeCache(86400); // 24 hours
|
||||||
$cache->setParameters($params);
|
$cache->setParameters($cache_params);
|
||||||
|
|
||||||
unset($params['action']);
|
|
||||||
unset($params['bridge']);
|
|
||||||
unset($params['format']);
|
|
||||||
unset($params['_noproxy']);
|
|
||||||
unset($params['_cache_timeout']);
|
|
||||||
|
|
||||||
// Load cache & data
|
// Load cache & data
|
||||||
try {
|
try {
|
||||||
$bridge->setCache($cache);
|
$bridge->setCache($cache);
|
||||||
$bridge->setCacheTimeout($cache_timeout);
|
$bridge->setCacheTimeout($cache_timeout);
|
||||||
$bridge->dieIfNotModified();
|
$bridge->dieIfNotModified();
|
||||||
$bridge->setDatas($params);
|
$bridge->setDatas($bridge_params);
|
||||||
} catch(Error $e) {
|
} catch(Error $e) {
|
||||||
http_response_code($e->getCode());
|
http_response_code($e->getCode());
|
||||||
header('Content-Type: text/html');
|
header('Content-Type: text/html');
|
||||||
|
|
Loading…
Reference in a new issue