m2-boilerplate/module-service-worker

一个添加 Service Worker 支持的 Magento 2 扩展。

安装: 3

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 27

类型:magento2-module

3.0.0 2020-08-09 13:08 UTC

README

一个添加 Service Worker 支持的 Magento 2 扩展。

功能

  • 完全可定制的 Service Worker 脚本
  • 缓存优先的页面资源加载方式,实现更快的页面加载速度
  • 无网络时离线 CMS 页面

安装

使用 Composer 将此扩展添加到您的 Magento 安装中

composer require m2-boilerplate/module-service-worker

用法

配置

Service Worker 默认已配置并启用。然而,Service Workers 要求站点在 HTTPS 上运行。

功能可以在 商店 > 配置 > 一般 > 网络 > Service Worker 设置 中进行自定义。

添加更多逻辑

如果基本 Service Worker 文件不符合所有需求,您可以使用布局系统轻松添加更多逻辑,针对 serviceworker_index_js 处理。

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="serviceworker">
            <block name="morelogic.logic" template="M2Boilerplate_MoreLogic::logic.phtml" />
        </referenceBlock>
    </body>
</page>

常见问题解答

为什么在 Magento 默认/开发者模式下页面资源似乎没有被缓存?

Magento 2 使用 URL 中的时间戳版本字符串来更新静态文件,以便在静态内容更新时使浏览器缓存失效。在开发者模式下,此版本字符串会针对每个唯一的页面请求进行更新。这意味着从浏览器的角度来看,CSS 文件等静态资源在每个页面上都是完全不同的,尽管内容相同。因此,当资源被 Service Worker 在 Magento 2 开发者模式下缓存时,它们只会被缓存在该特定页面上。生产模式仅通过命令行生成静态资源,并保持版本时间戳固定,因此不会遇到此问题。

在 Chrome 上测试 Service Workers

Chrome 对安全非常严格,只允许在 localhost 或具有有效证书的 HTTPS 网站上使用 Service Workers。为了绕过这些限制进行测试,请使用 --ignore-certificate-errors--unsafely-treat-insecure-origin-as-secure 标志运行一个不安全的 Chrome 版本。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
    --user-data-dir=/tmp/chrome \
    --ignore-certificate-errors \
    --unsafely-treat-insecure-origin-as-secure=https://m2-meanbee-serviceworker.docker/