Browse Source

Update 4 files

- /_layouts/default.html
- /_layouts/post.html
- /js/main.js
- /_posts/2024-10-01-suggest.md
mayx 1 year ago
parent
commit
443d65ac50
4 changed files with 28 additions and 28 deletions
  1. 2 2
      _layouts/default.html
  2. 25 1
      _layouts/post.html
  3. 1 1
      _posts/2024-10-01-suggest.md
  4. 0 24
      js/main.js

+ 2 - 2
_layouts/default.html

@@ -28,11 +28,11 @@
   gtag('config', '{{ site.google_analytics }}');
   var lastUpdated = new Date("{{ site.time | date: "%FT%T%z" }}");
   function getSearchJSON(callback) {
-    var searchData = JSON.parse(localStorage.getItem(lastUpdated));
+    var searchData = JSON.parse(localStorage.getItem("blog_" + lastUpdated.valueOf()));
     if (!searchData) {
       localStorage.clear();
       $.getJSON("/search.json", function (data) {
-          localStorage.setItem(lastUpdated, JSON.stringify(data));
+          localStorage.setItem("blog_" + lastUpdated.valueOf(), JSON.stringify(data));
           callback(data);
       });
     } else {

+ 25 - 1
_layouts/post.html

@@ -82,7 +82,31 @@ layout: default
 {% endif %}
 <br />
 <br />
-<p id="suggest-container"><button onclick="getSuggestBlog('{{ page.url }}')">查看推荐文章</button></p>
+<p id="suggest-container"></p>
+<script>
+var blogurl = "{{ page.url }}";
+var suggest = $("#suggest-container")[0];
+suggest.innerHTML = "Loading...";
+$.get(BlogAPI + "/suggest?id=" + blogurl + "&update=" + lastUpdated.valueOf(), function (data) {
+    if (data.length) {
+        getSearchJSON(function (search) {
+            suggest.innerHTML = '<b>推荐文章</b><hr style="margin: 0 0 5px"/>';
+            const searchMap = new Map(search.map(item => [item.url, item]));
+            const merged = data.map(suggestObj => {
+                const searchObj = searchMap.get(suggestObj.id);
+                return searchObj ? { ...searchObj } : null;
+            });
+            merged.forEach(element => {
+                if (element) {
+                    suggest.innerHTML += "<a href=" + element.url + ">" + element.title + "</a> - " + element.date + "<br />";
+                }
+            });
+        });
+    } else {
+        suggest.innerHTML = "暂无推荐文章……";
+    }
+});
+</script>
 <div class="pagination">
   {% if page.previous.url %}
   <span class="prev">

+ 1 - 1
_posts/2024-10-01-suggest.md

@@ -49,7 +49,7 @@ function getSearchJSON(callback) {
   }
 }
 ```
-  做好这个之后就可以做文章推荐的功能了,不过文章推荐应不应该加载完页面就加载呢?其实我测了一下Vectorize数据库的查询速度,不算很慢,但还是需要时间,另外免费版我看了下额度是每月3000万个查询的向量维度,这个其实我没看太懂😂。另外Cloudflare不知道为什么没有展示免费版剩余的额度,而且它是按月计算的,导致我不敢乱用这个查询。所以我想了一下还是给个按钮来调用吧。最终调用的函数如下:   
+  做好这个之后就可以做文章推荐的功能了,不过文章推荐应不应该加载完页面就加载呢?其实我测了一下Vectorize数据库的查询速度,不算很慢,但还是需要时间,另外免费版我看了下额度是每月3000万个查询的向量维度,这个其实我没看太懂😂。另外Cloudflare不知道为什么没有展示免费版剩余的额度,而且它是按月计算的,导致我不敢乱用这个查询。 ~~所以我想了一下还是给个按钮来调用吧~~ (后来想了一下干脆直接调用然后加个缓存吧,毕竟我文章不变推荐也不会变)。最终调用的函数如下:   
 ```javascript
 function getSuggestBlog(blogurl) {
     var suggest = $("#suggest-container")[0];

+ 0 - 24
js/main.js

@@ -42,30 +42,6 @@ $(function () {
     }
 });
 
-function getSuggestBlog(blogurl) {
-    var suggest = $("#suggest-container")[0];
-    suggest.innerHTML = "Loading...";
-    $.get(BlogAPI + "/suggest?id=" + blogurl, function (data) {
-        if (data.length) {
-            getSearchJSON(function (search) {
-                suggest.innerHTML = '<b>推荐文章</b><hr style="margin: 0 0 5px"/>';
-                const searchMap = new Map(search.map(item => [item.url, item]));
-                const merged = data.map(suggestObj => {
-                    const searchObj = searchMap.get(suggestObj.id);
-                    return searchObj ? { ...searchObj } : null;
-                });
-                merged.forEach(element => {
-                    if (element) {
-                        suggest.innerHTML += "<a href=" + element.url + ">" + element.title + "</a> - " + element.date + "<br />";
-                    }
-                });
-            });
-        } else {
-            suggest.innerHTML = "暂无推荐文章……";
-        }
-    });
-}
-
 today = new Date();
 timeold = (today.getTime() - lastUpdated.getTime());
 secondsold = Math.floor(timeold / 1000);