源码简介
在内容管理系统(CMS)领域,绝大多数站长都面临着“功能越丰富、服务器越卡顿”的难题。而 DataLife Engine (DLE) 自 2004 年由 SoftNews Media Group 开发以来,一直以极致的性能、极低的资源消耗与强悍的高并发承载力作为核心设计哲学。
论你是想搭设一个日均百万 IP 的新闻资讯门户,还是寻找一款运维成本低廉、不挑服务器配置的个人博客,DataLife Engine 都用二十年如一日的性能口碑证明了它的优秀。最新的 v21.0 版本不仅延续了其高并发的基因,更在现代化体验与媒体编辑上带来了质的飞跃。
在线演示
DataLife Engine v21.0 最新新增亮点
在最新发布的 DLE v21.0 Final Release 中,官方对系统的创作体验、用户交互以及底层安全进行了深度升级:
全新重构的可视化媒体编辑器
进一步提升了富文本编辑器的操作流畅度,新增对视频、音频、iframe 嵌套媒体、引用与 Spoiler 展开块的直观可视化管理。
全新的邮件推送管理模块(Mailing System)
独立重构了后台邮件营销与通知管理中心,支持同时创建并管理多个邮件发送队列,提升大批量订阅用户的投递效率。
全新的标准主题与响应式设计
彻底摒弃了第三方重型前端框架,推出了基于现代化原生 CSS/JS 的全新默认标准模板,原生提供自适应布局以及深色/浅色(Dark/Light)主题切换。
动态多值自定义字段(Dynamic Custom Fields)
突破了此前单个自定义字段只能填入单一值的限制,现在允许在发布文章时直接为同一个自定义字段创建并动态管理多个值。
多样化快捷登录与 Telegram 验证
进一步拓宽了社交账号一键登录生态,新增对 Telegram 官方授权登录的支持,简化社区用户的注册与登录流程。
底层内存占用与数据库性能优化
在系统底层持续发力,针对复杂 MySQL / MariaDB 查询路径进行了深度微调,大幅降低了系统在极端高并发下的内存峰值占用。
更新日志
下载地址
【付费内容】此部分内容需要支付 15 积分 后查看。
Nginx伪静态规则
# Redirects
rewrite ^/page/(.*)$ /index.php?cstart=$1 last;
# Post
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/print:page,([0-9]+),(.*).html(/?)+$ /engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 last;
rewrite ^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
rewrite ^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
rewrite ^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
rewrite ^/([^.]+)/([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$2&seourl=$3&seocat=$1 last;
rewrite ^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
rewrite ^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$2&news_page=$1&seourl=$3 last;
rewrite ^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ /engine/print.php?news_page=$1&newsid=$2&seourl=$3 last;
rewrite ^/([0-9]+)-(.*).html(/?)+$ /index.php?newsid=$1&seourl=$2 last;
# For day
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3 last;
rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&day=$3&cstart=$4 last;
# For all months
rewrite ^/([0-9]+)/([0-9]+)(/?)+$ /index.php?year=$1&month=$2 last;
rewrite ^/([0-9]+)/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&month=$2&cstart=$3 last;
# Output for the entire year
rewrite ^/([0-9]+)(/?)+$ /index.php?year=$1 last;
rewrite ^/([0-9]+)/page/([0-9]+)(/?)+$ /index.php?year=$1&cstart=$2 last;
# Output for tags
rewrite ^/tags/([^/]*)(/?)+$ /index.php?do=tags&tag=$1 last;
rewrite ^/tags/([^/]*)/page/([0-9]+)(/?)+$ /index.php?do=tags&tag=$1&cstart=$2 last;
# Output for users
rewrite ^/user/([^/]*)/rss.xml$ /engine/rss.php?subaction=allnews&user=$1 last;
rewrite ^/user/([^/]*)(/?)+$ /index.php?subaction=userinfo&user=$1 last;
rewrite ^/user/([^/]*)/page/([0-9]+)(/?)+$ /index.php?subaction=userinfo&user=$1&cstart=$2 last;
rewrite ^/user/([^/]*)/news(/?)+$ /index.php?subaction=allnews&user=$1 last;
rewrite ^/user/([^/]*)/news/page/([0-9]+)(/?)+$ /index.php?subaction=allnews&user=$1&cstart=$2 last;
rewrite ^/user/([^/]*)/news/rss.xml(/?)+$ /engine/rss.php?subaction=allnews&user=$1 last;
# Output for last news
rewrite ^/lastnews/(/?)+$ /index.php?do=lastnews last;
rewrite ^/lastnews/page/([0-9]+)(/?)+$ /index.php?do=lastnews&cstart=$1 last;
# Output for catalog
rewrite ^/catalog/([^/]*)/rss.xml$ /engine/rss.php?catalog=$1 last;
rewrite ^/catalog/([^/]*)(/?)+$ /index.php?catalog=$1 last;
rewrite ^/catalog/([^/]*)/page/([0-9]+)(/?)+$ /index.php?catalog=$1&cstart=$2 last;
# Output for new posts
rewrite ^/newposts(/?)+$ /index.php?subaction=newposts last;
rewrite ^/newposts/page/([0-9]+)(/?)+$ /index.php?subaction=newposts&cstart=$1 last;
# Output for favorites news
rewrite ^/favorites(/?)+$ /index.php?do=favorites last;
rewrite ^/favorites/page/([0-9]+)(/?)+$ /index.php?do=favorites&cstart=$1 last;
rewrite ^/rules.html$ /index.php?do=rules last;
rewrite ^/statistics.html$ /index.php?do=stats last;
rewrite ^/addnews.html$ /index.php?do=addnews last;
rewrite ^/rss.xml$ /engine/rss.php last;
rewrite ^/sitemap.xml$ /uploads/sitemap.xml last;
if (!-d $request_filename) {
rewrite ^/([^.]+)/page/([0-9]+)(/?)+$ /index.php?do=cat&category=$1&cstart=$2 last;
rewrite ^/([^.]+)/?$ /index.php?do=cat&category=$1 last;
}
if (!-f $request_filename) {
rewrite ^/([^<]+)/rss.xml$ /engine/rss.php?do=cat&category=$1 last;
rewrite ^/page,([0-9]+),([^/]+).html$ /index.php?do=static&page=$2&news_page=$1 last;
rewrite ^/print:([^/]+).html$ /engine/print.php?do=static&page=$1 last;
}
if (!-f $request_filename) {
rewrite ^/([^/]+).html$ /index.php?do=static&page=$1 last;
}
因环境问题,伪静态规则未测试,如发现问题可以一起交流。