侧边栏缓存优化

sh_branch
liangliangyy 4 years ago
parent 49ee385e90
commit d47169bbc3

@ -11,10 +11,10 @@ from django.template.defaultfilters import stringfilter
from django.urls import reverse
from django.utils.safestring import mark_safe
from djangoblog.utils import cache
from djangoblog.utils import get_current_site
from blog.models import Article, Category, Tag, Links, SideBar, LinkShowType
from comments.models import Comment
from djangoblog.utils import cache
from djangoblog.utils import get_current_site
from oauth.models import OAuthUser
logger = logging.getLogger(__name__)
@ -26,8 +26,6 @@ register = template.Library()
def timeformat(data):
try:
return data.strftime(settings.TIME_FORMAT)
# print(data.strftime(settings.TIME_FORMAT))
# return "ddd"
except Exception as e:
logger.error(e)
return ""
@ -125,50 +123,57 @@ def load_sidebar(user, linktype):
加载侧边栏
:return:
"""
logger.info('load sidebar')
from djangoblog.utils import get_blog_setting
blogsetting = get_blog_setting()
recent_articles = Article.objects.filter(
status='p')[:blogsetting.sidebar_article_count]
sidebar_categorys = Category.objects.all()
extra_sidebars = SideBar.objects.filter(
is_enable=True).order_by('sequence')
most_read_articles = Article.objects.filter(status='p').order_by(
'-views')[:blogsetting.sidebar_article_count]
dates = Article.objects.datetimes('created_time', 'month', order='DESC')
links = Links.objects.filter(is_enable=True).filter(
Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A))
commment_list = Comment.objects.filter(is_enable=True).order_by(
'-id')[:blogsetting.sidebar_comment_count]
# 标签云 计算字体大小
# 根据总数计算出平均值 大小为 (数目/平均值)*步长
increment = 5
tags = Tag.objects.all()
sidebar_tags = None
if tags and len(tags) > 0:
s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]]
count = sum([t[1] for t in s])
dd = 1 if (count == 0 or not len(tags)) else count / len(tags)
import random
sidebar_tags = list(
map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s))
random.shuffle(sidebar_tags)
return {
'recent_articles': recent_articles,
'sidebar_categorys': sidebar_categorys,
'most_read_articles': most_read_articles,
'article_dates': dates,
'sidebar_comments': commment_list,
'user': user,
'sidabar_links': links,
'show_google_adsense': blogsetting.show_google_adsense,
'google_adsense_codes': blogsetting.google_adsense_codes,
'open_site_comment': blogsetting.open_site_comment,
'show_gongan_code': blogsetting.show_gongan_code,
'sidebar_tags': sidebar_tags,
'extra_sidebars': extra_sidebars
}
value = cache.get("sidebar" + linktype)
if value:
value['user'] = user
return value
else:
logger.info('load sidebar')
from djangoblog.utils import get_blog_setting
blogsetting = get_blog_setting()
recent_articles = Article.objects.filter(
status='p')[:blogsetting.sidebar_article_count]
sidebar_categorys = Category.objects.all()
extra_sidebars = SideBar.objects.filter(
is_enable=True).order_by('sequence')
most_read_articles = Article.objects.filter(status='p').order_by(
'-views')[:blogsetting.sidebar_article_count]
dates = Article.objects.datetimes('created_time', 'month', order='DESC')
links = Links.objects.filter(is_enable=True).filter(
Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A))
commment_list = Comment.objects.filter(is_enable=True).order_by(
'-id')[:blogsetting.sidebar_comment_count]
# 标签云 计算字体大小
# 根据总数计算出平均值 大小为 (数目/平均值)*步长
increment = 5
tags = Tag.objects.all()
sidebar_tags = None
if tags and len(tags) > 0:
s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]]
count = sum([t[1] for t in s])
dd = 1 if (count == 0 or not len(tags)) else count / len(tags)
import random
sidebar_tags = list(
map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s))
random.shuffle(sidebar_tags)
value = {
'recent_articles': recent_articles,
'sidebar_categorys': sidebar_categorys,
'most_read_articles': most_read_articles,
'article_dates': dates,
'sidebar_comments': commment_list,
'sidabar_links': links,
'show_google_adsense': blogsetting.show_google_adsense,
'google_adsense_codes': blogsetting.google_adsense_codes,
'open_site_comment': blogsetting.open_site_comment,
'show_gongan_code': blogsetting.show_gongan_code,
'sidebar_tags': sidebar_tags,
'extra_sidebars': extra_sidebars
}
cache.set("sidebar" + linktype, value, 60 * 60 * 60 * 3)
value['user'] = user
return value
@register.inclusion_tag('blog/tags/article_meta_info.html')

@ -177,6 +177,7 @@ def save_user_avatar(url):
'''
setting = get_blog_setting()
logger.info(url)
try:
imgname = url.split('/')[-1]
if imgname:
@ -184,9 +185,6 @@ def save_user_avatar(url):
basedir=setting.resource_path, img=imgname)
if os.path.exists(path):
os.remove(path)
except BaseException:
pass
try:
rsp = requests.get(url, timeout=2)
if rsp.status_code == 200:
basepath = r'{basedir}/avatar/'.format(
@ -208,11 +206,8 @@ def save_user_avatar(url):
def delete_sidebar_cache():
from django.core.cache.utils import make_template_fragment_key
from blog.models import LinkShowType
keys = (
make_template_fragment_key(
'sidebar', ["sidebar" + x]) for x in LinkShowType.values)
keys = ["sidebar" + x for x in LinkShowType.values]
for k in keys:
logger.info('delete sidebar key:' + k)
cache.delete(k)

@ -1,6 +1,6 @@
{% extends 'share_layout/base.html' %}
{% load blog_tags %}
{% load cache %}
{% block header %}
<title>{{ article.title }} | {{ SITE_DESCRIPTION }}</title>
<meta property="og:type" content="article"/>
@ -72,30 +72,5 @@
{% endblock %}
{% block sidebar %}
{% with "sidear"|addstr:"p" as cachekey %}
{% cache 36000 sidebar cachekey %}
{% load_sidebar user "p" %}
{% endcache %}
{% endwith %}
<div class="widget-area" role="complementary">
<aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">功能</h3>
<ul>
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
{% if user.is_authenticated %}
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
</li>
{% else %}
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
{% endif %}
{% if user.is_superuser %}
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
{% endif %}
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
</ul>
</aside>
<div id="rocket" class="show" title="点我返回顶部"></div>
</div><!-- #secondary -->
{% load_sidebar user "p" %}
{% endblock %}

@ -38,30 +38,5 @@
{% endblock %}
{% block sidebar %}
{% with "sidear"|addstr:linktype as cachekey %}
{% cache 36000 sidebar cachekey %}
{% load_sidebar user linktype %}
{% endcache %}
{% endwith %}
<div class="widget-area" role="complementary">
<aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">功能</h3>
<ul>
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
{% if user.is_authenticated %}
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
</li>
{% else %}
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
{% endif %}
{% if user.is_superuser %}
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
{% endif %}
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
</ul>
</aside>
<div id="rocket" class="show" title="点我返回顶部"></div>
</div><!-- #secondary -->
{% load_sidebar user linktype %}
{% endblock %}

@ -12,8 +12,8 @@
{% if extra_sidebars %}
{% for sidebar in extra_sidebars %}
<aside class="widget_text widget widget_custom_html"><h3 class="widget-title">
{{ sidebar.name }}</h3>
<aside class="widget_text widget widget_custom_html"><p class="widget-title">
{{ sidebar.name }}</p>
<div class="textwidget custom-html-widget">
{{ sidebar.content|custom_markdown }}
</div>
@ -22,7 +22,7 @@
{% endif %}
{% if most_read_articles %}
<aside id="views-4" class="widget widget_views"><h3 class="widget-title">Views</h3>
<aside id="views-4" class="widget widget_views"><p class="widget-title">Views</p>
<ul>
{% for a in most_read_articles %}
<li>
@ -36,7 +36,7 @@
</aside>
{% endif %}
{% if sidebar_categorys %}
<aside id="su_siloed_terms-2" class="widget widget_su_siloed_terms"><h3 class="widget-title">分类目录</h3>
<aside id="su_siloed_terms-2" class="widget widget_su_siloed_terms"><p class="widget-title">分类目录</p>
<ul>
{% for c in sidebar_categorys %}
<li class="cat-item cat-item-184"><a href={{ c.get_absolute_url }}>{{ c.name }}</a>
@ -46,7 +46,7 @@
</aside>
{% endif %}
{% if sidebar_comments and open_site_comment %}
<aside id="ds-recent-comments-4" class="widget ds-widget-recent-comments"><h3 class="widget-title">近期评论</h3>
<aside id="ds-recent-comments-4" class="widget ds-widget-recent-comments"><p class="widget-title">近期评论</p>
{% comment %}<ul class="ds-recent-comments" data-num-items="5" data-show-avatars="1" data-show-time="1"
data-show-title="1" data-show-admin="1" data-avatar-size="30" data-excerpt-length="70"></ul>{% endcomment %}
<ul id="recentcomments">
@ -62,7 +62,7 @@
</aside>
{% endif %}
{% if recent_articles %}
<aside id="recent-posts-2" class="widget widget_recent_entries"><h3 class="widget-title">近期文章</h3>
<aside id="recent-posts-2" class="widget widget_recent_entries"><p class="widget-title">近期文章</p>
<ul>
{% for a in recent_articles %}
@ -74,7 +74,7 @@
</aside>
{% endif %}
{% if sidabar_links %}
<aside id="linkcat-0" class="widget widget_links"><h3 class="widget-title">书签</h3>
<aside id="linkcat-0" class="widget widget_links"><p class="widget-title">书签</p>
<ul class='xoxo blogroll'>
{% for l in sidabar_links %}
<li>
@ -86,14 +86,14 @@
</aside>
{% endif %}
{% if show_google_adsense %}
<aside id="text-2" class="widget widget_text"><h3 class="widget-title">Google AdSense</h3>
<aside id="text-2" class="widget widget_text"><p class="widget-title">Google AdSense</p>
<div class="textwidget">
{{ google_adsense_codes|safe }}
</div>
</aside>
{% endif %}
{% if sidebar_tags %}
<aside id="tag_cloud-2" class="widget widget_tag_cloud"><h3 class="widget-title">标签云</h3>
<aside id="tag_cloud-2" class="widget widget_tag_cloud"><p class="widget-title">标签云</p>
<div class="tagcloud">
{% for tag,count,size in sidebar_tags %}
<a href="{{ tag.get_absolute_url }}"
@ -104,7 +104,7 @@
</div>
</aside>
{% endif %}
<aside id="text-2" class="widget widget_text"><h3 class="widget-title">欢迎您star或者fork本站源代码</h3>
<aside id="text-2" class="widget widget_text"><p class="widget-title">欢迎您star或者fork本站源代码</p>
<div class="textwidget">
<p><a href="https://github.com/liangliangyy/DjangoBlog" rel="nofollow"><img
@ -115,5 +115,23 @@
</div>
</aside>
<aside id="meta-3" class="widget widget_meta"><p class="widget-title">功能</p>
<ul>
<li><a href="/admin/" rel="nofollow">管理站点</a></li>
{% if user.is_authenticated %}
<li><a href="{% url "account:logout" %}" rel="nofollow">登出</a>
</li>
{% else %}
<li><a href="{% url "account:login" %}" rel="nofollow">登录</a></li>
{% endif %}
{% if user.is_superuser %}
<li><a href="{% url "blog:refresh" %}" target="_blank">刷新缓存</a></li>
<li><a href="{% url 'owntracks:show_dates' %}" target="_blank">运动轨迹记录</a></li>
{% endif %}
<li><a href="http://gitbook.lylinux.net" target="_blank" rel="nofollow">GitBook</a></li>
</ul>
</aside>
<div id="rocket" class="show" title="点我返回顶部"></div>
</div><!-- #secondary -->

@ -25,7 +25,7 @@
<div>回复给:@{{ comment_item.author.parent_comment.username }}</div>
</div>
<p>{{ comment_item.body |escape|custom_markdown }}</p>
<p>{{ comment_item.body |custom_markdown }}</p>
<div class="reply"><a rel="nofollow" class="comment-reply-link"
href="javascript:void(0)"

@ -26,12 +26,12 @@
</div>
<p>
{% if comment_item.parent_comment %}
<div>回复 <a
href="#comment-{{ comment_item.parent_comment.pk }}">@{{ comment_item.parent_comment.author.username }}</a>
</div>
{% endif %}
<div>回复 <a
href="#comment-{{ comment_item.parent_comment.pk }}">@{{ comment_item.parent_comment.author.username }}</a>
</div>
{% endif %}
</p>
<p>{{ comment_item.body |escape|custom_markdown }}</p>
<p>{{ comment_item.body|custom_markdown }}</p>
<div class="reply"><a rel="nofollow" class="comment-reply-link"
href="javascript:void(0)"

Loading…
Cancel
Save