我的博客目前是在阿里云的最低配的ECS服务器上,带宽只有1M,可以说是很弱鸡了。因此我对博客进行了一波优化。
1、后端优化:目前的策略是整个页面进行缓存,缓存时间是24小时,也就是说一天更新一次。缓存时间比较长,那么就涉及一个更新缓存的策略,因为当文章更新和提交评论时,需要实时显示的,因此需要判断,当进行文章更新和评论提交时,更新缓存。我是在Django的中间件处进行判断更新的,下面是代码片段。
class CleanCacheMiddleware(MiddlewareMixin):
"""当访问当路径包含 xadmin/blog 且method 方法为post时,清空首页缓存"""
def process_request(self, request):
if re.match( r'^.*xadmin.*$', request.path) and request.method == "POST":
key = 'PageCache-%s' % '/'
cache.delete(key)
# 提交评论时 更新阅读页缓存
if re.match(r'^.*comments/post.*$', request.path) and request.method == 'POST':
data = request.POST.copy()
key = 'PageCache-%s' % data.get('next', '')
cache.delete(key)
2、前端优化:通过分析网站的资源加载,发现有几个js文件加载速度比较慢,因此这里使用免费的cdn进行加速。但是cdn服务是不可控的,当提供商服务出错时,那么就会影响到我们的网站。所以我们需要配置备用选项,我这里主要使用了jquery和layui。下面是配置代码。
jquery:
<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
if (!window.jquery){
var script = document.createElement('script');
script.src = "path/to/localhost/jquery.js";
document.head.appendChild(script);
}
<script/>
layui:
<script src="https://www.layuicdn.com/layui-v2.4.5/layui.js"></script>
<script>
if (typeof layui === 'undefined') {
var sc = document.createElement('script');
script.src = "path/to/localhost/layui.js";
document.head.appendChild(sc);
}
</script>
其中判断某个js是否存在有两种方式,也就是上图中的,一种是判断利用window对象。
依据:
另一种是根据typeof 判断变量的类型,如果未引入,那么该对象就是undefined。
其中博客当中涉及的图片放到图床当中也能加快加载速度,但是考虑到免费图床的不稳定性,没有做这块的优化,目前图片放在服务器当中。