前两周我在产品机上部署了一个wordpress站点,结果客户测速发现下载速度只有18kbps,而原站是300kbps.虽然原站是一个纯静态的网站,当然比wordpress的动态网站要快,但是客户还是要求解决这个问题。
于是乎我在产品机上安装了squid,安装完squid后发现无论如何配置,squid就是不缓存wordpress的页面,只是缓存了图片,js,css之类的静态文件。这个对于网站没有起到任何加速作用,关键还是在动态网页上。
我仔细对比了缓存的图片和不缓存的页面的http头部后发现,不缓存的页面缺少了Last-Modified这个字段。也就是说得修改wordpress的代码或者安装个插件把Last-Modified加到http头部,我在wordpress.org上找了一遍,没有发现有这样功能的插件。
于是我花了半天时间研究了wordpress的插件,自己动手写了一个添加Last-Modified的插件(下载见附件)。
主要代码如下:
- <?php
- /*
- Plugin Name: Header Last Modified
- Plugin URI:
- Description: Add post last modified to HTTP header to enable squid or cdn to cache your wordpress web page.
- Squid will not cache the page without http header field Last-Modified.
- Version: 1.00
- Author: yaofuyuan
- Author URI: http://yifangyou.blog.chinaunix.net
- */
- function header_last_modified() {
- global $post;
- if(isset($post) && isset($post->post_modified)){
- $post_mod_date=date("D, d M Y H:i:s",strtotime($post->post_modified));
- header('Last-Modified: '.$post_mod_date.' GMT');
- }
- }
- ?>
使用方法:
1.安装后需要在后台启用这个插件,这步是必须的,否则一会会出现500错误
2.修改/your_website_path/wp-includes/template-loader.php,在 "if ( $template = apply_filters( 'template_include', $template ) )"之前加上header_last_modified();
例如:
- header_last_modified();
- if ( $template = apply_filters( 'template_include', $template ) )
- include( $template );
- return;
这个插件的作用是读取当前页的post变量里的修改时间,加入到Http头部里
注意,若是修改的主题文件,这个修改时间是不会变化的
阅读(1810) | 评论(0) | 转发(0) |