亲爱的Stack Overflowers,
我觉得我的问题必须非常普遍,这使我无法找到更令人费解的解决方案。也许我的糟糕搜索能力是罪魁祸首。
我负责维护我的妻子website,主要由在线系列组成。该站点使用php从MySQL数据库生成页面(我想这将使其动态生成)。每次添加新剧集时,我都需要用链接和图像更新几页(索引和倒数第二集的页面)以指向这一新剧集。显而易见的问题是网站的缓存版本没有更新的链接。这是除非访问者重新加载其中一个更新的页面。处理它的一种方法是使这两个页面不可缓存,但这似乎有点残酷。
我已经阅读了有关Cache-Control的几个资源,但我仍然在寻找哪些参数在这种特定情况下有用。由于我不知道,下一集将会发布时,我无法使用“过期”和“过期”。或者' max-age' (或者我可以吗?)同样,因为我需要重新加载整个页面,所以我不能像文件一样更改文件名。我理想的做法是比较缓存版本的日期和文件的最后修改日期,如果缓存版本比文件旧 - 强制浏览器加载新版本。但我对其他方法持开放态度。
我同样乐意修改htaccess文件或添加php Header。任何建议都会非常感激。
非常感谢!
答案 0 :(得分:0)
在PHP中,只需发送正确的标题:
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
header('Expires: 0'); // Proxies.
Headers控制浏览器如何处理各种事物,从缓存时间到发送什么类型的信息(html,图像等)。
删除标题会在每次有人请求页面时强制更新。
如果页面真的太大而无法每次发送(真的吗?它真的那么大吗?)那么为什么不将每天的缓存设置为每天一次,或者每周一次 - 这个值不会太长所以人们不会错过任何东西,但也不要太常见,所以他们不会下载太多。
另一种完全不同的方法实际上可能是让你的代码吐出从未缓存的tatic HTML页面 - 一些HTML不能发送太多kbs的数据,它可以节省你的服务器太多的请求。