删除快取 Delete Cache

程式 Code: 删除快取 Delete Cache

我们设定了快取希望使用者存取资料的时候能够加快回应时间,但资料可能会因为使用者的删除修改而产生了异动,若我们需要让使用者能够读取到最新的资料,我们通常会手动的将快取删除,让使用者下次读取的话能够去资料库读取到最新的资料,在重新设定一次新的快取资料。

以部落格文章快取为例

更新部落格文章资料

<?php

// 快取 key 依照不同的文章编号,可以是 blog_post:1 或 blog_post:2
$cache_key = 'blog_post:' . $post_id;

$results = DB::update('UPDATE `posts` SET `content`= ? WHERE `post_id` = ?', [$new_content, $post_id]);

if ($result) {
  // 选择1: 直接设定文章快取,让下一位使用者再次存取相同文章时可直接取用快取
  Cache::put($cache_key, $new_content, $cache_minutes);

  // 选择2: 删除快取,等下一位使用者读取文章时在去设定快取
  Cache::forget($cache_key);
}

return $result;

删除部落格文章资料

<?php

// 快取 key 依照不同的文章编号,可以是 blog_post:1 或 blog_post:2
$cache_key = 'blog_post:' . $post_id;

$results = DB::delete('DELETE FROM `posts` WHERE `post_id` = ?', [$post_id]);

if ($result) {
  // 删除快取,让下一位使用者不要再读取已被删除的文章
  Cache::forget($cache_key);
}

return $result;