启用缓存会影响动态内容吗?
例如,在我的一个 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/