SoogorCMS缓存设置

创建时间: 2023-10-18 09:29:26 :86 更新时间: 2023-10-18 09:29:26
本文适用:

软件版本:上格CMS V0.0.0.1

缓存是一个建站程序非常重要的功能,很多建站程序起初在小数据的时候都是感觉运行很细行,当网站上了几W就开始有点卡顿,当数据上到了10几W到20几W就需要是初期几倍的服务器资源来配合运行,当到了百万的时候就叫苦不迭了。

当到了大数据的时候缓存就是非常重要的。

我们结合了Django的几大缓存方式开发了这套操作界面,方面大家在不同的缓存之间进行切换

功能路径:后台首页--导航--系统设置--缓存设置

几大缓存的简单对比:

缓存类型 使用评价
本地内容缓存

locmem本地内容缓存为Soogor CMS默认缓存.或者,当您使用了一些接口而没有进行缓存配置的时候,也会调用此缓存。

您无须在服务器安装其他客户端或组件,只须将缓存开始即可以将缓存写入内存当中。当内存被清理或服务器重启时,缓存将丢失。缓存会根据访问情况逐步再次建立。

这是我们最早始用的缓存,表现可以接受
Redis

Redis 是一个可用于缓存的内存数据库。首先,您将 需要在本地或远程计算机上运行的 Redis 服务器。

服务器须安装Redis客户端,宝塔面板可以直接安装Redis程序。 经我们评测,Redis在少数据和持久化方面表现不错,当缓存需要百万级时,表现不如Memcached。如果网站数据在几十万级时,用Redis并使用持久化是一个不错的选择
Memcached

Memcached 是一个完全基于内存的缓存服务器。它被Facebook和维基百科等网站用于减少数据库访问并显著提高站点性能。
Memcached 以一个守护进程的形式运行,并且被分配了指定数量的 RAM。它所做的就是提供一个快速接口用于在缓存中添加,检索和删除数据。所有数据都直接存储在内存中,因此不会产生数据库或文件系统使用的开销。

服务器须安装Memcached客户端,宝塔面板可以直接安装Memcached程序 有人说Memcached是Django框架中最快最好用的缓存。当我们用几百万的数据进行测试时,表现确实是不错

但是我们没有找到一个服务器多数项目共同使用memcached的方法

文件缓存

基于文件的后端序列化并保存每个缓存值作为单独的文件。

在大数据方面表现仅次于memcached,速度方面微慢,CPU开销比memcached大点。总的来说文件缓存也是大数据网站的不错选择
数据库缓存

Soogor CMS可以在数据库中存储缓存数据。如果你有一个快速、索引正常的数据库服务器,这种缓存效果最好。

使用数据库缓存之前,必须通过下面的命令创建缓存表:


    #本地:
    python manage.py createcachetable
    #宝塔终端:
    /www/wwwroot/xxxx/soogor/227fa7fcb1971bf176c46bdde288cbe2_venv/bin/python3 /www/wwwroot/xxxx/soogor/manage.py createcachetable
                    

这将在数据库中创建一个表,该表的格式与 Soogor CMS 数据库缓存系统期望的一致。该表的表名取自 "缓存位置"中的设置

暂未进行评测

经测试,数据库需要是utf8字符集的,但是我们现有的数据库都是UTF8BM4的,所以我们暂时没有完成完整的测试

整站缓存

全站缓存将快速的将整个站点缓存,该缓存方式采用的系统默认的缓存方式进行缓存,即内存缓存。开始整站缓存后,系统会将以下几种页面排外在外:

  1. 上述我们设置的四种页面按我们的设置时间进行缓存;
  2. SoorCms 的API,我们都经过never_cache()缓存处理,也不会进入缓存。自定义API时,也要进行never_cache()缓存处理
  3. 模板中用到模板缓存的地方以模板缓存为准
  4. 缓存时间设置权重,自行设置>默认时间设置。当二者时间出现不一致时,以每个视图自定义的时间为准。
虚拟缓存

全站缓存将快速的将整个站点缓存,该缓存方式采用的系统默认的缓存方式进行缓存,即内存缓存。开始整站缓存后,系统会将以下几种页面排外在外:

  1. 上述我们设置的四种页面按我们的设置时间进行缓存;
  2. SoorCms 的API,我们都经过never_cache()缓存处理,也不会进入缓存。自定义API时,也要进行never_cache()缓存处理
  3. 模板中用到模板缓存的地方以模板缓存为准
  4. 缓存时间设置权重,自行设置>默认时间设置。当二者时间出现不一致时,以每个视图自定义的时间为准。
   

是否开始缓存开关:这里我们要说明一样,就是当关闭缓存的时候有单独视图缓存,我们会将缓存改为0秒。从侧面实现无缓存,但是实际当中这个0秒缓存会不会做了我感觉不到的动作,我们目前没有深究。因为我们没有发现什么性能影响

使用的时候只需要将开关打开,根据需要设置时间数就可以了。

在这里我们还有些需要说明的地方

  1. 如果我们选用的缓存方式您感觉不合适,可以直接在setting.py当中直接修改就可以了,这里的时间设置和缓存的方式没有冲突。无论采用了哪种缓存方式,都可以这样设置。
  2. 模板缓存的时间不在本页面设置,模板缓存的使用方法可以参考https://www.soogor.com/django/5110.html 中“在模板中使用cache”部分的内容
  3. 当关闭缓存时,我们查看页面信息为max-age=0,0秒缓存也就是没有缓存。
  4.  缓存是占用的服务器内存;
  5. 对于少量内容的网站缓存不缓存无所谓。当少量内容缓存后,网页的更新还不及时,当网站内容多的时候开启缓存可以非常好的减轻服务器压力
  6.  默认API链接是没有缓存的

这个界面是一个简单的操作界面,如果你感觉这些功能不够你用,你还需要使用到Django更多的缓存使用技巧,那你可以参考可以访问我们总结的文章《Django 各种缓存用法详解,如果正确的配置Django缓存》。


Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.