站点日志:上线45天,网站TDK内容再次调整,模板加载传参机制优化
- 作者: 刘杰
- 来源: 技术那些事
- 阅读:129
- 发布: 2025-07-28 08:26
- 最后更新: 2025-08-05 09:50
今天(2025-07-26)是我的站点上线的第45天,最近百度收录数降到了6个,进入前百的关键词都归零了,原来站长统计里展现量每天能有两三百。现在基本也归零了。是不是又该干点什么了!
SEO 标签调整
2025年7月26日,今天是上线的第44天。一直觉的上次TDK的调整有些问题,总想在调整一下。但是由于新站刚上线不就,不能总是过大的调整网站的TDK,和结构。于是就这样忍了两三周。最终,酝酿那么久的想法还是没忍住。终于又调整了一次,这次网站结构没有任何变化,只改的 TDK。
下这个决心也是有原因的。百度最近展示的收录,仍然在4个6个链接浮动。索引倒是显示上了40。而且关键词方面,现在进前一百的一个都没了,说明SEO肯定是有问题,要不就是上一波调整的影响还没完全过去。反正都这样了,本着破罐子破摔的想法,说干就干,首页,几个关键页,文章详情页,标签聚合页,都做了调整。栏目页,描述没大问题,只是title 需要改,这次没动,等过段时间再说。
功能新增
给我留言功能上线。大家有什么建议,或者意见,可以通过留言功能告诉我。我会筛选其中一些有建设性的意见,尽自己所能去实现。并且将建议和我的回复,展示在留言页面,对支持我的朋友衷心的表示感谢。
功能升级
导航模块升级
导航管理后台功能升级
- 增加了位置管理,可以添加/编辑导航位置。
- 升级了导航管理,可以设置 a 链接的 rel 属性和打开方式。
主要是要进一步区分主导航,底部导航(友链),这样可以从后台直接管理全站导航链接,底部友链链接。因为一段时期,换链是必须,导航调整可能也会变频繁。
友链功能,又细化了一下,分为全局、首页、栏目页、文章内页。这功能估计得依赖一段时间。单纯只挂全站的友链,总感觉是吃亏了。
页面右侧分类列表细化
之前的右侧分类,是列出所有分类,然后统计不同分类下的内容发布量。这次更新,将只显示当前分类下的子分类列表(包括当前分类)的统计数据。
页面渲染,include 模板数据自动加载机制调整
公共模板有统一的数据源
这个功能是在页面模板内,加载公共模板(块)页面时候,多半需要一些额外数据的支持,由于公共模板可以穿插在任何页面,如果从控制器提供数据,就会有很多重复代码。
基于公共模板公共的,数据获取方式相同。干脆做了一个机制,在公共模板通过 View 实体进行 include 渲染的时候,通过注解捕捉当前模板,看是否有 ViewBlock 数据源(给公共模板提供数据的类实例)绑定到了当前公共模板上,如果有就通过 block 的接口获取数据。如果有多个就分别获取数据,然后merge 后,自动传参到正在加载公共模板内。
解决统一数据的差异化问题(如何给数据源传参)
本次升级,还解决了另一个问题。就是如何更优雅的传参到 ViewBlock 数据源。这个需求目的是解决,公共模板虽然数据虽然是同一类数据(即获取方式相同),但是不同页面加载公共模板数据还是有差距的。
就拿友链来说,这块被我做成了一个公共模板,这样在首页模板、布局文件,甚至某个单页面都可以通过公共模板一次加载。而数据源代码(ViewBlock)和公共模板只定义了一次,大大提升了代码的复用率。
而此时也就有了更进一步的差异化需求,首页友链需要加载全局友链,和首页友链的并集,但是详情页要加载全局友链和详情页友链的并集。这两个数据,从获取来源和方法来看,几乎完全一致,不同的只有参数。只要ViewBlock 在执行时候,能够区分我是在为首页还是详情页工作,这个问题就解决了。
传参方式改进,由 Context 传参,改为 request Bean 直接存储参数,增强封装性
之前是通过 Context 的方式传参到 ViewBlock 的,但是这种方式不止 ViewBlock 能拿到参数,相当于所有能访问 Context 的对象都可以获取到参数。这个封装性就比较开放,得想个办法,不同的参数只有目标 ViewBlock 才能获取到。
想到 Context 本身就是通过 Container 初始化的 scope 为 request 的请求 Bean 实例,那我是否可以通过将 ViewBlock 生存期改成 request Bean,进而 ViewBlock 就可以在本次请求中存储传递的参数。反正 request bean 会在一次请求后重新生成,这就保证每次请求访问的公共模板,只会拿到本次请求 ViewBlock 根据参数获取的数据。两次请求,同一个 ViewBlock 获取到的参数是相互独立的。即使一次请求一个页面时,一个公共模板被 include 了两次。只需要在两次 include 模板之前分别设置参数,就可以让同一个公共模板在两次 include 渲染时,获取不同的 ViewBlock 提供的数据。从而达到模板显示数据的差异化效果。
在考虑长远一些,如果每次请求数据一致,那每次 ViewBlock 都会从数据库获取数据,不是资源的浪费吗。这个问题好解决,就是加缓存。根据不同的参数,ViewBlock 获取数据时检测是否有缓存,这样就不用每次从库取数据。如果进一步优化就是这个,目前用不上,不用做,访问量比较低,完全扛得住。