Skip to content

Commit d47169b

Browse files
committed
侧边栏缓存优化
1 parent 49ee385 commit d47169b

File tree

7 files changed

+92
-124
lines changed

7 files changed

+92
-124
lines changed

blog/templatetags/blog_tags.py

Lines changed: 53 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
from django.urls import reverse
1212
from django.utils.safestring import mark_safe
1313

14-
from djangoblog.utils import cache
15-
from djangoblog.utils import get_current_site
1614
from blog.models import Article, Category, Tag, Links, SideBar, LinkShowType
1715
from comments.models import Comment
16+
from djangoblog.utils import cache
17+
from djangoblog.utils import get_current_site
1818
from oauth.models import OAuthUser
1919

2020
logger = logging.getLogger(__name__)
@@ -26,8 +26,6 @@
2626
def timeformat(data):
2727
try:
2828
return data.strftime(settings.TIME_FORMAT)
29-
# print(data.strftime(settings.TIME_FORMAT))
30-
# return "ddd"
3129
except Exception as e:
3230
logger.error(e)
3331
return ""
@@ -125,50 +123,57 @@ def load_sidebar(user, linktype):
125123
加载侧边栏
126124
:return:
127125
"""
128-
logger.info('load sidebar')
129-
from djangoblog.utils import get_blog_setting
130-
blogsetting = get_blog_setting()
131-
recent_articles = Article.objects.filter(
132-
status='p')[:blogsetting.sidebar_article_count]
133-
sidebar_categorys = Category.objects.all()
134-
extra_sidebars = SideBar.objects.filter(
135-
is_enable=True).order_by('sequence')
136-
most_read_articles = Article.objects.filter(status='p').order_by(
137-
'-views')[:blogsetting.sidebar_article_count]
138-
dates = Article.objects.datetimes('created_time', 'month', order='DESC')
139-
links = Links.objects.filter(is_enable=True).filter(
140-
Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A))
141-
commment_list = Comment.objects.filter(is_enable=True).order_by(
142-
'-id')[:blogsetting.sidebar_comment_count]
143-
# 标签云 计算字体大小
144-
# 根据总数计算出平均值 大小为 (数目/平均值)*步长
145-
increment = 5
146-
tags = Tag.objects.all()
147-
sidebar_tags = None
148-
if tags and len(tags) > 0:
149-
s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]]
150-
count = sum([t[1] for t in s])
151-
dd = 1 if (count == 0 or not len(tags)) else count / len(tags)
152-
import random
153-
sidebar_tags = list(
154-
map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s))
155-
random.shuffle(sidebar_tags)
156-
157-
return {
158-
'recent_articles': recent_articles,
159-
'sidebar_categorys': sidebar_categorys,
160-
'most_read_articles': most_read_articles,
161-
'article_dates': dates,
162-
'sidebar_comments': commment_list,
163-
'user': user,
164-
'sidabar_links': links,
165-
'show_google_adsense': blogsetting.show_google_adsense,
166-
'google_adsense_codes': blogsetting.google_adsense_codes,
167-
'open_site_comment': blogsetting.open_site_comment,
168-
'show_gongan_code': blogsetting.show_gongan_code,
169-
'sidebar_tags': sidebar_tags,
170-
'extra_sidebars': extra_sidebars
171-
}
126+
value = cache.get("sidebar" + linktype)
127+
if value:
128+
value['user'] = user
129+
return value
130+
else:
131+
logger.info('load sidebar')
132+
from djangoblog.utils import get_blog_setting
133+
blogsetting = get_blog_setting()
134+
recent_articles = Article.objects.filter(
135+
status='p')[:blogsetting.sidebar_article_count]
136+
sidebar_categorys = Category.objects.all()
137+
extra_sidebars = SideBar.objects.filter(
138+
is_enable=True).order_by('sequence')
139+
most_read_articles = Article.objects.filter(status='p').order_by(
140+
'-views')[:blogsetting.sidebar_article_count]
141+
dates = Article.objects.datetimes('created_time', 'month', order='DESC')
142+
links = Links.objects.filter(is_enable=True).filter(
143+
Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A))
144+
commment_list = Comment.objects.filter(is_enable=True).order_by(
145+
'-id')[:blogsetting.sidebar_comment_count]
146+
# 标签云 计算字体大小
147+
# 根据总数计算出平均值 大小为 (数目/平均值)*步长
148+
increment = 5
149+
tags = Tag.objects.all()
150+
sidebar_tags = None
151+
if tags and len(tags) > 0:
152+
s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]]
153+
count = sum([t[1] for t in s])
154+
dd = 1 if (count == 0 or not len(tags)) else count / len(tags)
155+
import random
156+
sidebar_tags = list(
157+
map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s))
158+
random.shuffle(sidebar_tags)
159+
160+
value = {
161+
'recent_articles': recent_articles,
162+
'sidebar_categorys': sidebar_categorys,
163+
'most_read_articles': most_read_articles,
164+
'article_dates': dates,
165+
'sidebar_comments': commment_list,
166+
'sidabar_links': links,
167+
'show_google_adsense': blogsetting.show_google_adsense,
168+
'google_adsense_codes': blogsetting.google_adsense_codes,
169+
'open_site_comment': blogsetting.open_site_comment,
170+
'show_gongan_code': blogsetting.show_gongan_code,
171+
'sidebar_tags': sidebar_tags,
172+
'extra_sidebars': extra_sidebars
173+
}
174+
cache.set("sidebar" + linktype, value, 60 * 60 * 60 * 3)
175+
value['user'] = user
176+
return value
172177

173178

174179
@register.inclusion_tag('blog/tags/article_meta_info.html')

djangoblog/utils.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,14 @@ def save_user_avatar(url):
177177
'''
178178
setting = get_blog_setting()
179179
logger.info(url)
180+
180181
try:
181182
imgname = url.split('/')[-1]
182183
if imgname:
183184
path = r'{basedir}/avatar/{img}'.format(
184185
basedir=setting.resource_path, img=imgname)
185186
if os.path.exists(path):
186187
os.remove(path)
187-
except BaseException:
188-
pass
189-
try:
190188
rsp = requests.get(url, timeout=2)
191189
if rsp.status_code == 200:
192190
basepath = r'{basedir}/avatar/'.format(
@@ -208,11 +206,8 @@ def save_user_avatar(url):
208206

209207

210208
def delete_sidebar_cache():
211-
from django.core.cache.utils import make_template_fragment_key
212209
from blog.models import LinkShowType
213-
keys = (
214-
make_template_fragment_key(
215-
'sidebar', ["sidebar" + x]) for x in LinkShowType.values)
210+
keys = ["sidebar" + x for x in LinkShowType.values]
216211
for k in keys:
217212
logger.info('delete sidebar key:' + k)
218213
cache.delete(k)

templates/blog/article_detail.html

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% extends 'share_layout/base.html' %}
22
{% load blog_tags %}
3-
{% load cache %}
3+
44
{% block header %}
55
<title>{{ article.title }} | {{ SITE_DESCRIPTION }}</title>
66
<meta property="og:type" content="article"/>
@@ -72,30 +72,5 @@ <h3 class="comment-meta">您还没有登录,请您<a
7272
{% endblock %}
7373

7474
{% block sidebar %}
75-
{% with "sidear"|addstr:"p" as cachekey %}
76-
{% cache 36000 sidebar cachekey %}
77-
{% load_sidebar user "p" %}
78-
{% endcache %}
79-
{% endwith %}
80-
<div class="widget-area" role="complementary">
81-
<aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">功能</h3>
82-
<ul>
83-
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
84-
{% if user.is_authenticated %}
85-
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
86-
</li>
87-
88-
{% else %}
89-
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
90-
{% endif %}
91-
{% if user.is_superuser %}
92-
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
93-
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
94-
{% endif %}
95-
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
96-
</ul>
97-
</aside>
98-
<div id="rocket" class="show" title="点我返回顶部"></div>
99-
</div><!-- #secondary -->
100-
75+
{% load_sidebar user "p" %}
10176
{% endblock %}

templates/blog/article_index.html

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -38,30 +38,5 @@
3838

3939
{% endblock %}
4040
{% block sidebar %}
41-
{% with "sidear"|addstr:linktype as cachekey %}
42-
{% cache 36000 sidebar cachekey %}
43-
{% load_sidebar user linktype %}
44-
{% endcache %}
45-
{% endwith %}
46-
<div class="widget-area" role="complementary">
47-
<aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">功能</h3>
48-
<ul>
49-
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
50-
{% if user.is_authenticated %}
51-
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
52-
</li>
53-
54-
{% else %}
55-
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
56-
{% endif %}
57-
{% if user.is_superuser %}
58-
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
59-
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
60-
{% endif %}
61-
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
62-
</ul>
63-
</aside>
64-
<div id="rocket" class="show" title="点我返回顶部"></div>
65-
</div><!-- #secondary -->
66-
41+
{% load_sidebar user linktype %}
6742
{% endblock %}

templates/blog/tags/sidebar.html

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
{% if extra_sidebars %}
1313
{% for sidebar in extra_sidebars %}
1414

15-
<aside class="widget_text widget widget_custom_html"><h3 class="widget-title">
16-
{{ sidebar.name }}</h3>
15+
<aside class="widget_text widget widget_custom_html"><p class="widget-title">
16+
{{ sidebar.name }}</p>
1717
<div class="textwidget custom-html-widget">
1818
{{ sidebar.content|custom_markdown }}
1919
</div>
@@ -22,7 +22,7 @@
2222
{% endif %}
2323
{% if most_read_articles %}
2424

25-
<aside id="views-4" class="widget widget_views"><h3 class="widget-title">Views</h3>
25+
<aside id="views-4" class="widget widget_views"><p class="widget-title">Views</p>
2626
<ul>
2727
{% for a in most_read_articles %}
2828
<li>
@@ -36,7 +36,7 @@
3636
</aside>
3737
{% endif %}
3838
{% if sidebar_categorys %}
39-
<aside id="su_siloed_terms-2" class="widget widget_su_siloed_terms"><h3 class="widget-title">分类目录</h3>
39+
<aside id="su_siloed_terms-2" class="widget widget_su_siloed_terms"><p class="widget-title">分类目录</p>
4040
<ul>
4141
{% for c in sidebar_categorys %}
4242
<li class="cat-item cat-item-184"><a href={{ c.get_absolute_url }}>{{ c.name }}</a>
@@ -46,7 +46,7 @@
4646
</aside>
4747
{% endif %}
4848
{% if sidebar_comments and open_site_comment %}
49-
<aside id="ds-recent-comments-4" class="widget ds-widget-recent-comments"><h3 class="widget-title">近期评论</h3>
49+
<aside id="ds-recent-comments-4" class="widget ds-widget-recent-comments"><p class="widget-title">近期评论</p>
5050
{% comment %}<ul class="ds-recent-comments" data-num-items="5" data-show-avatars="1" data-show-time="1"
5151
data-show-title="1" data-show-admin="1" data-avatar-size="30" data-excerpt-length="70"></ul>{% endcomment %}
5252
<ul id="recentcomments">
@@ -62,7 +62,7 @@
6262
</aside>
6363
{% endif %}
6464
{% if recent_articles %}
65-
<aside id="recent-posts-2" class="widget widget_recent_entries"><h3 class="widget-title">近期文章</h3>
65+
<aside id="recent-posts-2" class="widget widget_recent_entries"><p class="widget-title">近期文章</p>
6666
<ul>
6767

6868
{% for a in recent_articles %}
@@ -74,7 +74,7 @@
7474
</aside>
7575
{% endif %}
7676
{% if sidabar_links %}
77-
<aside id="linkcat-0" class="widget widget_links"><h3 class="widget-title">书签</h3>
77+
<aside id="linkcat-0" class="widget widget_links"><p class="widget-title">书签</p>
7878
<ul class='xoxo blogroll'>
7979
{% for l in sidabar_links %}
8080
<li>
@@ -86,14 +86,14 @@
8686
</aside>
8787
{% endif %}
8888
{% if show_google_adsense %}
89-
<aside id="text-2" class="widget widget_text"><h3 class="widget-title">Google AdSense</h3>
89+
<aside id="text-2" class="widget widget_text"><p class="widget-title">Google AdSense</p>
9090
<div class="textwidget">
9191
{{ google_adsense_codes|safe }}
9292
</div>
9393
</aside>
9494
{% endif %}
9595
{% if sidebar_tags %}
96-
<aside id="tag_cloud-2" class="widget widget_tag_cloud"><h3 class="widget-title">标签云</h3>
96+
<aside id="tag_cloud-2" class="widget widget_tag_cloud"><p class="widget-title">标签云</p>
9797
<div class="tagcloud">
9898
{% for tag,count,size in sidebar_tags %}
9999
<a href="{{ tag.get_absolute_url }}"
@@ -104,7 +104,7 @@
104104
</div>
105105
</aside>
106106
{% endif %}
107-
<aside id="text-2" class="widget widget_text"><h3 class="widget-title">欢迎您star或者fork本站源代码</h3>
107+
<aside id="text-2" class="widget widget_text"><p class="widget-title">欢迎您star或者fork本站源代码</p>
108108
<div class="textwidget">
109109

110110
<p><a href="https://github.com/liangliangyy/DjangoBlog" rel="nofollow"><img
@@ -115,5 +115,23 @@
115115
</div>
116116
</aside>
117117

118+
<aside id="meta-3" class="widget widget_meta"><p class="widget-title">功能</p>
119+
<ul>
120+
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
121+
{% if user.is_authenticated %}
122+
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
123+
</li>
124+
125+
{% else %}
126+
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
127+
{% endif %}
128+
{% if user.is_superuser %}
129+
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
130+
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
131+
{% endif %}
132+
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
133+
</ul>
134+
</aside>
135+
118136
<div id="rocket" class="show" title="点我返回顶部"></div>
119137
</div><!-- #secondary -->

templates/comments/tags/comment_item.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<div>回复给:@{{ comment_item.author.parent_comment.username }}</div>
2626
</div>
2727

28-
<p>{{ comment_item.body |escape|custom_markdown }}</p>
28+
<p>{{ comment_item.body |custom_markdown }}</p>
2929

3030
<div class="reply"><a rel="nofollow" class="comment-reply-link"
3131
href="javascript:void(0)"

templates/comments/tags/comment_item_tree.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@
2626
</div>
2727
<p>
2828
{% if comment_item.parent_comment %}
29-
<div>回复 <a
30-
href="#comment-{{ comment_item.parent_comment.pk }}">@{{ comment_item.parent_comment.author.username }}</a>
31-
</div>
32-
{% endif %}
29+
<div>回复 <a
30+
href="#comment-{{ comment_item.parent_comment.pk }}">@{{ comment_item.parent_comment.author.username }}</a>
31+
</div>
32+
{% endif %}
3333
</p>
34-
<p>{{ comment_item.body |escape|custom_markdown }}</p>
34+
<p>{{ comment_item.body|custom_markdown }}</p>
3535

3636
<div class="reply"><a rel="nofollow" class="comment-reply-link"
3737
href="javascript:void(0)"

0 commit comments

Comments
 (0)