Jelajahi Sumber

fix:优化文档缓存策略,实现根据文档版本缓存
2、优化加载Markdown编辑器插件策略解决重复触发load方法BUG

lifei6671 7 tahun lalu
induk
melakukan
1ec965a2d1

+ 2 - 0
controllers/DocumentController.go

@@ -186,11 +186,13 @@ func (c *DocumentController) Read() {
 			Body     string `json:"body"`
 			Title    string `json:"title"`
 			DocInfo  string `json:"doc_info"`
+			Version  int64	`json:"version"`
 		}
 		data.DocTitle = doc.DocumentName
 		data.Body = doc.Release
 		data.Title = doc.DocumentName + " - Powered by MinDoc"
 		data.DocInfo = docInfo
+		data.Version = doc.Version
 
 		c.JsonResult(0, "ok", data)
 	}

+ 5 - 11
models/DocumentTree.go

@@ -4,10 +4,9 @@ import (
 	"bytes"
 	"html/template"
 	"math"
-	"strconv"
-
 	"github.com/astaxie/beego/orm"
 	"github.com/lifei6671/mindoc/conf"
+	"fmt"
 )
 
 type DocumentTree struct {
@@ -116,11 +115,7 @@ func getDocumentTree(array []*DocumentTree, parentId int, selectedId int, select
 			if item.DocumentId == selectedParentId || (item.State != nil && item.State.Opened) {
 				selectedLi = ` class="jstree-open"`
 			}
-			buf.WriteString("<li id=\"")
-			buf.WriteString(strconv.Itoa(item.DocumentId))
-			buf.WriteString("\"")
-			buf.WriteString(selectedLi)
-			buf.WriteString("><a href=\"")
+			buf.WriteString(fmt.Sprintf("<li id=\"%d\"%s><a href=\"",item.DocumentId,selectedLi))
 			if item.Identify != "" {
 				uri := conf.URLFor("DocumentController.Read", ":key", item.BookIdentify, ":id", item.Identify)
 				buf.WriteString(uri)
@@ -128,10 +123,9 @@ func getDocumentTree(array []*DocumentTree, parentId int, selectedId int, select
 				uri := conf.URLFor("DocumentController.Read", ":key", item.BookIdentify, ":id", item.DocumentId)
 				buf.WriteString(uri)
 			}
-			buf.WriteString("\" title=\"")
-			buf.WriteString(template.HTMLEscapeString(item.DocumentName) + "\"")
-			buf.WriteString(selected + ">")
-			buf.WriteString(template.HTMLEscapeString(item.DocumentName) + "</a>")
+			buf.WriteString(fmt.Sprintf("\" title=\"%s\"",template.HTMLEscapeString(item.DocumentName)))
+			buf.WriteString(fmt.Sprintf(" data-version=\"%d\"%s>%s</a>",item.Version,selected,template.HTMLEscapeString(item.DocumentName)))
+
 
 			for _, sub := range array {
 				if p, ok := sub.ParentId.(int); ok && p == item.DocumentId {

File diff ditekan karena terlalu besar
+ 257 - 244
static/editor.md/editormd.js


+ 2 - 1
static/js/blog.js

@@ -42,8 +42,9 @@ $(function () {
             };
             this.addKeyMap(keyMap);
 
-
+            console.log("加载完成")
             uploadImage("docEditor", function ($state, $res) {
+                console.log("注册上传图片")
                 if ($state === "before") {
                     return layer.load(1, {
                         shade: [0.1, '#fff'] // 0.1 透明度的白色背景

+ 3 - 2
static/js/kancloud.js

@@ -73,8 +73,9 @@ function loadDocument($url, $id, $callback) {
             if(data) {
                 if (typeof $callback === "function") {
                     data.body = $callback(data.body);
+                }else if(data.version && data.version != $callback){
+                    return true;
                 }
-
                 $("#page-content").html(data.body);
                 $("title").text(data.title);
                 $("#article-title").text(data.doc_title);
@@ -172,7 +173,7 @@ $(function () {
         }
     }).on('select_node.jstree', function (node, selected, event) {
         $(".m-manual").removeClass('manual-mobile-show-left');
-        loadDocument(selected.node.a_attr.href, selected.node.id);
+        loadDocument(selected.node.a_attr.href, selected.node.id,selected.node.a_attr['data-version']);
     });
 
     $("#slidebar").on("click", function () {

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini