Help us learn about your current experience with the documentation. Take the survey.

Markdown 缓存

  • 版本:Free, Premium, Ultimate
  • 产品:GitLab Self-Managed

出于性能原因,GitLab 会缓存 Markdown 文本的 HTML 版本,这些字段包括:

  • 评论。
  • Issue 描述。
  • Merge request 描述。

external_url 配置选项等设置被更改时,这些缓存版本可能会过时。缓存文本中的链接届时仍会指向旧的 URL。

使缓存失效

您可以通过 API 或 Rails console 使 Markdown 缓存失效。

使用 API

前提条件:

  • 您必须拥有管理员权限。

要通过 API 使现有缓存失效:

  1. 通过发送 PUT 请求来增加应用设置中的 local_markdown_version 值:

    curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
      --url "https://gitlab.example.com/api/v4/application/settings?local_markdown_version=<increased_number>"

有关此 API 端点的更多信息,请参阅 更新应用设置

使用 Rails console

前提条件:

针对一个群组

要使某个群组的缓存失效:

  1. 启动 Rails console:

    sudo gitlab-rails console
  2. 查找要更新的群组:

    group = Group.find(<group_id>)
  3. 使该群组中所有项目的缓存失效:

    group.all_projects.each_slice(10) do |projects|
      projects.each do |project|
        # 使 issues 缓存失效
        project.issues.update_all(
          description_html: nil,
          title_html: nil
        )
    
        # 使 merge requests 缓存失效
        project.merge_requests.update_all(
          description_html: nil,
          title_html: nil
        )
    
        # 使 notes/comments 缓存失效
        project.notes.update_all(note_html: nil)
      end
    
      # 每更新 10 个项目后暂停一秒
      sleep 1
    end

针对一个项目

要使单个项目的缓存失效:

  1. 启动 Rails console:

    sudo gitlab-rails console
  2. 查找要更新的项目:

    project = Project.find(<project_id>)
  3. 使 issues 缓存失效:

    project.issues.update_all(
      description_html: nil,
      title_html: nil
    )
  4. 使 merge requests 缓存失效:

    project.merge_requests.update_all(
      description_html: nil,
      title_html: nil
    )
  5. 使 notes 和 comments 缓存失效:

    project.notes.update_all(note_html: nil)