Merge pull request #979 from ArthurHoaro/feature/assets-cache-version
Add a version hash for asset loading to prevent browser's cache issue
This commit is contained in:
commit
c8d96b4729
6 changed files with 35 additions and 15 deletions
|
@ -221,4 +221,19 @@ public static function checkResourcePermissions($conf)
|
||||||
|
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a salted hash representing the current Shaarli version.
|
||||||
|
*
|
||||||
|
* Useful for assets browser cache.
|
||||||
|
*
|
||||||
|
* @param string $currentVersion of Shaarli
|
||||||
|
* @param string $salt User personal salt, also used for the authentication
|
||||||
|
*
|
||||||
|
* @return string version hash
|
||||||
|
*/
|
||||||
|
public static function getVersionHash($currentVersion, $salt)
|
||||||
|
{
|
||||||
|
return hash_hmac('sha256', $currentVersion, $salt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ private function initialize()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$version = ApplicationUtils::checkUpdate(
|
$version = ApplicationUtils::checkUpdate(
|
||||||
shaarli_version,
|
SHAARLI_VERSION,
|
||||||
$this->conf->get('resource.update_check'),
|
$this->conf->get('resource.update_check'),
|
||||||
$this->conf->get('updates.check_updates_interval'),
|
$this->conf->get('updates.check_updates_interval'),
|
||||||
$this->conf->get('updates.check_updates'),
|
$this->conf->get('updates.check_updates'),
|
||||||
|
@ -75,7 +75,11 @@ private function initialize()
|
||||||
}
|
}
|
||||||
$this->tpl->assign('searchcrits', $searchcrits);
|
$this->tpl->assign('searchcrits', $searchcrits);
|
||||||
$this->tpl->assign('source', index_url($_SERVER));
|
$this->tpl->assign('source', index_url($_SERVER));
|
||||||
$this->tpl->assign('version', shaarli_version);
|
$this->tpl->assign('version', SHAARLI_VERSION);
|
||||||
|
$this->tpl->assign(
|
||||||
|
'version_hash',
|
||||||
|
ApplicationUtils::getVersionHash(SHAARLI_VERSION, $this->conf->get('credentials.salt'))
|
||||||
|
);
|
||||||
$this->tpl->assign('scripturl', index_url($_SERVER));
|
$this->tpl->assign('scripturl', index_url($_SERVER));
|
||||||
$this->tpl->assign('privateonly', !empty($_SESSION['privateonly'])); // Show only private links?
|
$this->tpl->assign('privateonly', !empty($_SESSION['privateonly'])); // Show only private links?
|
||||||
$this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly']));
|
$this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly']));
|
||||||
|
@ -89,6 +93,7 @@ private function initialize()
|
||||||
$this->tpl->assign('feed_type', $this->conf->get('feed.show_atom', true) !== false ? 'atom' : 'rss');
|
$this->tpl->assign('feed_type', $this->conf->get('feed.show_atom', true) !== false ? 'atom' : 'rss');
|
||||||
$this->tpl->assign('hide_timestamps', $this->conf->get('privacy.hide_timestamps', false));
|
$this->tpl->assign('hide_timestamps', $this->conf->get('privacy.hide_timestamps', false));
|
||||||
$this->tpl->assign('token', getToken($this->conf));
|
$this->tpl->assign('token', getToken($this->conf));
|
||||||
|
|
||||||
if ($this->linkDB !== null) {
|
if ($this->linkDB !== null) {
|
||||||
$this->tpl->assign('tags', $this->linkDB->linksCountPerTag());
|
$this->tpl->assign('tags', $this->linkDB->linksCountPerTag());
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,7 +398,7 @@ public function updateMethodAtomDefault()
|
||||||
*/
|
*/
|
||||||
public function updateMethodCheckUpdateRemoteBranch()
|
public function updateMethodCheckUpdateRemoteBranch()
|
||||||
{
|
{
|
||||||
if (shaarli_version === 'dev' || $this->conf->get('updates.check_updates_branch') === 'latest') {
|
if (SHAARLI_VERSION === 'dev' || $this->conf->get('updates.check_updates_branch') === 'latest') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,7 +413,7 @@ public function updateMethodCheckUpdateRemoteBranch()
|
||||||
$latestMajor = $matches[1];
|
$latestMajor = $matches[1];
|
||||||
|
|
||||||
// Get current major version digit
|
// Get current major version digit
|
||||||
preg_match('/(\d+)\.\d+$/', shaarli_version, $matches);
|
preg_match('/(\d+)\.\d+$/', SHAARLI_VERSION, $matches);
|
||||||
$currentMajor = $matches[1];
|
$currentMajor = $matches[1];
|
||||||
|
|
||||||
if ($currentMajor === $latestMajor) {
|
if ($currentMajor === $latestMajor) {
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
define('shaarli_version', ApplicationUtils::getVersion(__DIR__ .'/'. ApplicationUtils::$VERSION_FILE));
|
define('SHAARLI_VERSION', ApplicationUtils::getVersion(__DIR__ .'/'. ApplicationUtils::$VERSION_FILE));
|
||||||
|
|
||||||
// Force cookie path (but do not change lifetime)
|
// Force cookie path (but do not change lifetime)
|
||||||
$cookie = session_get_cookie_params();
|
$cookie = session_get_cookie_params();
|
||||||
|
|
|
@ -5,16 +5,16 @@
|
||||||
<link rel="alternate" type="application/atom+xml" href="{$feedurl}?do=atom{$searchcrits}#" title="ATOM Feed" />
|
<link rel="alternate" type="application/atom+xml" href="{$feedurl}?do=atom{$searchcrits}#" title="ATOM Feed" />
|
||||||
<link rel="alternate" type="application/rss+xml" href="{$feedurl}?do=rss{$searchcrits}#" title="RSS Feed" />
|
<link rel="alternate" type="application/rss+xml" href="{$feedurl}?do=rss{$searchcrits}#" title="RSS Feed" />
|
||||||
<link href="img/favicon.png" rel="shortcut icon" type="image/png" />
|
<link href="img/favicon.png" rel="shortcut icon" type="image/png" />
|
||||||
<link type="text/css" rel="stylesheet" href="css/pure.min.css" />
|
<link type="text/css" rel="stylesheet" href="css/pure.min.css?v={$version_hash}" />
|
||||||
<link type="text/css" rel="stylesheet" href="css/grids-responsive.min.css">
|
<link type="text/css" rel="stylesheet" href="css/grids-responsive.min.css?v={$version_hash}">
|
||||||
<link type="text/css" rel="stylesheet" href="css/pure-extras.css">
|
<link type="text/css" rel="stylesheet" href="css/pure-extras.css?v={$version_hash}">
|
||||||
<link type="text/css" rel="stylesheet" href="css/font-awesome.min.css" />
|
<link type="text/css" rel="stylesheet" href="css/font-awesome.min.css?v={$version_hash}" />
|
||||||
<link type="text/css" rel="stylesheet" href="inc/awesomplete.css#" />
|
<link type="text/css" rel="stylesheet" href="inc/awesomplete.css?v={$version_hash}#" />
|
||||||
<link type="text/css" rel="stylesheet" href="css/shaarli.css" />
|
<link type="text/css" rel="stylesheet" href="css/shaarli.css?v={$version_hash}" />
|
||||||
{if="is_file('data/user.css')"}
|
{if="is_file('data/user.css')"}
|
||||||
<link type="text/css" rel="stylesheet" href="data/user.css#" />
|
<link type="text/css" rel="stylesheet" href="data/user.css#" />
|
||||||
{/if}
|
{/if}
|
||||||
{loop="$plugins_includes.css_files"}
|
{loop="$plugins_includes.css_files"}
|
||||||
<link type="text/css" rel="stylesheet" href="{$value}#"/>
|
<link type="text/css" rel="stylesheet" href="{$value}?v={$version_hash}#"/>
|
||||||
{/loop}
|
{/loop}
|
||||||
<link rel="search" type="application/opensearchdescription+xml" href="?do=opensearch#" title="Shaarli search - {$shaarlititle}"/>
|
<link rel="search" type="application/opensearchdescription+xml" href="?do=opensearch#" title="Shaarli search - {$shaarlititle}"/>
|
|
@ -27,6 +27,6 @@
|
||||||
<script src="{$value}#"></script>
|
<script src="{$value}#"></script>
|
||||||
{/loop}
|
{/loop}
|
||||||
|
|
||||||
<script src="js/shaarli.js"></script>
|
<script src="js/shaarli.js?v={$version_hash}"></script>
|
||||||
<script src="inc/awesomplete.js#"></script>
|
<script src="inc/awesomplete.js?v={$version_hash}#"></script>
|
||||||
<script src="inc/awesomplete-multiple-tags.js#"></script>
|
<script src="inc/awesomplete-multiple-tags.js?v={$version_hash}#"></script>
|
||||||
|
|
Loading…
Reference in a new issue