0

我已经构建了一个非常简单的 chrome 扩展,当单击它时,它只会在新选项卡中打开一个 URL(通过一个使用页面当前 URL 的短 JS 函数)。它不会在后台做任何事情。

它使用大约 20mb 的内存是否正常?可以做些什么来减少使用的内存量吗?

这是 background.js 代码:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {file: "bookmarklet.js"})
});
4

1 回答 1

2

轻量级 Chrome 扩展程序通常使用 10-20 MB 内存。

话虽如此,我建议使用以下清单文件来最大程度地减少内存使用和权限使用:

{
    "name": "Name of your extension",
    "version": "1.0",
    "manifest_version": 2,
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "browser_action": {
        "default_title": "Your badge title here (optional)",
        "default_icon": "icon19.png"
    },
    "permissions": [
        "activeTab"
    ],
    "minimum_chrome_version": "26"
}

如果您愿意,还可以添加iconsdescription字段以提供额外的元数据。

通过使用"persistent": "false",您已经将背景页面变成了活动页面。事件页面仅在需要时激活,例如当您的按钮被点击时。不需要时,页面会自动卸载,不会占用内存。

我猜你已经使用了"tabs"and "<all_urls>"or"*://*/*"权限。对于您的用例,只需删除这些权限并activeTab改为使用,这会在单击按钮时授予扩展程序对选项卡的临时访问权限。此功能自 Chrome 26 起可用。

于 2013-10-04T07:48:36.080 回答