设置过期通过查询string检索的东西的头

我已经安装了MediaWiki,并且已经使用Google的PageSpeed工具作为指导优化了各个方面,到目前为止我已经能够做出很多改进。

有一件事我不能做的是使用我的.htaccess文件为以下资源设置一个Expires头文件:

http://example.com/mywiki/load.php?debug=false&lang=en-gb&modules=startup&only=scripts&skin=vector&* 

它没有像.css或.js这样的正常文件扩展名。

可以在我的.htaccess文件中为这些文件设置过期头文件吗?

简短的回答:可能这不是一个好主意,为这些资源设置过期标题。

说明:

您需要了解更多关于URL格式及其分隔符的基本知识://@:?#

 scheme://[user:password@]domain:port/path?query_string#fragment_id 

在您的url中:

  • 计划: http
  • 用户名和密码不存在。
  • 域: example.com
  • 端口不存在,默认为HTTP端口80
  • path/mywiki/load.php
  • 查询stringdebug=false&lang=en-gb&modules=startup&only=scripts&skin=vector&*
  • 片段ID不存在。

这里的主要问题是你正在混合path和查询string彼此。 您的文件位置是/mywiki/load.php ,它具有正常的文件扩展名.php 。 它的部分查询string发送这个PHP脚本的数据进行处理:名称/值对用符号分隔。

现在我们知道我们正在处理一个PHP脚本,我们必须认识到,Apache现在提供了dynamic内容 :内容发生了变化。 为这种内容设置caching控制通常不是一个好主意。 如果我们想这样做,这是可能的。 我们可以通过.htaccess的文件扩展名来设置它,或者PHP脚本本身也可以设置caching标题,例如

 header("Expires: " . gmdate("D, d MYH:i:s", time() + 3600) . " GMT"); 

如果PHP脚本提供图像,下载或其他静态内容,这将是一个选项。 但是,由于您只是使用PHP软件而不是开发它,所以您应该认为程序员已经想到了这一点。 它也会改变更新。 因此,当您为静态内容设置标题时,您很可能已经完成了caching控制。