我一直在使用 Django Compressor 来管理我的 Coffee/less 文件,它非常适合开发,但在使其适用于我的生产部署时遇到了一些问题。
我的想法是让 apache 托管静态文件,可能在另一台服务器上。我正在设置COMPRESS_OFFLINE = True
关于settings.py
文件。
然后我执行以下操作
-
python manage.py compress
- 这填充了CACHE
我的目录static
目录,所有静态文件将收集在其中。 -
python manage.py collectstatic
- 这会将我项目中所有应用程序(其中一些不使用压缩器)的静态文件收集到我的static
中目录。 - 复制
static
目录由 apache 托管。并设置 apache 来提供文件服务。 - 修改
static_url
settings.py
中的变量文件指向静态服务器。
如果我打开任何页面,我的服务器上会出现以下错误,这似乎只在我有 DEBUG = False
时才会发生。和COMPRESS_OFFLINE = True
在我的settings.py
上文件:
TemplateSyntaxError: Caught OfflineGenerationError while rendering: You have offline compression enabled but key "777ba26736d046ab043dc151e7e9a060" is missing from offline manifest. You may need to run "python manage.py compress".
当我检查static/CACHE
时目录,我确认错误所说的内容,这是我的 manifest.json
文件:
{
"6189b8598993d1cbdbd35d4dfd1a6711": "<script type=\"text/javascript\" src=\"http://192.168.1.123/CACHE/js/2f6ca6616bd6.js\"></script>",
"5c66dbed0e5b766c6e32773cd8585f3c": "<link rel=\"stylesheet\" href=\"http://192.168.1.123/CACHE/css/154d95903951.css\" type=\"text/css\" />"
}
如果我删除 CACHE 目录并重新运行 python manage.py compress
,我在错误消息和 list 文件中都收到了一组新的 ID,但 list 文件中仍然缺少错误的 ID。
所以,我想这里有两个问题。为什么它不起作用?实现这一目标的正确方法是什么?
谢谢。
最佳答案
如果您已运行压缩,但仍然收到消息
OfflineGenerationError: You have offline compression enabled but key "4971a40e3b459a8cda8287a7f7caa96d" is missing from offline manifest. You may need to run "python manage.py compress"
那么压缩标签内可能有动态内容。确保 compress 始终是最里面的 block ,并且 compress block 内没有标签。
关于django - 如何将 django-compressor 与 apache 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146170/