
CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载Orchard Core 1.8.4 是一个聚焦稳定性的维护版本围绕 Elasticsearch 查询 API 返回异常、Sitemap 时间戳格式不规范以及站点地图构建性能三个方向进行了针对性修复。本文结合当前仓库源码逐项拆解这些修复背后的实现细节帮助你理解升级后行为变化的原因并掌握如何验证与使用修复后的 API 与时间格式约定。版本概览维护版本的定位与范围根据 1.8.4 发布说明该版本发布于2024 年 9 月 4 日性质为 maintenance release维护版本不引入新功能只包含必要的缺陷修复essential bug fixes。升级路径上它承接 1.8.x 系列与 v1.8.3 相比仅包含少量精选变更适合在稳定生产环境中平滑跟进。适用前提本文讨论的代码行为均来自当前仓库的源码与配置若你运行的是 1.8.4 之前的版本升级后 Elasticsearch 查询 API 与 Sitemap 输出格式会随之变化。本版本包含四个关键变更变更点作用域核心价值修复 Elasticsearch 查询 APIOrchardCore.Elasticsearch 模块修正 API 查询返回结果异常修复 Sitemap 时间戳格式OrchardCore.Sitemaps 模块输出符合协议规范的时间格式使用不变文化渲染 ISO 日期时间OrchardCore.Sitemaps 模块消除地区设置导致的格式漂移批量构建 Sitemap 内容项OrchardCore.Sitemaps 模块优化大规模站点地图的生成性能Elasticsearch 查询 API 修复返回内容项的能力恢复修复背景1.8.4 之前的 Elasticsearch 查询 API 在按预期返回查询结果上存在缺陷本次修复使 API 调用能够正确返回查询内容。相关实现位于 ElasticsearchApiController.cs。API 端点结构从源码看Elasticsearch 查询 API 由ElasticsearchApiController暴露路由前缀为api/elasticsearch并提供两组端点、四种调用方式GET/POST api/elasticsearch/content返回内容项Content Item形式的结果内部调用时传入returnContentItems: trueGET/POST api/elasticsearch/documents返回文档Document形式的结果即 Elasticsearch 原始索引文档。控制器通过[Authorize(AuthenticationSchemes OrchardCoreConstants.AuthenticationSchemes.Api)]声明 API 认证并在Content与Documents两个动作中分别校验ElasticsearchPermissions.QueryElasticApi权限未授权时调用ChallengeOrForbid。因此调用前需要先取得有效的 API 认证凭据并具备查询权限。请求模型与执行链路两类端点共用一个请求模型ElasticApiQueryViewModel核心字段包括IndexName目标 Elasticsearch 索引名称Query查询模板Template即 Elasticsearch DSL 模板文本Parameters查询参数以 JSON 字符串传入服务端通过JConvert.DeserializeObjectDictionarystring, object反序列化为键值对。执行时控制器通过IQueryManager.NewAsync(ElasticsearchQuerySource.SourceName)创建新的 Elasticsearch 查询实例将Index与Template写入ElasticsearchQueryMetadata再调用_queryManager.ExecuteQueryAsync(elasticQuery, queryParameters)执行。也就是说API 层复用了后台查询源Query Source的完整能力而修复点即在于保证这条链路返回的结果在两种返回模式下均符合预期。验证方式升级到 1.8.4 后可先通过管理后台创建并测试一个 Elasticsearch 查询再用以下方式调用 API 验证返回内容curl -X POST https://your-site/api/elasticsearch/content \ -H Authorization: Bearer api-token \ -H Content-Type: application/json \ -d { indexName: your-index, query: { \query\: { \match_all\: {} } }, parameters: {} }Sitemap 时间戳格式修复ISO 8601 与不变文化的落地修复背景Sitemap 协议要求lastmod元素使用 W3C 日期时间格式。1.8.4 修复了 Sitemap 时间戳格式问题并统一使用不变文化Invariant Culture渲染 ISO 日期时间避免站点所在地区设置如不同语言区域导致时间格式漂移。源码中的格式实现当前仓库中Sitemap 的lastmod输出集中在两个 Builder 中CustomPathSitemapSourceBuilder.cs对自定义路径站点地图源写入lastMod.Add(source.LastUpdate.GetValueOrDefault().ToString(yyyy-MM-ddTHH:mm:sszzz, CultureInfo.InvariantCulture))SitemapIndexTypeBuilder.cs对索引型站点地图写入lastModDate.GetValueOrDefault().ToString(yyyy-MM-ddTHH:mm:sszzz, CultureInfo.InvariantCulture)。两处均使用CultureInfo.InvariantCulture与yyyy-MM-ddTHH:mm:sszzz格式字符串yyyy-MM-ddTHH:mm:ss标准 ISO 8601 日期时间T为日期与时间分隔符zzz带冒号的时区偏移如00:00、08:00使时间戳具备明确的时区语义InvariantCulture保证分隔符、数字格式与区域性无关任何服务器区域设置下输出一致。lastmod 的取值来源索引型 Sitemap 的lastmod取自 DefaultSitemapModifiedDateProvider.cs遍历站点地图的全部数据源汇总所有ISitemapSourceModifiedDateProvider返回的最近修改时间取最大值作为整个 Sitemap 的lastmod。对于自定义路径数据源CustomPathSitemapSourceModifiedDateProvider.cs 直接返回source.LastUpdate即站点地图源上手工配置的最后更新时间。两类 Provider 在 Sitemaps 模块的 Startup.cs 中以 Scoped 方式注册ISitemapModifiedDateProvider - DefaultSitemapModifiedDateProviderISitemapSourceModifiedDateProvider - CustomPathSitemapSourceModifiedDateProvider对搜索引擎的影响lastmod是搜索引擎判断内容更新频率、决定抓取优先级的重要信号。修复后输出的时间戳形如2024-09-04T12:00:0000:00带明确时区偏移避免了此前可能出现的本地化日期格式或缺失时区导致的解析歧义。Sitemap 构建性能优化批量获取内容项1.8.4 通过批量Batched方式获取内容项优化了大规模站点地图的创建过程。从源码结构看该优化位于 OrchardCore.Sitemaps 模块的构建链路中核心思路是避免逐个内容项发起查询改为分批取回后统一写入站点地图条目从而减少数据库往返与对象实例化开销。从 Sitemaps 模块目录 看构建相关的 Builder 与 Provider 均注册于 Startup.cs 中升级后无需额外配置即可生效站点内容规模越大该优化的收益越明显。需要说明的是性能提升幅度取决于站点内容量、数据库与索引配置本文不做量化结论。升级到 1.8.4 的实践建议备份与兼容性检查1.8.4 为维护版本变更集中在修复层面。升级前建议先备份站点与数据库并在测试环境验证 Elasticsearch 查询与 Sitemap 输出。验证 Elasticsearch 查询 API升级后重点回归api/elasticsearch/content与api/elasticsearch/documents两类端点确认返回结构与修复前预期一致并核对权限配置QueryElasticApi。核对 Sitemap 输出格式访问站点地图地址确认lastmod输出为yyyy-MM-ddTHH:mm:sszzz不变文化格式且索引型 Sitemap 的lastmod取各数据源最近修改时间的最大值。关注日志与性能若站点内容量较大可对比升级前后站点地图生成耗时同时留意 Elasticsearch 查询执行日志确认 API 修复未引入额外错误。相关资源1.8.4 发布说明本版本变更的官方记录ElasticsearchApiController.csElasticsearch 查询 API 实现CustomPathSitemapSourceBuilder.csSitemap lastmod 格式输出实现DefaultSitemapModifiedDateProvider.cslastmod 汇总逻辑Sitemaps 模块 Startup.csSitemap 相关服务注册赞分享CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载相关推荐Orchard Core Elasticsearch 模块实战指南索引管理、查询 API 与连接配置全解析Orchard Core Elasticsearch 模块实战指南索引管理、查询 API 与连接配置全解析 Orchard Core 的 OrchardCorCMS后端Web框架Orchard Core Queries 模块实战指南自定义查询源、SQL 查询、Web API 与 GraphQL 集成Orchard Core Queries 模块实战指南自定义查询源、SQL 查询、Web API 与 GraphQL 集成 Orchard Core 的 QuCMS后端Web框架Orchard Core 1.7.1 版本解析SMTP 设置修复、crypto.randomUUID 回退方案与 PostgreSQL 工作流分页修复Orchard Core 1.7.1 版本解析SMTP 设置修复、crypto.randomUUID 回退方案与 PostgreSQL 工作流分页修复 OrcCMS后端Web框架上一篇lhttp与HTTP无缝集成跨语言IM系统的最佳实践下一篇Ventoy启动盘修复从只读检查到完全重建的3个层级创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考