微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Perl 删除所有但最新的缓存文件

如何解决使用 Perl 删除所有但最新的缓存文件

我有一个 Perl 子程序,可以自动缩小和缓存 JavaScript 和 CSS 文件。为了解决浏览器缓存问题,它将当前的纪元时间放在提供给浏览器的缓存文件名称之前,例如1625006582-weather.css

我最初的计划是在创建新缓存之前立即使用 unlink </path/to/cache/*-weather.css> 删除所有旧副本。然而,这意味着有一段时间,尽管可能很轻微,但没有副本是公开可用的(如果新版本的创建失败,则时间更长)。

因此,我想要做的是找出最有效的方法来稍后在我的维护脚本中进行清理,即删除 *-weather.css 减去 最近的副本。我想我可以遍历目录,然后一次取消链接,直到到达最后一场比赛,但不知何故,我怀疑有一种更有效的方法来做到这一点。有吗?

chdir($fullpath);
@files = glob("*-weather.css");

for (my $I; $I++; $I > $#files) {
    unlink ($fullpath . $files[$I]);
}

解决方法

不能保证最新的文件是 glob 返回的第一个文件。

use Sort::Key::Natural qw( natsort );

my @qfns = natsort glob("*-weather.css");
pop(@qfns);  # We don't want to delete the newest.
unlink(@qfns);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。