我有一个相当数据库密集的网站,所以我试图尽可能减少数据库的使用.我想要做的一件事就是在论坛的每个帖子上.我不是每次查看时动态生成每个线程,而是考虑生成每个线程的静态版本,这些版本会在新帖子发生时被覆盖.每个...

我有一个相当数据库密集的网站,所以我试图尽可能减少数据库的使用.我想要做的一件事就是在论坛的每个帖子上.
我不是每次查看时动态生成每个线程,而是考虑生成每个线程的静态版本,这些版本会在新帖子发生时被覆盖.每个线程都将存储在/ html / forum文件夹中,未经过3天或更长时间编辑的线程将被移动到/ html / forum / archive文件夹(因此file_exists不必搜索5,000 html每次为常用线程提供文件).
以下是新线程页面外观的粗略示例:
require_once('header.php');
if(file_exists('/html/forum/'.$thread_id.'.html'))
{
require_once('/html/forum/'.$thread_id.'.html');
}
elseif(file_exists('/html/forum/archive/'.$thread_id.'.html'))
{
require_once('/html/forum/archive/'.$thread_id.'.html');
}
else
{
//display something about how the thread doesn't exist
}
require_once('footer.php');
论坛只是一个例子,但我正在考虑用我网站上的大多数页面来做这件事.这种方法每次动态生成内容有什么主要缺点或优点吗?
谢谢!
解决方法:
使用这样的静态文件根本不是一个坏主意,但不要打扰归档子目录.相反,通过一些抽象值将缓存的文件拆分为子目录,如线程id的最后一位或线程id的md5()哈希的前两个字符.所以你得到:
/1/121.html
/1/301.html
/2/92.html
/3/13.html
这将使每个文件的文件保持不变.您可能希望更多级别,具体取决于您希望具有的文件格式:
/2/1/121.html
/0/1/301.html
/9/2/92.html
/1/3/13.html
或者,您可能希望将此静态内容放入类似Memcache的内容中 – 然后您根本不必担心文件名,只需按线程ID索引即可.您甚至可以将内容放入SQL数据库中 – 至少在这种情况下,您只进行一次单行查询而不是大型连接.
本文标题为:php – 从数据库生成静态HTML文件


基础教程推荐
- 详谈ajax返回数据成功 却进入error的方法 2023-02-22
- 使用getJSON()异步请求服务器返回json格式数据的实现 2023-02-13
- SpringBoot+Vue3前后端分离,实战wiki知识库系统 2023-10-08
- 基于Vue和Quasar的前端SPA项目实战之用户登录(二) 2023-10-08
- 第2天:什么是名字空间 2022-11-07
- 用ajax传递json到前台中文出现问号乱码问题的解决办法 2023-01-26
- 关于 html:CSS – 调整浏览器窗口大小时修复边 2022-09-21
- 拖拽插件SortableJS的简单使用(带缓存) 2022-07-24
- TypeScript接口介绍 2023-08-08
- Vue数字格式化成金额-过滤器 2023-10-08