Установка истекает заголовки для статического содержания, подаваемого от nginx

Часть сброса детализирована в этой статье:

  1. Нажмите Start Menu и затем введите regedit в Поиске Запуска и нажимают ENTER.
  2. Перейдите к следующему ответвлению реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext].
    Замените [ext] с фактическим расширением файла, что Вы хотите восстановить его ассоциацию типа файла для возвращения назад к исходному значению по умолчанию Windows Vista. Если Вы не уверенный, просто просмотрите весь подраздел под FileExts.
  3. Удалите названный подраздел UserChoice.
  4. Выход от редактора реестра.

Windows Vista будет теперь использовать исходные ассоциации файлов, который прибывает встроенный в систему для конкретных расширений файла с “UserChoice” удаленный.
Однако прием не является надежным, особенно если другие связанные ключи системного реестра для конкретного расширения были повреждены или повреждены. В таких случаях может быть необходимо зафиксировать ассоциацию файлов путем восстановления ее настроек реестра.

97
задан 19 February 2015 в 10:12
7 ответов

Я предпочитаю сделать более полный заголовок кеша в дополнение к некоторым дополнительным расширениям файлов. '?' prefix - это отметка "не захват", nginx не будет создавать $ 1. Это помогает снизить ненужную нагрузку.

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}
129
ответ дан 28 November 2019 в 19:21
server {
    ...

    location ~* \.css$ {
       expires 30d;
    }
    ...
}

location директива

expires директива

22
ответ дан 28 November 2019 в 19:21

Можно также установить истекание на максимум. Вот директива, которую я использую для CSS и js.

# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
    access_log off;
    expires max;
}
9
ответ дан 28 November 2019 в 19:21
  • 1
    Я использовал бы корневую директиву только в сервере {} блок при использовании его в sub местоположениях, которые это приводит к неожиданным последствиям. Вы don' t нуждаются в перерыве; также, как you' ре не в, если {} блок –  Dave Cheney 10 June 2009 в 13:47
  • 2
    Вы правы. Забыл очищать это. Отредактированный для отражения этого. –  Jauder Ho 11 June 2009 в 04:02

Если у вас есть одно место, где хранятся все ваши статические файлы , что-то вроде этого подойдет ...

 location /static {
            your/location/to/static/files/static;
            expires 30d;
            add_header Cache-Control "public";
    }

Принятый ответ привел к тому, что nginx не нашел ни одного из моих статических файлов. Не совсем уверен, почему, но это простая альтернатива.

2
ответ дан 28 November 2019 в 19:21

Crontab по умолчанию использует / bin / sh для выполнения ваших команд.

Несмотря на то, что / bin / sh является символической ссылкой на / bin / bash, bash отключает функции только для bash, если он запущен таким образом.

Согласно 'man 5 crontab', вы можете поместить 'SHELL = / bin / bash 'на новой строке в вашем файле crontab, и внезапно функции bash снова заработают, например, ваш оператор "if [[...]]".

У меня есть ситуация, когда мой / var / www / содержит две папки, которые я разрешаю как public_html - безопасный и обучающий, поэтому мне нужно сделать определенные блоки местоположения в директиве сервера моего сайта, выделяя эти папки.

Таким образом, у меня нет глобального корневого каталога, установленного .

Поэтому, когда вы создаете блоки расположения изображений, вы не можете предоставить им корневой каталог где искать изображения!

Мое решение заключалось в следующем:

location ~ ^/training.+\.(?:ico|css|js|gif|jpe?g|png)$ {
        root /var/www/;
        expires 7d;
        add_header Pragma public;
        add_header Cache-Control "public";
        try_files $uri 404;
}

location ~ ^/.+\.(?:ico|css|js|gif|jpe?g|png)$ {
        root /var/www/secure;
        expires 7d;
        add_header Pragma public;
        add_header Cache-Control "public";
        try_files $uri 404;
}
17
ответ дан 28 November 2019 в 19:21

Քանի որ սա շատ հին թեմա է, և ես գտա արդի զարմանալի ձեռնարկ

Թերեւս ուզում եք ստուգել այն դուրս

Ինչպե՞ս իրականացնել զննարկչի պահպանումը Nginx- ի վերնագրի մոդուլի միջոցով Ubuntu- ում 16.04

-1
ответ дан 28 November 2019 в 19:21

Все вышеупомянутые решения будут запретить возможность иметь разные псевдонимы для разных путей. Также для того, чтобы все ваши истечения срока действия кеша были в одном месте, вы должны использовать карту nginx следующим образом.

...

# Expires mappings
map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     7d;
    ~image/                    max;
}

...

server {
   listen ...;

   expires $expires;
   location /assets/ {
      # It is now possible to serve some resources from different path
      alias /var/www/my_other_path/
   }

   # and have them all have same expirations
   location / {
       try_files $uri $uri/ /index.html;
   }
...
}

Off отключает кеширование , эпоха (для эпохи unix) приводит к постоянному обновлению ресурса, max устанавливает дату в максимальное значение браузера.

~ image / соответствует любым типам изображений.

Подробнее о картах nginx на http://nginx.org/en/docs/http/ngx_http_map_module.html .

4
ответ дан 28 November 2019 в 19:21

Теги

Похожие вопросы