為了防止資料庫壓力過大,我們開發時會對一些請求比較頻繁的介面資料進行快取,快取肯定需要key。下面寫三種我們可能用到key。做一個簡單基類的封裝.
第一種: 請求快取key
參考文章:Laravel 快取花樣耍(其實就是照抄,小姐姐寫的很好)
這個是我們經常會用到的.
採用url+引數,這樣就可以讓攜帶引數的url,比如分頁都有自己唯一的key值
/**
* 獲取當前請求的快取key
* @return string
*/
public function getCacheKey()
{
$url = request()->url();
$params = request()->query();
$string = '';
if (!empty($params)) {
// 防止引數順序不同生成重複快取
ksort($params);
$string = http_build_query($params);
}
$fullUrl = "{$url}?{$string}";
return sha1($fullUrl);
}
第二種:需要對當前使用者請求路由進行加鎖的key
一些介面需要進行加鎖,比如防止使用者重複提交表單.
原來laravel也實現了,是針對ip進行獲取.
/**
* 對當前使用者進行加鎖的key
* @return string
*/
public function getUniqueLockKey()
{
return request()->fingerprint();
}
第三種:對當前路由進行加鎖的key
一般不會用到,對當前方法進行加鎖的key,每次只允許一個使用者請求
/**
* 對當前方法進行加鎖的key
* @return string
*/
public function getLockKey()
{
$fullUrl = request()->fullUrl();
return sha1($fullUrl);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結