代码之家  ›  专栏  ›  技术社区  ›  Oren Hizkiya

使用脚本生成静态内容是否只是一种糟糕的缓存形式?

  •  2
  • Oren Hizkiya  · 技术社区  · 16 年前

    我将开始为用户构建一个小应用程序来管理一个简单网站的内容。由于内容变化相对较少,我突然想到,根据请求动态生成每个页面是一种浪费——在编辑之间,网站上的所有内容都将保持不变。我提出的简单解决方案是构建应用程序,以便在提交编辑时生成并保存新页面。然而,这似乎是缓存的一个糟糕的重新实现。写一个脚本来保存静态页面是不是用了“错误”的方式?小场地可以吗?有没有一些轻量级的工具值得用来为这个小项目实现整个页面的缓存?

    请记住,我正在使用一个共享的托管解决方案,并且没有能力调整/安装东西。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Ignacio Vazquez-Abrams    16 年前

    与使用缓存相比,生成静态站点的优势在于,不需要检查页面是否在缓存中,或者是否由于LRU算法而被删除。只要你在编辑时及时生成它们,我就不会发现你做的有任何问题。

        2
  •  -1
  •   Mihai Iorga    16 年前

    当我运行这些项目(小项目)时,我只是制作了一个小工具来缓存从该站点访问的所有页面。

    例如:

    如果有人打开我的重写本: http://www.example.com/about-us.html 它将进入 http://www.example.com/about-us.php

    在我的全局文件中,我做了如下的事情:

    当有人进入该页面时,我会检查/cache/about-us.html是否存在,如果不存在,我会检查 $cache_content = implode('', file(' http://www.example.com/about-us.php ')); 从外部打开网页并写入磁盘。我还添加了一些过期邮件头,如:

    <?php
    $cache_content = implode('', file('http://www.example.com/about-us.php'));
    $date_cached = date('U');
    
    $data = $date_cached."\n".$cache_content;
    
    $fp = fopen('/cache/about-us.html', 'w');
    fwrite($fp, $data);
    fclose($fp);
    ?>

    然后,在global.php文件上,如我上面所说,它会检查该文件,如果它找到了,它会打开并读取该日期,如果日期是3天,我会重新生成该文件。

    我还添加了一种在CMS中清除所有缓存的方法。

    祝你好运。

    推荐文章