其实 “静态缓存插件+CDN服务”这个组合是很多人优化网页青睐的选择。但是这里必须考虑缓存静态化 和(或)CDN 服务对登录用户/管理员、以及评论者信息(用户名、邮箱和填写的URL地址)带来的影响:设置错误,有可能暴露给公众。
以前的几篇文章:
- WordPress实现CDN纯静态加速,前台不显示管理员登录状态、不保存评论者信息
- 自定义WordPress评论者个人信息cookies过期时间
- WordPress纯静态化后,cookie记住评论者信息的评论框不能隐藏问题
以下只是对上述文章的简要归纳和总结。本文的相关代码已在上述文章中给出。
WordPress用户/管理员 前台的评论输入框和Cookies信息处理
对于前台登录框的处理
对于使用 WordPress 的用户或管理员,如果登陆后台的页面和使用前台的页面在同一浏览器(同一浏览器同时不使用隐私模式或者同时使用隐私模式),那么前台页面的评论框会显示为用户或管理员已登录的默认状态,如下图所示:
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
这种情况导致使用静态缓存插件 和/或 CDN 服务的时候,把上述静态页面信息也都“分享”出去了,所以我们要把评论框中的三个输入框(昵称、电邮、网址)置空。
可以使用如下代码(代码1):
- // 让管理员在前台页面的评论框中信息置空
- function make_known_users_anonymous() {
- global $current_user;
- if(!is_admin() && isset($_GET['preview']) != 'true'){
- $current_user = array(
- 'user_login' => '',
- 'user_email' =>'',
- 'user_level' => '',
- 'user_firstname' => '',
- 'user_lastname' => '',
- 'display_name' => '',
- 'ID' => '',
- 'user_url' => '',
- );
- }
- return $current_user;
- }
- add_action( 'init', 'make_known_users_anonymous' );
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
对于前台页面的Cookies信息
但是:上述代码实施后,HTTP Header 的 cookies 信息里仍可见 Name 类似于“wordpress_logged_in_bxxxxx726c6b7a9cf3cda9370be3ee91”( comment_author_{HASH}
和 comment_author_email_{HASH}
)这样的 session 和 Value 值,容易被外人看到用户名和邮箱地址。
对于WordPress评论者的评论输入框和Cookies信息处理
前台评论输入框的处理
代码2:
- //让评论者评论输入框中信息置空息
- function ignore_existing_comment_cookies() {
- return array( 'comment_author' => '', 'comment_author_email' => '', 'comment_author_url' => '' );
- }
- add_filter( 'wp_get_current_commenter', 'ignore_existing_comment_cookies' );
上述代码的作用是:评论后将三个填写的评论输入框(昵称、电邮、网址)置空。
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
评论后页面cookies信息
但是,评论后在 HTTP Header cookies 里仍能看到 comment_author_{HASH}
和 comment_author_email_{HASH}
这样的 cookies 信息。只是评论输入框上没有而已。
下面一段代码才是终极大招:评论者评论之后,个人填写的三个信息(昵称、电邮、网址)无论在输入框还是在 HTTP Header cookies 里,渣都不剩了。所以,有下面的代码,就不用考虑上面的代码了。
本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利
代码3:
- // 让评论者的 cookies 不起作用
- function no_comment_cookies() {
- if( !is_admin() )
- return -1;
- }
- add_filter( 'comment_cookie_lifetime', 'no_comment_cookies' );
综上所述,当你使用静态缓存插件 和/或 CDN 服务时,代码1 和 代码3 的组合才是最终的选项。
而且,使用 CDN 服务后,你可以使用 JavaScript 代码重新设置前端的评论者 cookies 信息(以前文章写过,见开头文章列表)。
另外,需要注意的是,使用静态缓存插件 和/或 CDN服务时,刷新操作最好不要在 WordPress 用户/管理员 登录的浏览器页面中进行,可以使用隐私模式页面,或者如果使用隐私模式登录、那就改成正常模式的页面刷新,亦或使用其他浏览器刷新。
(毕)