跳转到主要内容

使用gzip、zopfli和brotli预压缩您的Pelican网站!

项目描述

使用gzip、zopfli和brotli预压缩您的Pelican网站!


您正在使用Pelican静态站点生成器吗?如果是,太好了!您是否已经预压缩了静态文件以获得最快的网站?如果不是,请今天安装pelican_precompress!这是使您的访问者快乐并为您节省金钱的插件!

安装

开始使用静态压缩需要三个步骤。

  1. 安装插件和您想要使用的任何支持Python包。

  2. 配置Pelican以使用pelican_precompress插件。

  3. 配置您的Web服务器以使用静态、预压缩的文件。

1. 安装Python模块

至少,您需要安装pelican_precompress插件。它将自动生成gzip文件,因为gzip是Python标准库的一部分。

但是,如果您想要高度优化的gzip文件,您将需要zopfli模块。如果您想要获得当前可用的最佳压缩效果,您将需要安装brotli模块(这将需要在第3步中进行额外的工作)。

$ pip install pelican_precompress
$ pip install zopfli  # This produces smaller gzip'd files. Use it!
$ pip install brotli  # This requires extra work in step 3.

进一步阅读: zopfli, brotli

2. 配置Pelican

如果您正在使用Pelican 4.5或更高版本,可能不需要进行任何配置。pelican_precompress支持Pelican的命名空间插件架构,并且当Pelican运行时将自动检测和加载。

但是,如果您正在维护用于Pelican的插件列表(甚至在Pelican 4.5中),则需要将其添加到活动插件列表中。

请随意将以下代码复制并粘贴到您的 Pelican 配置文件中。只需取消注释并编辑配置行以满足您的需求…或者保留它们,因为默认设置很棒!

# Pelican 4.5 introduced automatic plugin discovery and loading.
# You only need to add pelican_precompress to your PLUGINS list
# if your configuration file already has a PLUGINS list!
#
# PLUGINS = ['pelican.plugins.precompress']

# These options can be customized as desired.
#
# PRECOMPRESS_GZIP = True or False
# PRECOMPRESS_ZOPFLI = True or False
# PRECOMPRESS_BROTLI = True or False
# PRECOMPRESS_OVERWRITE = False
# PRECOMPRESS_MIN_SIZE = 20
# PRECOMPRESS_TEXT_EXTENSIONS = {
#     '.atom',
#     '.css',
#     '.html',
#     '.but-the-default-extensions-are-pretty-comprehensive',
# }

进一步阅读:Pelican 插件

3. 配置 nginx

nginx 默认支持 gzip 压缩。要启用它,请将类似以下内容添加到您的 nginx 配置文件中

http {
    gzip_static on;
    gzip_vary on;
}

截至编写本文时,nginx 并不原生支持 brotli 压缩。要获得它,您需要将静态 brotli 模块编译为 nginx 动态模块,或者从头开始重新编译 nginx。完成后,请将类似以下内容添加到您的 nginx 配置文件中

load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so;

http {
    brotli_static on;
}

进一步阅读:gzip_staticgzip_varynginx brotli 模块

配置

有一些配置选项可供选择。您可以在 Pelican 配置文件中设置它们。

  • PRECOMPRESS_GZIP (布尔值,默认为 True)

    除非您将其设置为 False,否则始终为 True。例如,您可能在开发期间将其关闭。

  • PRECOMPRESS_ZOPFLI (布尔值,默认为 True 如果安装了 zopfli)

    如果安装了 zopfli 模块,则默认为 True。您可能在开发期间将其设置为 False。请注意,如果您尝试启用 zopfli 压缩但模块未安装,则不会发生任何事情。

  • PRECOMPRESS_BROTLI (布尔值,默认为 True 如果安装了 brotli)

    如果安装了 brotli 模块,则默认为 True。您可能在开发期间将其设置为 False。与 PRECOMPRESS_ZOPFLI 类似,如果 brotli 模块未安装而您将其设置为 True,则不会发生任何事情。

  • PRECOMPRESS_OVERWRITE (布尔值,默认为 False)

    当 pelican_precompress 遇到现有压缩文件时,它将拒绝覆盖它。如果您希望插件覆盖文件,则可以将此设置为 True。

  • PRECOMPRESS_TEXT_EXTENSIONS (Set[str])

    此设置控制哪些文件扩展名将被预先压缩。

    如果您在 Pelican 配置文件中修改此设置,它将完全替换默认扩展名!

  • PRECOMPRESS_MIN_SIZE (int,默认为 20)

    小文件在压缩后往往会变成更大的文件,而且任何改进都可能微乎其微。默认设置是为了避免推测性地压缩在压缩后可能变成更大文件的文件。

    要尝试压缩无论大小如何的每个文件,请将其设置为 0

开发

如果您想自己开发和/或测试代码,请克隆 git 仓库并运行以下命令以设置 Python 虚拟环境、安装依赖项并运行测试套件

python -m venv .venv

# Activate the virtual environment (Linux)
source .venv/bin/activate

# Activate the virtual environment (Windows)
& .venv/Scripts/Activate.ps1

python -m pip install poetry pre-commit tox
pre-commit install
poetry install

# Run the test suite
tox

测试套件使用 tox 在多个 Python 解释器中使用多个 Python 解释器设置多个环境,使用多个依赖项;pytest 允许测试套件有参数化测试;pyfakefs 创建一个虚拟文件系统,测试可以在其中安全地创建和删除文件;而 coverage 会跟踪哪些代码行已被运行。

pelican_precompress 有 100% 的测试覆盖率,但仍可能有错误。请报告您遇到的所有问题。

进一步阅读:poetrytoxvenvpytestpyfakefscoverage

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pelican_precompress-2.2.0.tar.gz (6.8 kB 查看哈希值)

上传时间

构建分布

pelican_precompress-2.2.0-py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 3

由以下组织支持