|
|
@@ -655,10 +655,13 @@ class PaliContentService
|
|
|
$level = $this->paragraphLevel($book, $para);
|
|
|
// 缓存句子,段落外壳与标题级别有关,不进缓存
|
|
|
$key = self::paragraphCacheKey($book, $para, $channelUid, $format);
|
|
|
- $cached = Cache::tags([self::paragraphCacheTag($book, $para, $channelUid)])
|
|
|
- ->rememberForever($key, function () use ($book, $para, $channelUid, $format) {
|
|
|
+ $cached = Cache::remember(
|
|
|
+ $key,
|
|
|
+ config('mint.cache.expire'),
|
|
|
+ function () use ($book, $para, $channelUid, $format) {
|
|
|
return $this->renderReadSentences($book, $para, $channelUid, $format);
|
|
|
- });
|
|
|
+ }
|
|
|
+ );
|
|
|
|
|
|
$result = [
|
|
|
'para' => $para,
|
|
|
@@ -673,7 +676,7 @@ class PaliContentService
|
|
|
// html 格式加段落外壳
|
|
|
$content = implode('', $cached['display']);
|
|
|
$inner = $level > 0 ? "<h{$level}>{$content}</h{$level}>" : "<div class='para-block'>{$content}</div>";
|
|
|
- $result['display'] = "<div class='{$cached['area']}' data-para='{$para}'>{$inner}</div>";
|
|
|
+ $result['display'] = "<div id='para-{$para}' class='{$cached['area']}' data-para='{$para}'>{$inner}</div>";
|
|
|
} else {
|
|
|
// 其他格式一行一句
|
|
|
$result['display'] = implode("\n", $cached['display']);
|
|
|
@@ -696,19 +699,18 @@ class PaliContentService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 段落阅读模式缓存的 key
|
|
|
+ * 阅读模式支持的全部格式。forgetParagraph 需要逐格式清除缓存 key。
|
|
|
+ *
|
|
|
+ * @var array<int, string>
|
|
|
*/
|
|
|
- public static function paragraphCacheKey(int $book, int $para, string $channelUid, string $format): string
|
|
|
- {
|
|
|
- return "/read-para/{$book}-{$para}/{$channelUid}/{$format}";
|
|
|
- }
|
|
|
+ private const FORMATS = ['html', 'markdown', 'react', 'text'];
|
|
|
|
|
|
/**
|
|
|
- * 段落缓存的 tag。一个段落一个 channel 的全部格式共用一个 tag
|
|
|
+ * 段落阅读模式缓存的 key
|
|
|
*/
|
|
|
- public static function paragraphCacheTag(int $book, int $para, string $channelUid): string
|
|
|
+ public static function paragraphCacheKey(int $book, int $para, string $channelUid, string $format): string
|
|
|
{
|
|
|
- return "read-para:{$book}-{$para}:{$channelUid}";
|
|
|
+ return "/read-para/{$book}-{$para}/{$channelUid}/{$format}";
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -716,7 +718,9 @@ class PaliContentService
|
|
|
*/
|
|
|
public static function forgetParagraph(int $book, int $para, string $channelUid): void
|
|
|
{
|
|
|
- Cache::tags([self::paragraphCacheTag($book, $para, $channelUid)])->flush();
|
|
|
+ foreach (self::FORMATS as $format) {
|
|
|
+ Cache::forget(self::paragraphCacheKey($book, $para, $channelUid, $format));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|