mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 20:58:31 +08:00 
			
		
		
		
	Update 4 files
- /_layouts/default.html - /_layouts/post.html - /js/main.js - /_posts/2024-10-01-suggest.md
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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">
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ function getSearchJSON(callback) {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
  做好这个之后就可以做文章推荐的功能了,不过文章推荐应不应该加载完页面就加载呢?其实我测了一下Vectorize数据库的查询速度,不算很慢,但还是需要时间,另外免费版我看了下额度是每月3000万个查询的向量维度,这个其实我没看太懂😂。另外Cloudflare不知道为什么没有展示免费版剩余的额度,而且它是按月计算的,导致我不敢乱用这个查询。所以我想了一下还是给个按钮来调用吧。最终调用的函数如下:   
 | 
			
		||||
  做好这个之后就可以做文章推荐的功能了,不过文章推荐应不应该加载完页面就加载呢?其实我测了一下Vectorize数据库的查询速度,不算很慢,但还是需要时间,另外免费版我看了下额度是每月3000万个查询的向量维度,这个其实我没看太懂😂。另外Cloudflare不知道为什么没有展示免费版剩余的额度,而且它是按月计算的,导致我不敢乱用这个查询。 ~~所以我想了一下还是给个按钮来调用吧~~ (后来想了一下干脆直接调用然后加个缓存吧,毕竟我文章不变推荐也不会变)。最终调用的函数如下:   
 | 
			
		||||
```javascript
 | 
			
		||||
function getSuggestBlog(blogurl) {
 | 
			
		||||
    var suggest = $("#suggest-container")[0];
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								js/main.js
									
									
									
									
									
								
							
							
						
						
									
										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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user