在Laravel,我們可以存儲緩存,這一點:Laravel 4清除所有過期的緩存
Cache::put($dynamickey, 'value', $minutes);
但這最終會是過期甚至在越來越多的緩存文件存儲。如果我們用php artisan cache:clear
或Cache::flush();
進行清潔時,它會清除所有緩存,包括那些仍然有效。
是否有可能具備自動清理,將清除過期只緩存?謝謝。
在Laravel,我們可以存儲緩存,這一點:Laravel 4清除所有過期的緩存
Cache::put($dynamickey, 'value', $minutes);
但這最終會是過期甚至在越來越多的緩存文件存儲。如果我們用php artisan cache:clear
或Cache::flush();
進行清潔時,它會清除所有緩存,包括那些仍然有效。
是否有可能具備自動清理,將清除過期只緩存?謝謝。
$value = Cache::remember('users', function()
{
return DB::table('users')->get();
});
做的工作。它驗證具有給定密鑰的緩存是否存在並返回其值。它不存在或過期,然後使用新值刷新給定緩存鍵。
對於圖像緩存我使用邏輯一樣:
然後
如果(緩存::有($ cacheKey_name)& &緩存::有($ cacheKey_content)!) { 緩存::忘記($ cacheKey_name); 緩存::忘記($ cacheKey_content); }
它會檢查圖像是否緩存,只有內容改變。如果是,則刪除舊緩存並緩存新圖像(使用新內容)。有了這個邏輯,你將有永遠是新鮮的圖像內容(與覆蓋圖像)。或者,您可以隨時創建工匠任務並創建Controller以檢查存儲目錄中的所有緩存數據,然後創建Cron Task。
,你可以創建一個這樣
function cache($key,$value,$min){
(Cache::has($key))?Cache::put($key,$value,$min):Cache::add($key,$value,$min);
if(Cache::has('caches')){
$cache=Cache::get('caches');
$cache[time()+(60*$min)]=$key;
Cache::forget('caches');
Cache::rememberForever('caches',function() use($cache){
return $cache;
});
}else{
$cache[time()+(60*$min)]=$key;
Cache::rememberForever('caches',function() use($cache){
return $cache;
});
}
$cache=Cache::get('caches');
foreach($cache as $key=>$value)
{
if($key<time())
{
Cache::forget($value);
array_forget($cache, $key);
}
}
Cache::forget('caches');
Cache::rememberForever('caches',function() use($cache){
return $cache;
});}
的功能,並刪除該緩存空文件夾,你可以將此代碼
public function forget($key)
{
$file = $this->path($key);
if ($this->files->exists($file))
{
$this->files->delete($file);
附加後的線路182 編輯
vendor\laravel\framework\src\Illuminate\Cache\FileStore.php
一個刪除所有空文件夾的功能,如打擊代碼
public function forget($key)
{
$file = $this->path($key);
if ($this->files->exists($file))
{
$this->files->delete($file);
RemoveEmptySubFolders($this->getDirectory());
使用此功能,你可以看到它 Remove empty subfolders with PHP
你應該考慮類似的memcached或Redis的爲。 – ceejayoz
爲什麼你不讓它過期?之後這些文件將被刪除。 – awei