php - 启用缓存会影响动态内容吗?

标签 php html caching header settings

启用缓存会影响动态内容吗?

例如,在我的一个 PHP 站点上,缓存 header 设置为:

Cache-Control: public, max-age=21600

这也会影响动态内容吗?

如果是这样,那么缓存动态 PHP 站点的标准方法是什么?据推测,您会缓存静态内容(例如图像),但不会缓存动态内容(例如 html、文本等)。您将如何以及在哪里完成这项工作?

最佳答案

是的。答案是肯定的。这控制浏览器和一些 ISP 缓存。它将在您指定的时间内在许多位置缓存动态内容。不是全部。并非所有浏览器都会遵守规则,并非所有 ISP 都会遵守规则。众所周知,AOL 过去常常无视人们的缓存规则,在奇怪的时间缓存所有内容,导致早期网络上的页面损坏。

在未缓存的动态页面上,您可以使用此值将更改相对不频繁的页面设置为缓存 10 分钟到一个小时。对于图片、css、js文件之类的东西要长一些。缓存 8 小时可能太多了,因为它比 1 小时长得多,但只会将内容的总点击次数减少 7 次。

其他缓存

还有其他可能更可靠的方法来缓存内容。您可以查看查询缓存、文件缓存、memcached。所有这些选项也可用于缓存内容以外的内容。它们都会帮助您加快重复性操作。

查询缓存

许多数据库(MySQL 是事实上的标准)都提供查询缓存。这将缓存自上次运行查询以来尚未更新的表的查询结果。非常适合规范化查找表。非常适合只更新一次的表。适用于大约每小时更新一次甚至每 10 分钟更新一次的表。对于比这更频繁更改的表,它们将产生有限的节省时间的结果。

文件缓存和 Memcached

这些可用于缓存键/值对信息。它们可以是 page_url/page_content 或 page_list/array_of_pages_in_site 或您需要的任何其他键/值对。这就是现在大多数人将页面缓存 10-60 分钟的方式。它们是可靠的,在服务器上受控,并且可以在需要时立即刷新。它们不需要基于时间,如果您的逻辑编写正确,您可以将它们视为查询缓存。仅当信息更新时,您才从缓存中清除该键,然后页面立即更新,否则位于缓存中。

header 缓存

这让我们回到头缓存。即使其他缓存就位,在这里缓存大约 10 分钟仍然是明智的。其他缓存仍然需要服务器的请求,这会减慢它的速度。虽然这不会大大减轻压力,但会减轻压力。而且安装起来并不费力。

关于php - 启用缓存会影响动态内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583327/

相关文章:

javascript - 通过 JavaScript 提交表单

html - 对齐表格 html 中的文本

php - 为什么我的 JSON 函数不起作用?

php - 如何在 REDIS 中以最有效的方式基于多个条件查询我的数据?

html - 位于两个独立 div 的顶部和底部

caching - 如何使用 redis-cli 从命令行进行身份验证?

javascript - 如何确定从缓存中提供文件?

caching - 缓存 - 刷新和无效操作

javascript - 处理进出 mysql 的特殊字符

php - 如果 'date` 是 'today' ,触发从数据库中删除行的最佳方式?