dede伪静态缓存html如何设置与优化?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文

先理清“伪静态”和“HTML缓存”

  1. 伪静态

    dede伪静态缓存html
    (图片来源网络,侵删)
    • 是什么:它并不是真正生成了静态的 .html 文件,而是通过服务器(如 Apache 的 mod_rewrite 或 Nginx 的 rewrite 模块)的 URL 重写规则,将一个动态的 URL(如 plus/view.php?aid=123)伪装成一个静态的 URL(如 /plus/view-123.html)。
    • 目的
      • SEO 优化:静态 URL 对搜索引擎更友好,看起来更“正规”。
      • 用户体验:URL 更简洁、美观,易于记忆和分享。
      • 隐藏技术:隐藏了动态脚本(如 .php),在一定程度上增加了安全性。
  2. HTML 缓存

    • 是什么:DedeCMS 在你发布文章或生成栏目时,会根据模板规则,直接将动态页面(如 plus/view.php?aid=123转换成一个真正的 .html 文件(如 /plus/view-123.html),并保存在你的网站目录中。
    • 目的
      • 极致性能:当用户访问这个页面时,服务器直接读取并返回这个 HTML 文件,无需经过 PHP 解释器和数据库查询,速度极快,大大减轻了服务器负担。
      • 减轻数据库压力:高并发访问时,不会对数据库造成巨大压力。

关键联系:在 DedeCMS 中,“伪静态”和“HTML缓存”是相辅相成的,当你开启了 HTML 缓存后,DedeCMS 会自动生成静态的 .html 文件,这时,伪静态规则的作用就是让用户通过一个美观的 URL(如 view-123.html)访问到这个已经生成的静态文件。


第一步:开启 DedeCMS 后台的 HTML 缓存功能

这是实现静态化的基础操作,必须在后台完成。

  1. 登录 DedeCMS 后台

    dede伪静态缓存html
    (图片来源网络,侵删)
  2. 进入 【系统】 -> 【系统基本参数】

  3. 在左侧菜单中找到并点击 【核心设置】

  4. 找到以下两个关键选项并进行设置:

    • 是否使用伪静态

      dede伪静态缓存html
      (图片来源网络,侵删)
      • 选择 “是”,这是启用伪静态功能的前提。
    • 文件保存目录

      • 这里通常已经设置为 ../html/,这是 DedeCMS 默认存放生成 HTML 文件的目录。请确保这个目录存在并且有写入权限755777 权限,但为了安全,建议 755)。
  5. 保存

第二步:开启栏目和文档的 HTML 生成

设置好基本参数后,你还需要在具体的栏目和文档设置中启用生成。

  1. 生成栏目 HTML

    • 进入 【栏目管理】,选择你想要生成静态 HTML 的栏目。
    • 点击 【修改】
    • 在栏目选项中,找到 “栏目列表选项”
    • 勾选 “生成HTML”
    • 保存。
  2. 生成文档/文章 HTML

    • 进入 【核心】 -> 维护】 -> 【文档HTML一键生成】
    • 你可以选择生成所有栏目、选择特定栏目,或者生成特定文章。
    • 点击 “开始生成”,这个过程会根据你设置好的模板,在 /html/ 目录下生成大量的 .html 文件。

注意:你的 /html/ 目录下已经生成了真正的静态文件,/html/123/1.html(栏目页)和 /html/view-123.html(文章页)。

第三步:配置服务器伪静态规则(最关键的一步)

这一步是让服务器将用户请求的“伪静态 URL”正确地指向到已经生成的“静态 HTML 文件”。

你需要根据你的服务器类型来配置不同的规则。

A. Apache 服务器伪静态规则

  1. 开启 mod_rewrite 模块: 确保你的 Apache 配置文件中 mod_rewrite 模块已开启(通常默认是开启的)。

  2. 创建或修改 .htaccess 文件: 在你的网站根目录(public_htmlwww)下,找到或创建一个名为 .htaccess 的文件,如果已存在,请在其内容最上方添加以下规则:

    <IfModule mod_rewrite.c>
      RewriteEngine On
      # 绑定域名到目录
      # RewriteBase /
      # 防止盗链
      RewriteCond %{HTTP_REFERER} !^http://(.+.)?你的域名.com/ [NC]
      RewriteCond %{HTTP_REFERER} !^http://(.+.)?你的域名.com/.*$ [NC]
      RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/ [NC]
      RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/.*$ [NC]
      RewriteRule .(jpg|gif|png|bmp|swf|jpeg)$ http://你的域名/images/forbidden.gif [R,NC,L]
      # 织梦伪静态规则
      # 文档列表页
      RewriteRule ^index.html$ /index.php [I]
      # 栏目页
      RewriteRule ^plus/list-([0-9]+).html$ /plus/list.php?tid=$1 [I]
      RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [I]
      # 文章页
      RewriteRule ^plus/view-([0-9]+)-([0-9]+).html$ /plus/view.php?arcID=$1&pageno=$2 [I]
      RewriteRule ^plus/view-([0-9]+).html$ /plus/view.php?arcID=$1 [I]
    </IfModule>

    注意

    • 你的域名.com 替换成你自己的域名。
    • [I] 标志在某些服务器配置下可能需要改为 [L] 或去掉,如果规则不生效,可以尝试去掉 [I]
    • RewriteBase / 这行如果网站在根目录下,通常可以注释掉或保持原样。

B. Nginx 服务器伪静态规则

  1. 修改 Nginx 配置文件: 找到你的网站配置文件(通常在 /etc/nginx/sites-available/ 目录下),在 server { ... } 块中添加以下 rewrite 规则。

    server
    {
        listen 80;
        server_name 你的域名.com;
        root /你的网站根目录; # /var/www/html
        # 织梦伪静态规则
        location / {
            rewrite "^/index\.html$" /index.php last;
            rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
            rewrite "^/plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 last;
            rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last;
            rewrite "^/plus/view-([0-9]+)\.html$" /plus/view.php?arcID=$1 last;
            # 如果你的首页也生成了 index.html,可以加上下面这句
            # if (!-e $request_filename) {
            #     rewrite ^(.*)$ /index.php?s=$1 last;
            # }
        }
        # ... 其他配置,如 PHP-FPM 配置等 ...
    }
  2. 重启 Nginx 服务: 保存配置文件后,执行命令重启 Nginx 使配置生效:

    sudo systemctl restart nginx

第四步:验证与维护

  1. 验证

    • 清空浏览器缓存。
    • 访问你的网站首页,看看是否正常。
    • 访问一篇你生成的文章,http://你的域名.com/plus/view-123.html
    • 检查页面源码,确认是静态的 HTML 内容,而不是 PHP 代码。
    • 检查服务器响应头,状态码应该是 200 OK,而不是 301302(除非你做了重定向)。
  2. 后如何处理

    • 当你新增、修改或删除文章后,对应的静态 HTML 文件就会失效
    • DedeCMS 会自动处理:在下次有人访问这个页面时,系统会重新生成一个新的 HTML 文件并覆盖旧的。
    • 为了更好的性能,你也可以手动进入 【文档HTML一键生成】,重新生成你修改过的栏目或文章。

常见问题排查

  • 404 Not Found 错误

    • 原因:伪静态规则没有生效或写错了。
    • 解决:检查 .htaccess (Apache) 或 Nginx 配置文件中的语法是否正确,并确保模块已加载,重启服务器后重试。
  • 打开页面是空白或者显示 PHP 源码

    • 原因:服务器没有解析 PHP 文件,或者 /html/ 目录没有写入权限。
    • 解决:检查 PHP-FPM/Apache 的 PHP 解析配置,确保 /html 目录权限正确(通常是 755)。
  • URL 不变,还是动态的

    • 原因:后台【系统基本参数】中的“是否使用伪静态”选项设置为“否”。
    • 解决:将其改为“是”,并保存。
  • 后,页面内容还是旧的

    • 原因:浏览器缓存了旧页面,或者 DedeCMS 没有及时重新生成 HTML。
    • 解决:强制刷新浏览器(Ctrl+F5),或者手动去后台重新生成对应的文章/栏目页面。

通过以上四个步骤,你就可以成功地为 DedeCMS 网站配置好伪静态和 HTML 缓存,从而显著提升网站的加载速度和用户体验。

-- 展开阅读全文 --
头像
织梦数据库文件具体是哪个?
« 上一篇 02-18
织梦网站下拉菜单如何设置?
下一篇 » 02-18

相关文章

取消
微信二维码
支付宝二维码

目录[+]