在php中设置expires headers而不启用mod_expires或mod_headers


Set expires headers without enabling mod_expires or mod_headers possible in php?

我正在php中构建留言簿。当我用搜索引擎优化检查器检查页面时,它说我应该设置过期头。这是我第一次使用过期头,我试过在。htaccess文件中添加它们,该文件失败了,因为mod_expires和mod_headers都不在服务器上,我无法改变它。我的问题是,如果有可能设置这些过期头在我的php代码没有mod_expires或mod_headers ?如果是这样,我该如何在我的代码中实现它,使其工作?如果你想给我答案"with header(....)",请解释一下如何设置这个,把它放在哪里,我不只是想复制粘贴代码,我想学习如何做到这一点。

我想为我的样式表(css)设置图像(jpg/jpeg/gif/png)以及(如果可能的话)的过期头。

下面我列出了我已经检查过的StackOverflow上的问题,但其中一些问题对于像我这样的新手来说真的很难理解,或者他们从来没有真正得到答案。他们中的一些人从来没有说在哪里实现代码片段,这使得很难使用一个公认的答案。

我对网页编程很陌生,所以请写解释为什么我应该做什么,所以我将来会学习它。如果你需要更多的信息,请不要犹豫,在评论中写出来。我会尽我所能回答的。谢谢你。

  • Expires Headers Not Working
  • 设置HTTP过期头使用PHP和Apache
  • 添加expires头没有mod_expires?
  • 我如何配置apache -没有mod_expires或mod_headers -发送过期头?
  • Apache:如何添加Expires头文件没有安装mod_expires

)

php版本:7.0.10

(PS:我不知道为什么mod_headers和mod_expires不上,但我敢肯定,公司不会改变它只是为我的小项目)

你不能设置PHP没有涉及的东西。通常你的web服务器提供图像和静态文件,所以web服务器必须为你处理过期头。所有其他的事情,例如用PHP提供图像,真的不推荐,需要更多的工作,而不仅仅是正确配置web服务器。

所以,静态文件(图像,javascript等)的过期头是由你的web服务器管理的,而不是PHP。

提示:在大多数默认的web托管服务上安装了apache,所以你可以使用.htaccess文件来正确设置这些东西。

编辑,更多说明:您必须区分想要设置过期头的文件。当然,您也可以在PHP文件中设置过期头,但这只会影响PHP提供的页面。php主要用于显示动态网页,所以这里的expire标头没有意义。静态图像和所有这些文件永远不会传递到PHP,所以你必须在webserver配置中设置expire。由于图像和其他静态文件是静态文件,不会改变(或不经常),因此建议设置过期头,以允许浏览器正确缓存